=================================================================== RCS file: /cvs/mandoc/roff.h,v retrieving revision 1.41 retrieving revision 1.56 diff -u -p -r1.41 -r1.56 --- mandoc/roff.h 2017/04/24 23:06:18 1.41 +++ mandoc/roff.h 2017/06/24 14:38:33 1.56 @@ -1,4 +1,4 @@ -/* $Id: roff.h,v 1.41 2017/04/24 23:06:18 schwarze Exp $ */ +/* $Id: roff.h,v 1.56 2017/06/24 14:38:33 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2013, 2014, 2015, 2017 Ingo Schwarze @@ -16,6 +16,7 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +struct ohash; struct mdoc_arg; union mdoc_data; @@ -65,7 +66,18 @@ enum roff_type { }; enum roff_tok { - ROFF_ab = 0, + ROFF_br = 0, + ROFF_ce, + ROFF_ft, + ROFF_ll, + ROFF_mc, + ROFF_po, + ROFF_rj, + ROFF_sp, + ROFF_ta, + ROFF_ti, + ROFF_MAX, + ROFF_ab, ROFF_ad, ROFF_af, ROFF_aln, @@ -85,7 +97,6 @@ enum roff_tok { ROFF_boxa, ROFF_bp, ROFF_BP, - /* MAN_br, MDOC_br */ ROFF_break, ROFF_breakchar, ROFF_brnl, @@ -93,7 +104,6 @@ enum roff_tok { ROFF_brpnl, ROFF_c2, ROFF_cc, - ROFF_ce, ROFF_cf, ROFF_cflags, ROFF_ch, @@ -154,7 +164,6 @@ enum roff_tok { ROFF_fschar, ROFF_fspacewidth, ROFF_fspecial, - /* MAN_ft; ignored in mdoc(7) */ ROFF_ftr, ROFF_fzoom, ROFF_gcolor, @@ -194,14 +203,12 @@ enum roff_tok { ROFF_lg, ROFF_lhang, ROFF_linetabs, - /* MAN_ll, MDOC_ll */ ROFF_lnr, ROFF_lnrf, ROFF_lpfx, ROFF_ls, ROFF_lsm, ROFF_lt, - ROFF_mc, ROFF_mediasize, ROFF_minss, ROFF_mk, @@ -233,7 +240,6 @@ enum roff_tok { ROFF_pm, ROFF_pn, ROFF_pnr, - ROFF_po, ROFF_ps, ROFF_psbb, ROFF_pshape, @@ -246,7 +252,6 @@ enum roff_tok { ROFF_return, ROFF_rfschar, ROFF_rhang, - ROFF_rj, ROFF_rm, ROFF_rn, ROFF_rnn, @@ -259,7 +264,6 @@ enum roff_tok { ROFF_shift, ROFF_sizes, ROFF_so, - /* MAN_sp, MDOC_sp */ ROFF_spacewidth, ROFF_special, ROFF_spreadwarn, @@ -269,11 +273,9 @@ enum roff_tok { ROFF_sv, ROFF_sy, ROFF_T_, - ROFF_ta, ROFF_tc, ROFF_TE, ROFF_TH, - ROFF_ti, ROFF_tkf, ROFF_tl, ROFF_tm, @@ -307,6 +309,7 @@ enum roff_tok { ROFF_writem, ROFF_xflag, ROFF_cblock, + ROFF_RENAMED, ROFF_USERDEF, TOKEN_NONE, MDOC_Dd, @@ -427,11 +430,8 @@ enum roff_tok { MDOC_En, MDOC_Dx, MDOC__Q, - MDOC_br, - MDOC_sp, MDOC__U, MDOC_Ta, - MDOC_ll, MDOC_MAX, MAN_TH, MAN_SH, @@ -453,8 +453,6 @@ enum roff_tok { MAN_I, MAN_IR, MAN_RI, - MAN_br, - MAN_sp, MAN_nf, MAN_fi, MAN_RE, @@ -464,13 +462,11 @@ enum roff_tok { MAN_PD, MAN_AT, MAN_in, - MAN_ft, MAN_OP, MAN_EX, MAN_EE, MAN_UR, MAN_UE, - MAN_ll, MAN_MAX }; @@ -532,13 +528,17 @@ struct roff_meta { char *name; /* Leading manual name. */ char *date; /* Normalized date. */ int hasbody; /* Document is not empty. */ + int rcsids; /* Bits indexed by enum mandoc_os. */ + enum mandoc_os os_e; /* Operating system. */ }; struct roff_man { struct roff_meta meta; /* Document meta-data. */ struct mparse *parse; /* Parse pointer. */ struct roff *roff; /* Roff parser state data. */ - const char *defos; /* Default operating system. */ + struct ohash *mdocmac; /* Mdoc macro lookup table. */ + struct ohash *manmac; /* Man macro lookup table. */ + const char *os_s; /* Default operating system. */ struct roff_node *first; /* The first node parsed. */ struct roff_node *last; /* The last node parsed. */ struct roff_node *last_es; /* The most recent Es node. */ @@ -569,4 +569,9 @@ struct roff_man { extern const char *const *roff_name; + void deroff(char **, const struct roff_node *); +struct ohash *roffhash_alloc(enum roff_tok, enum roff_tok); +enum roff_tok roffhash_find(struct ohash *, const char *, size_t); +void roffhash_free(struct ohash *); +void roff_validate(struct roff_man *);