version 1.20, 2009/06/16 19:13:28 |
version 1.25, 2009/06/22 13:09:17 |
|
|
#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 432 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; |
|
case (WNODATA): |
|
p = "document has no data"; |
|
break; |
|
case (WNOTITLE): |
|
p = "document has no title/section"; |
|
break; |
|
} |
|
assert(p); |
|
|
|
if (iserr) |
|
return(man_verr(m, line, pos, p)); |
|
|
|
return(man_vwarn(m, line, pos, p)); |
|
} |