version 1.103, 2009/08/20 11:44:47 |
version 1.111, 2009/10/26 07:11:07 |
|
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
*/ |
*/ |
|
#include <sys/types.h> |
|
|
#include <assert.h> |
#include <assert.h> |
#include <ctype.h> |
#include <ctype.h> |
#include <stdarg.h> |
#include <stdarg.h> |
Line 74 const char *const __mdoc_merrnames[MERRMAX] = { |
|
Line 76 const char *const __mdoc_merrnames[MERRMAX] = { |
|
"unclosed explicit scope", /* EOPEN */ |
"unclosed explicit scope", /* EOPEN */ |
"unterminated quoted phrase", /* EQUOTPHR */ |
"unterminated quoted phrase", /* EQUOTPHR */ |
"closure macro without prior context", /* ENOCTX */ |
"closure macro without prior context", /* ENOCTX */ |
"no description found for library" /* ELIB */ |
"no description found for library", /* ELIB */ |
|
"bad child for parent context", /* EBADCHILD */ |
|
"list arguments preceding type", /* ENOTYPE */ |
}; |
}; |
|
|
const char *const __mdoc_macronames[MDOC_MAX] = { |
const char *const __mdoc_macronames[MDOC_MAX] = { |
Line 112 const char *const __mdoc_macronames[MDOC_MAX] = { |
|
Line 116 const char *const __mdoc_macronames[MDOC_MAX] = { |
|
/* LINTED */ |
/* LINTED */ |
"Brc", "\%C", "Es", "En", |
"Brc", "\%C", "Es", "En", |
/* LINTED */ |
/* LINTED */ |
"Dx", "\%Q", "br", "sp" |
"Dx", "\%Q", "br", "sp", |
|
/* LINTED */ |
|
"\%U" |
}; |
}; |
|
|
const char *const __mdoc_argnames[MDOC_ARG_MAX] = { |
const char *const __mdoc_argnames[MDOC_ARG_MAX] = { |
Line 124 const char *const __mdoc_argnames[MDOC_ARG_MAX] = { |
|
Line 130 const char *const __mdoc_argnames[MDOC_ARG_MAX] = { |
|
"ohang", "inset", "column", |
"ohang", "inset", "column", |
"width", "compact", "std", |
"width", "compact", "std", |
"filled", "words", "emphasis", |
"filled", "words", "emphasis", |
"symbolic", "nested" |
"symbolic", "nested", "centered" |
}; |
}; |
|
|
const char * const *mdoc_macronames = __mdoc_macronames; |
const char * const *mdoc_macronames = __mdoc_macronames; |
Line 230 mdoc_free(struct mdoc *mdoc) |
|
Line 236 mdoc_free(struct mdoc *mdoc) |
|
{ |
{ |
|
|
mdoc_free1(mdoc); |
mdoc_free1(mdoc); |
if (mdoc->htab) |
|
mdoc_hash_free(mdoc->htab); |
|
free(mdoc); |
free(mdoc); |
} |
} |
|
|
Line 249 mdoc_alloc(void *data, int pflags, const struct mdoc_c |
|
Line 253 mdoc_alloc(void *data, int pflags, const struct mdoc_c |
|
if (cb) |
if (cb) |
(void)memcpy(&p->cb, cb, sizeof(struct mdoc_cb)); |
(void)memcpy(&p->cb, cb, sizeof(struct mdoc_cb)); |
|
|
|
mdoc_hash_init(); |
|
|
p->data = data; |
p->data = data; |
p->pflags = pflags; |
p->pflags = pflags; |
|
|
if (NULL == (p->htab = mdoc_hash_alloc())) { |
if (mdoc_alloc1(p)) |
free(p); |
|
return(NULL); |
|
} else if (mdoc_alloc1(p)) |
|
return(p); |
return(p); |
|
|
free(p); |
free(p); |
Line 662 parsetext(struct mdoc *m, int line, char *buf) |
|
Line 665 parsetext(struct mdoc *m, int line, char *buf) |
|
|
|
|
|
|
|
|
|
static int |
static int |
macrowarn(struct mdoc *m, int ln, const char *buf) |
macrowarn(struct mdoc *m, int ln, const char *buf) |
{ |
{ |
Line 709 parsemacro(struct mdoc *m, int ln, char *buf) |
|
Line 711 parsemacro(struct mdoc *m, int ln, char *buf) |
|
break; |
break; |
else if (' ' == buf[i]) |
else if (' ' == buf[i]) |
break; |
break; |
|
|
|
/* Check for invalid characters. */ |
|
|
|
if (isgraph((u_char)buf[i])) |
|
continue; |
|
return(mdoc_perr(m, ln, i, EPRINT)); |
} |
} |
|
|
mac[j] = 0; |
mac[j] = 0; |
Line 719 parsemacro(struct mdoc *m, int ln, char *buf) |
|
Line 727 parsemacro(struct mdoc *m, int ln, char *buf) |
|
return(1); |
return(1); |
} |
} |
|
|
if (MDOC_MAX == (c = mdoc_hash_find(m->htab, mac))) { |
if (MDOC_MAX == (c = mdoc_hash_find(mac))) { |
if ( ! macrowarn(m, ln, mac)) |
if ( ! macrowarn(m, ln, mac)) |
goto err; |
goto err; |
return(1); |
return(1); |