Return to mandoc.h CVS log | Up to [cvsweb.bsd.lv] / mandoc |
version 1.49, 2011/01/06 13:45:47 | version 1.62, 2011/03/20 11:41:24 | ||
---|---|---|---|
|
|
||
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 */ | ||
|
|
||
/* related to macros and nesting */ | /* related to macros and nesting */ | ||
MANDOCERR_MACROOBS, /* skipping obsolete macro */ | MANDOCERR_MACROOBS, /* skipping obsolete macro */ | ||
MANDOCERR_IGNPAR, /* skipping paragraph macro */ | MANDOCERR_IGNPAR, /* skipping paragraph macro */ | ||
MANDOCERR_IGNNS, /* skipping no-space macro */ | |||
MANDOCERR_SCOPENEST, /* blocks badly nested */ | MANDOCERR_SCOPENEST, /* blocks badly nested */ | ||
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_LISTFIRST, /* list type must come first */ | MANDOCERR_LISTFIRST, /* list type must come first */ | ||
MANDOCERR_NOWIDTHARG, /* tag lists require a width argument */ | MANDOCERR_NOWIDTHARG, /* tag lists require a width argument */ | ||
MANDOCERR_FONTTYPE, /* missing font type */ | MANDOCERR_FONTTYPE, /* missing font type */ | ||
MANDOCERR_WNOSCOPE, /* skipping end of block that is not open */ | |||
/* related to bad macro arguments */ | /* related to bad macro arguments */ | ||
MANDOCERR_IGNARGV, /* skipping argument */ | MANDOCERR_IGNARGV, /* skipping argument */ | ||
|
|
||
MANDOCERR_BADESCAPE, /* unknown escape sequence */ | MANDOCERR_BADESCAPE, /* unknown escape sequence */ | ||
MANDOCERR_BADQUOTE, /* unterminated quoted string */ | MANDOCERR_BADQUOTE, /* unterminated quoted string */ | ||
/* related to tables */ | |||
MANDOCERR_TBLEXTRADAT, /* extra data cells */ | |||
MANDOCERR_ERROR, /* ===== start of errors ===== */ | MANDOCERR_ERROR, /* ===== start of errors ===== */ | ||
/* related to tables */ | /* related to tables */ | ||
|
|
||
MANDOCERR_TBLNODATA, /* no table data cells specified */ | MANDOCERR_TBLNODATA, /* no table data cells specified */ | ||
MANDOCERR_TBLIGNDATA, /* ignore data in cell */ | MANDOCERR_TBLIGNDATA, /* ignore data in cell */ | ||
MANDOCERR_TBLBLOCK, /* data block still open */ | MANDOCERR_TBLBLOCK, /* data block still open */ | ||
MANDOCERR_TBLEXTRADAT, /* ignoring extra data cells */ | |||
MANDOCERR_ROFFLOOP, /* input stack limit exceeded, infinite loop? */ | MANDOCERR_ROFFLOOP, /* input stack limit exceeded, infinite loop? */ | ||
MANDOCERR_BADCHAR, /* skipping bad character */ | MANDOCERR_BADCHAR, /* skipping bad character */ | ||
MANDOCERR_NAMESC, /* escaped character not allowed in a name */ | |||
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 */ | ||
|
|
||
struct tbl_cell { | struct tbl_cell { | ||
struct tbl_cell *next; | struct tbl_cell *next; | ||
enum tbl_cellt pos; | enum tbl_cellt pos; | ||
int spacing; | size_t spacing; | ||
int flags; | int flags; | ||
#define TBL_CELL_TALIGN (1 << 0) /* t, T */ | #define TBL_CELL_TALIGN (1 << 0) /* t, T */ | ||
#define TBL_CELL_BALIGN (1 << 1) /* d, D */ | #define TBL_CELL_BALIGN (1 << 1) /* d, D */ | ||
|
|
||
}; | }; | ||
enum tbl_datt { | enum tbl_datt { | ||
TBL_DATA_NONE, | TBL_DATA_NONE, /* has no data */ | ||
TBL_DATA_DATA, | TBL_DATA_DATA, /* consists of data/string */ | ||
TBL_DATA_HORIZ, | TBL_DATA_HORIZ, /* horizontal line */ | ||
TBL_DATA_DHORIZ, | TBL_DATA_DHORIZ, /* double-horizontal line */ | ||
TBL_DATA_NHORIZ, | TBL_DATA_NHORIZ, /* squeezed horizontal line */ | ||
TBL_DATA_NDHORIZ | TBL_DATA_NDHORIZ /* squeezed double-horizontal line */ | ||
}; | }; | ||
/* | /* | ||
|
|
||
* string value that's in the cell. The rest is layout. | * string value that's in the cell. The rest is layout. | ||
*/ | */ | ||
struct tbl_dat { | struct tbl_dat { | ||
struct tbl_cell *layout; /* layout cell: CAN BE NULL */ | struct tbl_cell *layout; /* layout cell */ | ||
int spans; /* how many spans follow */ | |||
struct tbl_dat *next; | struct tbl_dat *next; | ||
char *string; | char *string; /* data (NULL if not TBL_DATA_DATA) */ | ||
enum tbl_datt pos; | enum tbl_datt pos; | ||
}; | }; | ||
|
|
||
struct tbl_span { | struct tbl_span { | ||
struct tbl *tbl; | struct tbl *tbl; | ||
struct tbl_head *head; | struct tbl_head *head; | ||
struct tbl_row *layout; /* layout row: CAN BE NULL */ | struct tbl_row *layout; /* layout row */ | ||
struct tbl_dat *first; | struct tbl_dat *first; | ||
struct tbl_dat *last; | struct tbl_dat *last; | ||
int line; /* parse line */ | |||
int flags; | int flags; | ||
#define TBL_SPAN_FIRST (1 << 0) | #define TBL_SPAN_FIRST (1 << 0) | ||
#define TBL_SPAN_LAST (1 << 1) | #define TBL_SPAN_LAST (1 << 1) | ||
|
|
||
struct tbl_span *next; | struct tbl_span *next; | ||
}; | }; | ||
struct eqn { | |||
size_t sz; | |||
char *data; | |||
int line; /* invocation line */ | |||
int pos; /* invocation position */ | |||
}; | |||
/* | /* | ||
* Available registers (set in libroff, accessed elsewhere). | * Available registers (set in libroff, accessed elsewhere). | ||
*/ | */ | ||
|
|
||
struct reg regs[REG__MAX]; | struct reg regs[REG__MAX]; | ||
}; | }; | ||
__BEGIN_DECLS | /* | ||
* A punctuation delimiter, used only in mdoc(7) documents, is opening, | |||
* closing, or "middle mark" punctuation. These govern spacing. | |||
* Opening punctuation (e.g., the opening parenthesis) suppresses the | |||
* following space; closing punctuation (e.g., the closing parenthesis) | |||
* suppresses the leading space; middle punctuation (e.g., the vertical | |||
* bar) can do either. The middle punctuation delimiter bends the rules | |||
* depending on usage. | |||
*/ | |||
enum mdelim { | |||
DELIM_NONE = 0, | |||
DELIM_OPEN, | |||
DELIM_MIDDLE, | |||
DELIM_CLOSE | |||
}; | |||
/* | /* | ||
* Callback function for warnings, errors, and fatal errors as they | * The type of parse sequence. This value is usually passed via the | ||
* occur in the compilers libroff, libmdoc, and libman. | * mandoc(1) command line of -man and -mdoc. It's almost exclusively | ||
* -mandoc but the others have been retained for compatibility. | |||
*/ | */ | ||
typedef int (*mandocmsg)(enum mandocerr, void *, | enum mparset { | ||
int, int, const char *); | MPARSE_AUTO, /* magically determine the document type */ | ||
MPARSE_MDOC, /* assume -mdoc */ | |||
MPARSE_MAN /* assume -man */ | |||
}; | |||
typedef void (*mandocmsg)(enum mandocerr, void *, | |||
int, int, const char *); | |||
typedef int (*mevt_open)(void *, const char *); | |||
typedef void (*mevt_close)(void *, const char *); | |||
struct mparse; | |||
struct mdoc; | |||
struct man; | |||
__BEGIN_DECLS | |||
void mparse_free(struct mparse *); | |||
void mparse_reset(struct mparse *); | |||
struct mparse *mparse_alloc(enum mparset, mevt_open, | |||
mevt_close, mandocmsg, void *); | |||
void mparse_setstatus(struct mparse *, enum mandoclevel); | |||
enum mandoclevel mparse_readfd(struct mparse *, int, const char *); | |||
void mparse_result(struct mparse *, struct mdoc **, struct man **); | |||
void *mandoc_calloc(size_t, size_t); | |||
void *mandoc_malloc(size_t); | |||
void *mandoc_realloc(void *, size_t); | |||
#define DELIMSZ 6 /* hint: max possible size of a delimiter */ | |||
enum mdelim mandoc_isdelim(const char *); | |||
__END_DECLS | __END_DECLS | ||