version 1.19, 2009/06/10 20:18:43 |
version 1.24, 2009/06/18 20:46:19 |
|
|
#include "libman.h" |
#include "libman.h" |
|
|
const char *const __man_macronames[MAN_MAX] = { |
const char *const __man_macronames[MAN_MAX] = { |
"\\\"", "TH", "SH", "SS", |
"br", "TH", "SH", "SS", |
"TP", "LP", "PP", "P", |
"TP", "LP", "PP", "P", |
"IP", "HP", "SM", "SB", |
"IP", "HP", "SM", "SB", |
"BI", "IB", "BR", "RB", |
"BI", "IB", "BR", "RB", |
"R", "B", "I", "IR", |
"R", "B", "I", "IR", |
"RI", "br", "na", "i" |
"RI", "na", "i" |
}; |
}; |
|
|
const char * const *man_macronames = __man_macronames; |
const char * const *man_macronames = __man_macronames; |
Line 182 man_node_append(struct man *man, struct man_node *p) |
|
Line 182 man_node_append(struct man *man, struct man_node *p) |
|
abort(); |
abort(); |
/* NOTREACHED */ |
/* NOTREACHED */ |
} |
} |
|
|
|
p->parent->nchild++; |
|
|
man->last = p; |
man->last = p; |
|
|
Line 250 man_node_free(struct man_node *p) |
|
Line 252 man_node_free(struct man_node *p) |
|
|
|
if (p->string) |
if (p->string) |
free(p->string); |
free(p->string); |
|
if (p->parent) |
|
p->parent->nchild--; |
free(p); |
free(p); |
} |
} |
|
|
Line 263 man_node_freelist(struct man_node *p) |
|
Line 267 man_node_freelist(struct man_node *p) |
|
if (p->next) |
if (p->next) |
man_node_freelist(p->next); |
man_node_freelist(p->next); |
|
|
|
assert(0 == p->nchild); |
man_node_free(p); |
man_node_free(p); |
} |
} |
|
|
Line 324 man_pmacro(struct man *m, int ln, char *buf) |
|
Line 329 man_pmacro(struct man *m, int ln, char *buf) |
|
|
|
ppos = i; |
ppos = i; |
|
|
if (buf[i] && '\\' == buf[i]) |
|
if (buf[i + 1] && '\"' == buf[i + 1]) |
|
goto out; |
|
|
|
/* Copy the first word into a nil-terminated buffer. */ |
/* Copy the first word into a nil-terminated buffer. */ |
|
|
for (j = 0; j < 4; j++, i++) { |
for (j = 0; j < 4; j++, i++) { |
Line 436 man_vwarn(struct man *man, int ln, int pos, const char |
|
Line 437 man_vwarn(struct man *man, int ln, int pos, const char |
|
} |
} |
|
|
|
|
|
int |
|
man_err(struct man *m, int line, int pos, |
|
int iserr, enum merr type) |
|
{ |
|
const char *p; |
|
|
|
p = NULL; |
|
switch (type) { |
|
case (WNPRINT): |
|
p = "invalid character"; |
|
break; |
|
case (WNMEM): |
|
p = "memory exhausted"; |
|
break; |
|
case (WMSEC): |
|
p = "invalid manual section"; |
|
break; |
|
case (WDATE): |
|
p = "invalid date format"; |
|
break; |
|
case (WLNSCOPE): |
|
p = "scope of prior line violated"; |
|
break; |
|
case (WTSPACE): |
|
p = "trailing whitespace at end of line"; |
|
break; |
|
case (WTQUOTE): |
|
p = "unterminated quotation"; |
|
break; |
|
} |
|
assert(p); |
|
|
|
if (iserr) |
|
return(man_verr(m, line, pos, p)); |
|
|
|
return(man_vwarn(m, line, pos, p)); |
|
} |