Return to mandoc.h CVS log | Up to [cvsweb.bsd.lv] / mandoc |
version 1.94, 2011/07/23 18:41:18 | version 1.107, 2013/05/31 21:37:17 | ||
---|---|---|---|
|
|
||
/* $Id$ */ | /* $Id$ */ | ||
/* | /* | ||
* Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> | * Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> | ||
* Copyright (c) 2012 Ingo Schwarze <schwarze@openbsd.org> | |||
* | * | ||
* Permission to use, copy, modify, and distribute this software for any | * Permission to use, copy, modify, and distribute this software for any | ||
* purpose with or without fee is hereby granted, provided that the above | * purpose with or without fee is hereby granted, provided that the above | ||
|
|
||
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_BADVOLARCH, /* unknown manual volume or arch */ | |||
MANDOCERR_NODATE, /* date missing, using today's date */ | MANDOCERR_NODATE, /* date missing, using today's date */ | ||
MANDOCERR_BADDATE, /* cannot parse date, using it verbatim */ | MANDOCERR_BADDATE, /* cannot parse date, using it verbatim */ | ||
MANDOCERR_PROLOGOOO, /* prologue macros out of order */ | MANDOCERR_PROLOGOOO, /* prologue macros out of order */ | ||
|
|
||
MANDOCERR_SO, /* .so is fragile, better use ln(1) */ | MANDOCERR_SO, /* .so is fragile, better use ln(1) */ | ||
MANDOCERR_NAMESECFIRST, /* NAME section must come first */ | MANDOCERR_NAMESECFIRST, /* NAME section must come first */ | ||
MANDOCERR_BADNAMESEC, /* bad NAME section contents */ | MANDOCERR_BADNAMESEC, /* bad NAME section contents */ | ||
MANDOCERR_NONAME, /* manual name not yet set */ | |||
MANDOCERR_SECOOO, /* sections out of conventional order */ | MANDOCERR_SECOOO, /* sections out of conventional order */ | ||
MANDOCERR_SECREP, /* duplicate section name */ | MANDOCERR_SECREP, /* duplicate section name */ | ||
MANDOCERR_SECMSEC, /* section not in conventional manual section */ | MANDOCERR_SECMSEC, /* section not in conventional manual section */ | ||
|
|
||
/* 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_MOVEPAR, /* moving paragraph macro out of list */ | |||
MANDOCERR_IGNNS, /* skipping no-space 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_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_NAMESC, /* escaped character not allowed in a name */ | ||
MANDOCERR_NONAME, /* manual name not yet set */ | |||
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_ARGCOUNT, /* argument count wrong */ | MANDOCERR_ARGCOUNT, /* argument count wrong */ | ||
MANDOCERR_STRAYTA, /* skipping column outside column list */ | |||
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_SCOPEEXIT, /* scope open on exit */ | MANDOCERR_SCOPEEXIT, /* scope open on exit */ | ||
|
|
||
MANDOCERR_NOTMANUAL, /* manual isn't really a manual */ | 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_SYNTARGVCOUNT, /* argument count wrong, violates syntax */ | MANDOCERR_SYNTARGVCOUNT, /* argument count wrong, violates syntax */ | ||
MANDOCERR_SYNTCHILD, /* child violates parent syntax */ | MANDOCERR_SYNTCHILD, /* child violates parent syntax */ | ||
MANDOCERR_SYNTARGCOUNT, /* argument count wrong, violates syntax */ | MANDOCERR_SYNTARGCOUNT, /* argument count wrong, violates syntax */ | ||
|
|
||
MANDOCERR_MAX | MANDOCERR_MAX | ||
}; | }; | ||
struct tbl { | struct tbl_opts { | ||
char tab; /* cell-separator */ | char tab; /* cell-separator */ | ||
char decimal; /* decimal point */ | char decimal; /* decimal point */ | ||
int linesize; | int linesize; | ||
|
|
||
int cols; /* number of columns */ | int cols; /* number of columns */ | ||
}; | }; | ||
enum tbl_headt { | |||
TBL_HEAD_DATA, /* plug in data from tbl_dat */ | |||
TBL_HEAD_VERT, /* vertical spacer */ | |||
TBL_HEAD_DVERT /* double-vertical spacer */ | |||
}; | |||
/* | /* | ||
* The head of a table specifies all of its columns. When formatting a | * The head of a table specifies all of its columns. When formatting a | ||
* tbl_span, iterate over these and plug in data from the tbl_span when | * tbl_span, iterate over these and plug in data from the tbl_span when | ||
* appropriate, using tbl_cell as a guide to placement. | * appropriate, using tbl_cell as a guide to placement. | ||
*/ | */ | ||
struct tbl_head { | struct tbl_head { | ||
enum tbl_headt pos; | |||
int ident; /* 0 <= unique id < cols */ | int ident; /* 0 <= unique id < cols */ | ||
int vert; /* width of preceding vertical line */ | |||
struct tbl_head *next; | struct tbl_head *next; | ||
struct tbl_head *prev; | struct tbl_head *prev; | ||
}; | }; | ||
|
|
||
TBL_CELL_DOWN, /* ^ */ | TBL_CELL_DOWN, /* ^ */ | ||
TBL_CELL_HORIZ, /* _, - */ | TBL_CELL_HORIZ, /* _, - */ | ||
TBL_CELL_DHORIZ, /* = */ | TBL_CELL_DHORIZ, /* = */ | ||
TBL_CELL_VERT, /* | */ | |||
TBL_CELL_DVERT, /* || */ | |||
TBL_CELL_MAX | TBL_CELL_MAX | ||
}; | }; | ||
|
|
||
*/ | */ | ||
struct tbl_cell { | struct tbl_cell { | ||
struct tbl_cell *next; | struct tbl_cell *next; | ||
int vert; /* width of preceding vertical line */ | |||
enum tbl_cellt pos; | enum tbl_cellt pos; | ||
size_t spacing; | size_t spacing; | ||
int flags; | int flags; | ||
|
|
||
* A row of data in a table. | * A row of data in a table. | ||
*/ | */ | ||
struct tbl_span { | struct tbl_span { | ||
struct tbl *tbl; | struct tbl_opts *opts; | ||
struct tbl_head *head; | struct tbl_head *head; | ||
struct tbl_row *layout; /* layout row */ | struct tbl_row *layout; /* layout row */ | ||
struct tbl_dat *first; | struct tbl_dat *first; | ||
|
|
||
enum eqn_pilet { | enum eqn_pilet { | ||
EQNPILE_NONE = 0, | EQNPILE_NONE = 0, | ||
EQNPILE_PILE, | |||
EQNPILE_CPILE, | EQNPILE_CPILE, | ||
EQNPILE_RPILE, | EQNPILE_RPILE, | ||
EQNPILE_LPILE, | EQNPILE_LPILE, | ||
EQNPILE_COL, | |||
EQNPILE_CCOL, | EQNPILE_CCOL, | ||
EQNPILE_RCOL, | EQNPILE_RCOL, | ||
EQNPILE_LCOL, | EQNPILE_LCOL, | ||
|
|
||
ESCAPE_FONTPREV, /* previous font mode */ | ESCAPE_FONTPREV, /* previous font mode */ | ||
ESCAPE_NUMBERED, /* a numbered glyph */ | ESCAPE_NUMBERED, /* a numbered glyph */ | ||
ESCAPE_UNICODE, /* a unicode codepoint */ | ESCAPE_UNICODE, /* a unicode codepoint */ | ||
ESCAPE_NOSPACE /* suppress space if the last on a line */ | ESCAPE_NOSPACE, /* suppress space if the last on a line */ | ||
ESCAPE_SKIPCHAR /* skip the next character */ | |||
}; | }; | ||
typedef void (*mandocmsg)(enum mandocerr, enum mandoclevel, | typedef void (*mandocmsg)(enum mandocerr, enum mandoclevel, | ||
|
|
||
__BEGIN_DECLS | __BEGIN_DECLS | ||
void mparse_free(struct mparse *); | |||
void mparse_reset(struct mparse *); | |||
struct mparse *mparse_alloc(enum mparset, | |||
enum mandoclevel, mandocmsg, void *); | |||
enum mandoclevel mparse_readfd(struct mparse *, 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_calloc(size_t, size_t); | ||
enum mandoc_esc mandoc_escape(const char **, const char **, int *); | |||
void *mandoc_malloc(size_t); | void *mandoc_malloc(size_t); | ||
void *mandoc_realloc(void *, size_t); | void *mandoc_realloc(void *, size_t); | ||
char *mandoc_strdup(const char *); | char *mandoc_strdup(const char *); | ||
char *mandoc_strndup(const char *, size_t); | char *mandoc_strndup(const char *, size_t); | ||
enum mandoc_esc mandoc_escape(const char **, const char **, int *); | |||
struct mchars *mchars_alloc(void); | struct mchars *mchars_alloc(void); | ||
void mchars_free(struct mchars *); | |||
char mchars_num2char(const char *, size_t); | char mchars_num2char(const char *, size_t); | ||
int mchars_num2uc(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(const struct mchars *, | ||
int mchars_spec2cp(struct mchars *, const char *, size_t); | const char *, size_t); | ||
void mchars_free(struct mchars *); | const char *mchars_spec2str(const struct mchars *, | ||
const char *, size_t, size_t *); | |||
struct mparse *mparse_alloc(enum mparset, enum mandoclevel, | |||
mandocmsg, void *, char *); | |||
void mparse_free(struct mparse *); | |||
void mparse_keep(struct mparse *); | |||
enum mandoclevel mparse_readfd(struct mparse *, int, const char *); | |||
enum mandoclevel mparse_readmem(struct mparse *, const void *, size_t, | |||
const char *); | |||
void mparse_reset(struct mparse *); | |||
void mparse_result(struct mparse *, | |||
struct mdoc **, struct man **); | |||
const char *mparse_getkeep(const struct mparse *); | |||
const char *mparse_strerror(enum mandocerr); | |||
const char *mparse_strlevel(enum mandoclevel); | |||
__END_DECLS | __END_DECLS | ||