version 1.22, 2010/07/22 14:03:50 |
version 1.28, 2010/08/24 13:56:51 |
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'): |
case ('M'): |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case ('m'): |
case ('m'): |
Line 239 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 256 a2roffdeco(enum roffdeco *d, const char **word, size_t |
|
Line 265 a2roffdeco(enum roffdeco *d, const char **word, size_t |
|
term = '\''; |
term = '\''; |
break; |
break; |
case ('0'): |
case ('0'): |
j++; |
j = 1; |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
default: |
default: |
i--; |
i--; |
Line 265 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 280 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 ('w'): |
|
if ('\'' == wp[i++]) { |
|
term = '\''; |
|
break; |
|
} |
|
/* FALLTHROUGH */ |
default: |
default: |
*d = DECO_SSPECIAL; |
*d = DECO_SSPECIAL; |
i--; |
i--; |