version 1.23, 2010/07/18 17:00:26 |
version 1.35, 2010/09/04 20:18:53 |
Line 48 mandoc_special(char *p) |
|
Line 48 mandoc_special(char *p) |
|
p++; |
p++; |
|
|
switch (*p++) { |
switch (*p++) { |
|
#if 0 |
|
case ('Z'): |
|
/* FALLTHROUGH */ |
|
case ('X'): |
|
/* FALLTHROUGH */ |
|
case ('x'): |
|
/* FALLTHROUGH */ |
|
case ('S'): |
|
/* FALLTHROUGH */ |
|
case ('R'): |
|
/* FALLTHROUGH */ |
|
case ('N'): |
|
/* FALLTHROUGH */ |
|
case ('l'): |
|
/* FALLTHROUGH */ |
|
case ('L'): |
|
/* FALLTHROUGH */ |
|
case ('H'): |
|
/* FALLTHROUGH */ |
|
case ('h'): |
|
/* FALLTHROUGH */ |
|
case ('D'): |
|
/* FALLTHROUGH */ |
|
case ('C'): |
|
/* FALLTHROUGH */ |
|
case ('b'): |
|
/* FALLTHROUGH */ |
|
case ('B'): |
|
/* FALLTHROUGH */ |
|
case ('a'): |
|
/* FALLTHROUGH */ |
|
case ('A'): |
|
if (*p++ != '\'') |
|
return(0); |
|
term = '\''; |
|
break; |
|
#endif |
|
case ('h'): |
|
/* FALLTHROUGH */ |
|
case ('v'): |
|
/* FALLTHROUGH */ |
case ('s'): |
case ('s'): |
if (ASCII_HYPH == *p) |
if (ASCII_HYPH == *p) |
*p = '-'; |
*p = '-'; |
if ('+' == *p || '-' == *p) |
|
|
i = 0; |
|
if ('+' == *p || '-' == *p) { |
p++; |
p++; |
|
i = 1; |
|
} |
|
|
i = ('s' != *(p - 1)); |
|
|
|
switch (*p++) { |
switch (*p++) { |
case ('('): |
case ('('): |
len = 2; |
len = 2; |
Line 66 mandoc_special(char *p) |
|
Line 109 mandoc_special(char *p) |
|
case ('\''): |
case ('\''): |
term = '\''; |
term = '\''; |
break; |
break; |
|
case ('0'): |
|
i = 1; |
|
/* FALLTHROUGH */ |
default: |
default: |
len = 1; |
len = 1; |
p--; |
p--; |
Line 75 mandoc_special(char *p) |
|
Line 121 mandoc_special(char *p) |
|
if (ASCII_HYPH == *p) |
if (ASCII_HYPH == *p) |
*p = '-'; |
*p = '-'; |
if ('+' == *p || '-' == *p) { |
if ('+' == *p || '-' == *p) { |
if (i++) |
if (i) |
return(0); |
return(0); |
p++; |
p++; |
} |
} |
|
|
if (0 == i) |
/* Handle embedded numerical subexp or escape. */ |
|
|
|
if ('(' == *p) { |
|
while (*p && ')' != *p) |
|
if ('\\' == *p++) { |
|
i = mandoc_special(--p); |
|
if (0 == i) |
|
return(0); |
|
p += i; |
|
} |
|
|
|
if (')' == *p++) |
|
break; |
|
|
return(0); |
return(0); |
|
} else if ('\\' == *p) { |
|
if (0 == (i = mandoc_special(p))) |
|
return(0); |
|
p += i; |
|
} |
|
|
break; |
break; |
|
#if 0 |
|
case ('Y'): |
|
/* FALLTHROUGH */ |
|
case ('V'): |
|
/* FALLTHROUGH */ |
|
case ('$'): |
|
/* FALLTHROUGH */ |
|
case ('n'): |
|
/* FALLTHROUGH */ |
|
#endif |
|
case ('k'): |
|
/* FALLTHROUGH */ |
|
case ('M'): |
|
/* FALLTHROUGH */ |
|
case ('m'): |
|
/* FALLTHROUGH */ |
case ('f'): |
case ('f'): |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case ('F'): |
case ('F'): |
Line 107 mandoc_special(char *p) |
|
Line 188 mandoc_special(char *p) |
|
case ('['): |
case ('['): |
term = ']'; |
term = ']'; |
break; |
break; |
|
case ('z'): |
|
len = 1; |
|
if ('\\' == *p) { |
|
if (0 == (i = mandoc_special(p))) |
|
return(0); |
|
p += i; |
|
return(*p ? (int)(p - sv) : 0); |
|
} |
|
break; |
|
case ('o'): |
|
/* FALLTHROUGH */ |
|
case ('w'): |
|
if ('\'' == *p++) { |
|
term = '\''; |
|
break; |
|
} |
|
/* FALLTHROUGH */ |
default: |
default: |
len = 1; |
len = 1; |
p--; |
p--; |
Line 117 mandoc_special(char *p) |
|
Line 215 mandoc_special(char *p) |
|
for ( ; *p && term != *p; p++) |
for ( ; *p && term != *p; p++) |
if (ASCII_HYPH == *p) |
if (ASCII_HYPH == *p) |
*p = '-'; |
*p = '-'; |
return(*p ? p - sv : 0); |
return(*p ? (int)(p - sv) : 0); |
} |
} |
|
|
for (i = 0; *p && i < len; i++, p++) |
for (i = 0; *p && i < len; i++, p++) |
if (ASCII_HYPH == *p) |
if (ASCII_HYPH == *p) |
*p = '-'; |
*p = '-'; |
return(i == len ? p - sv : 0); |
return(i == len ? (int)(p - sv) : 0); |
} |
} |
|
|
|
|
Line 135 mandoc_calloc(size_t num, size_t size) |
|
Line 233 mandoc_calloc(size_t num, size_t size) |
|
ptr = calloc(num, size); |
ptr = calloc(num, size); |
if (NULL == ptr) { |
if (NULL == ptr) { |
perror(NULL); |
perror(NULL); |
exit(EXIT_FAILURE); |
exit((int)MANDOCLEVEL_SYSERR); |
} |
} |
|
|
return(ptr); |
return(ptr); |
Line 150 mandoc_malloc(size_t size) |
|
Line 248 mandoc_malloc(size_t size) |
|
ptr = malloc(size); |
ptr = malloc(size); |
if (NULL == ptr) { |
if (NULL == ptr) { |
perror(NULL); |
perror(NULL); |
exit(EXIT_FAILURE); |
exit((int)MANDOCLEVEL_SYSERR); |
} |
} |
|
|
return(ptr); |
return(ptr); |
Line 164 mandoc_realloc(void *ptr, size_t size) |
|
Line 262 mandoc_realloc(void *ptr, size_t size) |
|
ptr = realloc(ptr, size); |
ptr = realloc(ptr, size); |
if (NULL == ptr) { |
if (NULL == ptr) { |
perror(NULL); |
perror(NULL); |
exit(EXIT_FAILURE); |
exit((int)MANDOCLEVEL_SYSERR); |
} |
} |
|
|
return(ptr); |
return(ptr); |
Line 179 mandoc_strdup(const char *ptr) |
|
Line 277 mandoc_strdup(const char *ptr) |
|
p = strdup(ptr); |
p = strdup(ptr); |
if (NULL == p) { |
if (NULL == p) { |
perror(NULL); |
perror(NULL); |
exit(EXIT_FAILURE); |
exit((int)MANDOCLEVEL_SYSERR); |
} |
} |
|
|
return(p); |
return(p); |
Line 255 mandoc_eos(const char *p, size_t sz, int enclosed) |
|
Line 353 mandoc_eos(const char *p, size_t sz, int enclosed) |
|
*/ |
*/ |
|
|
found = 0; |
found = 0; |
for (q = p + sz - 1; q >= p; q--) { |
for (q = p + (int)sz - 1; q >= p; q--) { |
switch (*q) { |
switch (*q) { |
case ('\"'): |
case ('\"'): |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
Line 275 mandoc_eos(const char *p, size_t sz, int enclosed) |
|
Line 373 mandoc_eos(const char *p, size_t sz, int enclosed) |
|
found = 1; |
found = 1; |
break; |
break; |
default: |
default: |
return(found && (!enclosed || isalnum(*q))); |
return(found && (!enclosed || isalnum((unsigned char)*q))); |
} |
} |
} |
} |
|
|