version 1.188, 2011/05/14 18:15:20 |
version 1.189, 2011/05/15 14:50:01 |
Line 606 term_strlen(const struct termp *p, const char *cp) |
|
Line 606 term_strlen(const struct termp *p, const char *cp) |
|
{ |
{ |
size_t sz, rsz, i; |
size_t sz, rsz, i; |
int ssz; |
int ssz; |
enum mandoc_esc esc; |
|
const char *seq, *rhs; |
const char *seq, *rhs; |
|
static const char rej[] = { '\\', ASCII_HYPH, ASCII_NBRSP, '\0' }; |
|
|
/* |
/* |
* Account for escaped sequences within string length |
* Account for escaped sequences within string length |
Line 616 term_strlen(const struct termp *p, const char *cp) |
|
Line 616 term_strlen(const struct termp *p, const char *cp) |
|
*/ |
*/ |
|
|
sz = 0; |
sz = 0; |
while ('\0' != *cp) |
while ('\0' != *cp) { |
|
rsz = strcspn(cp, rej); |
|
for (i = 0; i < rsz; i++) |
|
sz += (*p->width)(p, *cp++); |
|
|
switch (*cp) { |
switch (*cp) { |
case ('\\'): |
case ('\\'): |
++cp; |
cp++; |
esc = mandoc_escape(&cp, &seq, &ssz); |
switch (mandoc_escape(&cp, &seq, &ssz)) { |
if (ESCAPE_ERROR == esc) |
case (ESCAPE_ERROR): |
return(sz); |
return(sz); |
|
|
switch (esc) { |
|
case (ESCAPE_PREDEF): |
case (ESCAPE_PREDEF): |
rhs = mchars_res2str |
rhs = mchars_res2str |
(p->symtab, seq, ssz, &rsz); |
(p->symtab, seq, ssz, &rsz); |
Line 659 term_strlen(const struct termp *p, const char *cp) |
|
Line 661 term_strlen(const struct termp *p, const char *cp) |
|
cp++; |
cp++; |
break; |
break; |
default: |
default: |
sz += (*p->width)(p, *cp++); |
|
break; |
break; |
} |
} |
|
} |
|
|
return(sz); |
return(sz); |
} |
} |
|
|
|
|
/* ARGSUSED */ |
/* ARGSUSED */ |
size_t |
size_t |
term_vspan(const struct termp *p, const struct roffsu *su) |
term_vspan(const struct termp *p, const struct roffsu *su) |
Line 702 term_vspan(const struct termp *p, const struct roffsu |
|
Line 703 term_vspan(const struct termp *p, const struct roffsu |
|
return(/* LINTED */(size_t) |
return(/* LINTED */(size_t) |
r); |
r); |
} |
} |
|
|
|
|
size_t |
size_t |
term_hspan(const struct termp *p, const struct roffsu *su) |
term_hspan(const struct termp *p, const struct roffsu *su) |