version 1.18, 2010/07/18 22:55:06 |
version 1.29, 2010/08/29 11:28:09 |
Line 116 a2roffsu(const char *src, struct roffsu *dst, enum rof |
|
Line 116 a2roffsu(const char *src, struct roffsu *dst, enum rof |
|
return(0); |
return(0); |
} |
} |
|
|
|
/* FIXME: do this in the caller. */ |
if ((dst->scale = atof(buf)) < 0) |
if ((dst->scale = atof(buf)) < 0) |
dst->scale = 0; |
dst->scale = 0; |
dst->unit = unit; |
dst->unit = unit; |
Line 171 a2roffdeco(enum roffdeco *d, const char **word, size_t |
|
Line 172 a2roffdeco(enum roffdeco *d, const char **word, size_t |
|
int i, j, lim; |
int i, j, lim; |
char term, c; |
char term, c; |
const char *wp; |
const char *wp; |
|
enum roffdeco dd; |
|
|
*d = DECO_NONE; |
*d = DECO_NONE; |
lim = i = 0; |
lim = i = 0; |
Line 218 a2roffdeco(enum roffdeco *d, const char **word, size_t |
|
Line 220 a2roffdeco(enum roffdeco *d, const char **word, size_t |
|
break; |
break; |
} |
} |
break; |
break; |
|
case ('k'): |
|
/* FALLTHROUGH */ |
|
case ('M'): |
|
/* FALLTHROUGH */ |
|
case ('m'): |
|
/* FALLTHROUGH */ |
case ('*'): |
case ('*'): |
*d = DECO_RESERVED; |
if ('*' == c) |
|
*d = DECO_RESERVED; |
|
|
switch (wp[i++]) { |
switch (wp[i++]) { |
case ('('): |
case ('('): |
lim = 2; |
lim = 2; |
Line 233 a2roffdeco(enum roffdeco *d, const char **word, size_t |
|
Line 243 a2roffdeco(enum roffdeco *d, const char **word, size_t |
|
break; |
break; |
} |
} |
break; |
break; |
|
case ('h'): |
|
/* FALLTHROUGH */ |
|
case ('v'): |
|
/* FALLTHROUGH */ |
case ('s'): |
case ('s'): |
if ('+' == wp[i] || '-' == wp[i]) |
j = 0; |
|
if ('+' == wp[i] || '-' == wp[i]) { |
i++; |
i++; |
|
j = 1; |
|
} |
|
|
j = ('s' != wp[i - 1]); |
|
|
|
switch (wp[i++]) { |
switch (wp[i++]) { |
case ('('): |
case ('('): |
lim = 2; |
lim = 2; |
Line 249 a2roffdeco(enum roffdeco *d, const char **word, size_t |
|
Line 264 a2roffdeco(enum roffdeco *d, const char **word, size_t |
|
case ('\''): |
case ('\''): |
term = '\''; |
term = '\''; |
break; |
break; |
|
case ('0'): |
|
j = 1; |
|
/* FALLTHROUGH */ |
default: |
default: |
i--; |
i--; |
lim = 1; |
lim = 1; |
Line 256 a2roffdeco(enum roffdeco *d, const char **word, size_t |
|
Line 274 a2roffdeco(enum roffdeco *d, const char **word, size_t |
|
} |
} |
|
|
if ('+' == wp[i] || '-' == wp[i]) { |
if ('+' == wp[i] || '-' == wp[i]) { |
if (j++) |
if (j) |
return(i); |
return(i); |
i++; |
i++; |
} |
} |
|
|
if (0 == j) |
/* Handle embedded numerical subexp or escape. */ |
return(i); |
|
|
if ('(' == wp[i]) { |
|
while (wp[i] && ')' != wp[i]) |
|
if ('\\' == wp[i++]) { |
|
/* Handle embedded escape. */ |
|
*word = &wp[i]; |
|
i += a2roffdeco(&dd, word, sz); |
|
} |
|
|
|
if (')' == wp[i++]) |
|
break; |
|
|
|
*d = DECO_NONE; |
|
return(i - 1); |
|
} else if ('\\' == wp[i]) { |
|
*word = &wp[++i]; |
|
i += a2roffdeco(&dd, word, sz); |
|
} |
|
|
break; |
break; |
case ('['): |
case ('['): |
*d = DECO_SPECIAL; |
*d = DECO_SPECIAL; |
Line 271 a2roffdeco(enum roffdeco *d, const char **word, size_t |
|
Line 307 a2roffdeco(enum roffdeco *d, const char **word, size_t |
|
case ('c'): |
case ('c'): |
*d = DECO_NOSPACE; |
*d = DECO_NOSPACE; |
return(i); |
return(i); |
|
case ('z'): |
|
*d = DECO_NONE; |
|
if ('\\' == wp[i]) { |
|
*word = &wp[++i]; |
|
return(i + a2roffdeco(&dd, word, sz)); |
|
} else |
|
lim = 1; |
|
break; |
|
case ('o'): |
|
/* FALLTHROUGH */ |
|
case ('w'): |
|
if ('\'' == wp[i++]) { |
|
term = '\''; |
|
break; |
|
} |
|
/* FALLTHROUGH */ |
default: |
default: |
*d = DECO_SPECIAL; |
*d = DECO_SSPECIAL; |
i--; |
i--; |
lim = 1; |
lim = 1; |
break; |
break; |