![]() ![]() | ![]() |
version 1.56, 2011/02/06 22:02:58 | version 1.84, 2011/07/21 12:30:44 | ||
---|---|---|---|
|
|
||
MANDOCERR_NOTITLE, /* no title in document */ | MANDOCERR_NOTITLE, /* no title in document */ | ||
MANDOCERR_UPPERCASE, /* document title should be all caps */ | MANDOCERR_UPPERCASE, /* document title should be all caps */ | ||
MANDOCERR_BADMSEC, /* unknown manual section */ | MANDOCERR_BADMSEC, /* unknown manual section */ | ||
MANDOCERR_BADDATE, /* cannot parse date argument */ | MANDOCERR_NODATE, /* date missing, using today's date */ | ||
MANDOCERR_BADDATE, /* cannot parse date, using it verbatim */ | |||
MANDOCERR_PROLOGOOO, /* prologue macros out of order */ | MANDOCERR_PROLOGOOO, /* prologue macros out of order */ | ||
MANDOCERR_PROLOGREP, /* duplicate prologue macro */ | MANDOCERR_PROLOGREP, /* duplicate prologue macro */ | ||
MANDOCERR_BADPROLOG, /* macro not allowed in prologue */ | MANDOCERR_BADPROLOG, /* macro not allowed in prologue */ | ||
|
|
||
MANDOCERR_CHILD, /* child violates parent syntax */ | MANDOCERR_CHILD, /* child violates parent syntax */ | ||
MANDOCERR_NESTEDDISP, /* nested displays are not portable */ | MANDOCERR_NESTEDDISP, /* nested displays are not portable */ | ||
MANDOCERR_SCOPEREP, /* already in literal mode */ | MANDOCERR_SCOPEREP, /* already in literal mode */ | ||
MANDOCERR_LINESCOPE, /* line scope broken */ | |||
/* related to missing macro arguments */ | /* related to missing macro arguments */ | ||
MANDOCERR_MACROEMPTY, /* skipping empty macro */ | MANDOCERR_MACROEMPTY, /* skipping empty macro */ | ||
|
|
||
MANDOCERR_BADESCAPE, /* unknown escape sequence */ | MANDOCERR_BADESCAPE, /* unknown escape sequence */ | ||
MANDOCERR_BADQUOTE, /* unterminated quoted string */ | MANDOCERR_BADQUOTE, /* unterminated quoted string */ | ||
/* related to equations */ | |||
MANDOCERR_EQNQUOTE, /* unexpected literal in equation */ | |||
MANDOCERR_ERROR, /* ===== start of errors ===== */ | MANDOCERR_ERROR, /* ===== start of errors ===== */ | ||
/* related to equations */ | |||
MANDOCERR_EQNARGS, /* bad equation macro arguments */ | |||
MANDOCERR_EQNNEST, /* too many nested equation defines */ | |||
MANDOCERR_EQNNSCOPE, /* unexpected equation scope closure*/ | |||
MANDOCERR_EQNSCOPE, /* equation scope open on exit */ | |||
/* related to tables */ | /* related to tables */ | ||
MANDOCERR_TBL, /* bad table syntax */ | MANDOCERR_TBL, /* bad table syntax */ | ||
MANDOCERR_TBLOPT, /* bad table option */ | MANDOCERR_TBLOPT, /* bad table option */ | ||
|
|
||
MANDOCERR_NOTEXT, /* skipping text before the first section header */ | MANDOCERR_NOTEXT, /* skipping text before the first section header */ | ||
MANDOCERR_MACRO, /* skipping unknown macro */ | MANDOCERR_MACRO, /* skipping unknown macro */ | ||
MANDOCERR_REQUEST, /* NOT IMPLEMENTED: skipping request */ | MANDOCERR_REQUEST, /* NOT IMPLEMENTED: skipping request */ | ||
MANDOCERR_LINESCOPE, /* line scope broken */ | |||
MANDOCERR_ARGCOUNT, /* argument count wrong */ | MANDOCERR_ARGCOUNT, /* argument count wrong */ | ||
MANDOCERR_NOSCOPE, /* skipping end of block that is not open */ | MANDOCERR_NOSCOPE, /* skipping end of block that is not open */ | ||
MANDOCERR_SCOPEBROKEN, /* missing end of block */ | MANDOCERR_SCOPEBROKEN, /* missing end of block */ | ||
|
|
||
MANDOCERR_FATAL, /* ===== start of fatal errors ===== */ | MANDOCERR_FATAL, /* ===== start of fatal errors ===== */ | ||
MANDOCERR_NOTMANUAL, /* manual isn't really a manual */ | |||
MANDOCERR_COLUMNS, /* column syntax is inconsistent */ | MANDOCERR_COLUMNS, /* column syntax is inconsistent */ | ||
MANDOCERR_BADDISP, /* NOT IMPLEMENTED: .Bd -file */ | MANDOCERR_BADDISP, /* NOT IMPLEMENTED: .Bd -file */ | ||
MANDOCERR_SYNTLINESCOPE, /* line scope broken, syntax violated */ | MANDOCERR_SYNTLINESCOPE, /* line scope broken, syntax violated */ | ||
|
|
||
struct tbl_span *next; | struct tbl_span *next; | ||
}; | }; | ||
struct eqn { | enum eqn_boxt { | ||
size_t sz; | EQN_ROOT, /* root of parse tree */ | ||
char *data; | EQN_TEXT, /* text (number, variable, whatever) */ | ||
EQN_SUBEXPR /* nested subexpression */ | |||
}; | }; | ||
/* | /* | ||
* Available registers (set in libroff, accessed elsewhere). | * A "box" is a parsed mathematical expression as defined by the eqn.7 | ||
* grammar. | |||
*/ | */ | ||
enum regs { | struct eqn_box { | ||
REG_nS = 0, | enum eqn_boxt type; /* type of node */ | ||
REG__MAX | struct eqn_box *child; /* child node */ | ||
struct eqn_box *next; /* next in tree */ | |||
char *text; /* text (or NULL) */ | |||
}; | }; | ||
/* | struct eqn { | ||
* A register (struct reg) can consist of many types: this consists of | struct eqn_box *root; /* root mathematical expression */ | ||
* normalised types from the original string form. | int ln; /* invocation line */ | ||
*/ | int pos; /* invocation position */ | ||
union regval { | |||
unsigned u; /* unsigned integer */ | |||
}; | }; | ||
/* | /* | ||
* A single register entity. If "set" is zero, the value of the | * The type of parse sequence. This value is usually passed via the | ||
* register should be the default one, which is per-register. It's | * mandoc(1) command line of -man and -mdoc. It's almost exclusively | ||
* assumed that callers know which type in "v" corresponds to which | * -mandoc but the others have been retained for compatibility. | ||
* register value. | |||
*/ | */ | ||
struct reg { | enum mparset { | ||
int set; /* whether set or not */ | MPARSE_AUTO, /* magically determine the document type */ | ||
union regval v; /* parsed data */ | MPARSE_MDOC, /* assume -mdoc */ | ||
MPARSE_MAN /* assume -man */ | |||
}; | }; | ||
/* | enum mandoc_esc { | ||
* The primary interface to setting register values is in libroff, | ESCAPE_ERROR = 0, /* bail! unparsable escape */ | ||
* although libmdoc and libman from time to time will manipulate | ESCAPE_IGNORE, /* escape to be ignored */ | ||
* registers (such as `.Sh SYNOPSIS' enabling REG_nS). | ESCAPE_SPECIAL, /* a regular special character */ | ||
*/ | ESCAPE_FONT, /* a generic font mode */ | ||
struct regset { | ESCAPE_FONTBOLD, /* bold font mode */ | ||
struct reg regs[REG__MAX]; | ESCAPE_FONTITALIC, /* italic font mode */ | ||
ESCAPE_FONTROMAN, /* roman font mode */ | |||
ESCAPE_FONTPREV, /* previous font mode */ | |||
ESCAPE_NUMBERED, /* a numbered glyph */ | |||
ESCAPE_UNICODE, /* a unicode codepoint */ | |||
ESCAPE_NOSPACE /* suppress space if the last on a line */ | |||
}; | }; | ||
typedef void (*mandocmsg)(enum mandocerr, enum mandoclevel, | |||
const char *, int, int, const char *); | |||
struct mparse; | |||
struct mchars; | |||
struct mdoc; | |||
struct man; | |||
__BEGIN_DECLS | __BEGIN_DECLS | ||
/* | void mparse_free(struct mparse *); | ||
* Callback function for warnings, errors, and fatal errors as they | void mparse_reset(struct mparse *); | ||
* occur in the compilers libroff, libmdoc, and libman. | struct mparse *mparse_alloc(enum mparset, | ||
*/ | enum mandoclevel, mandocmsg, void *); | ||
typedef int (*mandocmsg)(enum mandocerr, void *, | enum mandoclevel mparse_readfd(struct mparse *, int, const char *); | ||
int, int, const char *); | void mparse_result(struct mparse *, struct mdoc **, struct man **); | ||
const char *mparse_strerror(enum mandocerr); | |||
const char *mparse_strlevel(enum mandoclevel); | |||
void *mandoc_calloc(size_t, size_t); | |||
void *mandoc_malloc(size_t); | |||
void *mandoc_realloc(void *, size_t); | |||
char *mandoc_strdup(const char *); | |||
enum mandoc_esc mandoc_escape(const char **, const char **, int *); | |||
struct mchars *mchars_alloc(void); | |||
char mchars_num2char(const char *, size_t); | |||
int mchars_num2uc(const char *, size_t); | |||
const char *mchars_spec2str(struct mchars *, const char *, size_t, size_t *); | |||
int mchars_spec2cp(struct mchars *, const char *, size_t); | |||
void mchars_free(struct mchars *); | |||
__END_DECLS | __END_DECLS | ||