version 1.39, 2017/01/10 13:47:00 |
version 1.53, 2017/06/14 13:00:31 |
|
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
*/ |
*/ |
|
|
|
struct ohash; |
struct mdoc_arg; |
struct mdoc_arg; |
union mdoc_data; |
union mdoc_data; |
|
|
Line 25 enum roff_macroset { |
|
Line 26 enum roff_macroset { |
|
MACROSET_MAN |
MACROSET_MAN |
}; |
}; |
|
|
|
enum mdoc_os { |
|
MDOC_OS_OTHER = 0, |
|
MDOC_OS_NETBSD, |
|
MDOC_OS_OPENBSD |
|
}; |
|
|
enum roff_sec { |
enum roff_sec { |
SEC_NONE = 0, |
SEC_NONE = 0, |
SEC_NAME, |
SEC_NAME, |
|
|
ROFFT_EQN |
ROFFT_EQN |
}; |
}; |
|
|
|
enum roff_tok { |
|
ROFF_br = 0, |
|
ROFF_ce, |
|
ROFF_ft, |
|
ROFF_ll, |
|
ROFF_mc, |
|
ROFF_rj, |
|
ROFF_sp, |
|
ROFF_ta, |
|
ROFF_ti, |
|
ROFF_MAX, |
|
ROFF_ab, |
|
ROFF_ad, |
|
ROFF_af, |
|
ROFF_aln, |
|
ROFF_als, |
|
ROFF_am, |
|
ROFF_am1, |
|
ROFF_ami, |
|
ROFF_ami1, |
|
ROFF_as, |
|
ROFF_as1, |
|
ROFF_asciify, |
|
ROFF_backtrace, |
|
ROFF_bd, |
|
ROFF_bleedat, |
|
ROFF_blm, |
|
ROFF_box, |
|
ROFF_boxa, |
|
ROFF_bp, |
|
ROFF_BP, |
|
ROFF_break, |
|
ROFF_breakchar, |
|
ROFF_brnl, |
|
ROFF_brp, |
|
ROFF_brpnl, |
|
ROFF_c2, |
|
ROFF_cc, |
|
ROFF_cf, |
|
ROFF_cflags, |
|
ROFF_ch, |
|
ROFF_char, |
|
ROFF_chop, |
|
ROFF_class, |
|
ROFF_close, |
|
ROFF_CL, |
|
ROFF_color, |
|
ROFF_composite, |
|
ROFF_continue, |
|
ROFF_cp, |
|
ROFF_cropat, |
|
ROFF_cs, |
|
ROFF_cu, |
|
ROFF_da, |
|
ROFF_dch, |
|
ROFF_Dd, |
|
ROFF_de, |
|
ROFF_de1, |
|
ROFF_defcolor, |
|
ROFF_dei, |
|
ROFF_dei1, |
|
ROFF_device, |
|
ROFF_devicem, |
|
ROFF_di, |
|
ROFF_do, |
|
ROFF_ds, |
|
ROFF_ds1, |
|
ROFF_dwh, |
|
ROFF_dt, |
|
ROFF_ec, |
|
ROFF_ecr, |
|
ROFF_ecs, |
|
ROFF_el, |
|
ROFF_em, |
|
ROFF_EN, |
|
ROFF_eo, |
|
ROFF_EP, |
|
ROFF_EQ, |
|
ROFF_errprint, |
|
ROFF_ev, |
|
ROFF_evc, |
|
ROFF_ex, |
|
ROFF_fallback, |
|
ROFF_fam, |
|
ROFF_fc, |
|
ROFF_fchar, |
|
ROFF_fcolor, |
|
ROFF_fdeferlig, |
|
ROFF_feature, |
|
/* MAN_fi; ignored in mdoc(7) */ |
|
ROFF_fkern, |
|
ROFF_fl, |
|
ROFF_flig, |
|
ROFF_fp, |
|
ROFF_fps, |
|
ROFF_fschar, |
|
ROFF_fspacewidth, |
|
ROFF_fspecial, |
|
ROFF_ftr, |
|
ROFF_fzoom, |
|
ROFF_gcolor, |
|
ROFF_hc, |
|
ROFF_hcode, |
|
ROFF_hidechar, |
|
ROFF_hla, |
|
ROFF_hlm, |
|
ROFF_hpf, |
|
ROFF_hpfa, |
|
ROFF_hpfcode, |
|
ROFF_hw, |
|
ROFF_hy, |
|
ROFF_hylang, |
|
ROFF_hylen, |
|
ROFF_hym, |
|
ROFF_hypp, |
|
ROFF_hys, |
|
ROFF_ie, |
|
ROFF_if, |
|
ROFF_ig, |
|
/* MAN_in; ignored in mdoc(7) */ |
|
ROFF_index, |
|
ROFF_it, |
|
ROFF_itc, |
|
ROFF_IX, |
|
ROFF_kern, |
|
ROFF_kernafter, |
|
ROFF_kernbefore, |
|
ROFF_kernpair, |
|
ROFF_lc, |
|
ROFF_lc_ctype, |
|
ROFF_lds, |
|
ROFF_length, |
|
ROFF_letadj, |
|
ROFF_lf, |
|
ROFF_lg, |
|
ROFF_lhang, |
|
ROFF_linetabs, |
|
ROFF_lnr, |
|
ROFF_lnrf, |
|
ROFF_lpfx, |
|
ROFF_ls, |
|
ROFF_lsm, |
|
ROFF_lt, |
|
ROFF_mediasize, |
|
ROFF_minss, |
|
ROFF_mk, |
|
ROFF_mso, |
|
ROFF_na, |
|
ROFF_ne, |
|
/* MAN_nf; ignored in mdoc(7) */ |
|
ROFF_nh, |
|
ROFF_nhychar, |
|
ROFF_nm, |
|
ROFF_nn, |
|
ROFF_nop, |
|
ROFF_nr, |
|
ROFF_nrf, |
|
ROFF_nroff, |
|
ROFF_ns, |
|
ROFF_nx, |
|
ROFF_open, |
|
ROFF_opena, |
|
ROFF_os, |
|
ROFF_output, |
|
ROFF_padj, |
|
ROFF_papersize, |
|
ROFF_pc, |
|
ROFF_pev, |
|
ROFF_pi, |
|
ROFF_PI, |
|
ROFF_pl, |
|
ROFF_pm, |
|
ROFF_pn, |
|
ROFF_pnr, |
|
ROFF_po, |
|
ROFF_ps, |
|
ROFF_psbb, |
|
ROFF_pshape, |
|
ROFF_pso, |
|
ROFF_ptr, |
|
ROFF_pvs, |
|
ROFF_rchar, |
|
ROFF_rd, |
|
ROFF_recursionlimit, |
|
ROFF_return, |
|
ROFF_rfschar, |
|
ROFF_rhang, |
|
ROFF_rm, |
|
ROFF_rn, |
|
ROFF_rnn, |
|
ROFF_rr, |
|
ROFF_rs, |
|
ROFF_rt, |
|
ROFF_schar, |
|
ROFF_sentchar, |
|
ROFF_shc, |
|
ROFF_shift, |
|
ROFF_sizes, |
|
ROFF_so, |
|
ROFF_spacewidth, |
|
ROFF_special, |
|
ROFF_spreadwarn, |
|
ROFF_ss, |
|
ROFF_sty, |
|
ROFF_substring, |
|
ROFF_sv, |
|
ROFF_sy, |
|
ROFF_T_, |
|
ROFF_tc, |
|
ROFF_TE, |
|
ROFF_TH, |
|
ROFF_tkf, |
|
ROFF_tl, |
|
ROFF_tm, |
|
ROFF_tm1, |
|
ROFF_tmc, |
|
ROFF_tr, |
|
ROFF_track, |
|
ROFF_transchar, |
|
ROFF_trf, |
|
ROFF_trimat, |
|
ROFF_trin, |
|
ROFF_trnt, |
|
ROFF_troff, |
|
ROFF_TS, |
|
ROFF_uf, |
|
ROFF_ul, |
|
ROFF_unformat, |
|
ROFF_unwatch, |
|
ROFF_unwatchn, |
|
ROFF_vpt, |
|
ROFF_vs, |
|
ROFF_warn, |
|
ROFF_warnscale, |
|
ROFF_watch, |
|
ROFF_watchlength, |
|
ROFF_watchn, |
|
ROFF_wh, |
|
ROFF_while, |
|
ROFF_write, |
|
ROFF_writec, |
|
ROFF_writem, |
|
ROFF_xflag, |
|
ROFF_cblock, |
|
ROFF_RENAMED, |
|
ROFF_USERDEF, |
|
TOKEN_NONE, |
|
MDOC_Dd, |
|
MDOC_Dt, |
|
MDOC_Os, |
|
MDOC_Sh, |
|
MDOC_Ss, |
|
MDOC_Pp, |
|
MDOC_D1, |
|
MDOC_Dl, |
|
MDOC_Bd, |
|
MDOC_Ed, |
|
MDOC_Bl, |
|
MDOC_El, |
|
MDOC_It, |
|
MDOC_Ad, |
|
MDOC_An, |
|
MDOC_Ap, |
|
MDOC_Ar, |
|
MDOC_Cd, |
|
MDOC_Cm, |
|
MDOC_Dv, |
|
MDOC_Er, |
|
MDOC_Ev, |
|
MDOC_Ex, |
|
MDOC_Fa, |
|
MDOC_Fd, |
|
MDOC_Fl, |
|
MDOC_Fn, |
|
MDOC_Ft, |
|
MDOC_Ic, |
|
MDOC_In, |
|
MDOC_Li, |
|
MDOC_Nd, |
|
MDOC_Nm, |
|
MDOC_Op, |
|
MDOC_Ot, |
|
MDOC_Pa, |
|
MDOC_Rv, |
|
MDOC_St, |
|
MDOC_Va, |
|
MDOC_Vt, |
|
MDOC_Xr, |
|
MDOC__A, |
|
MDOC__B, |
|
MDOC__D, |
|
MDOC__I, |
|
MDOC__J, |
|
MDOC__N, |
|
MDOC__O, |
|
MDOC__P, |
|
MDOC__R, |
|
MDOC__T, |
|
MDOC__V, |
|
MDOC_Ac, |
|
MDOC_Ao, |
|
MDOC_Aq, |
|
MDOC_At, |
|
MDOC_Bc, |
|
MDOC_Bf, |
|
MDOC_Bo, |
|
MDOC_Bq, |
|
MDOC_Bsx, |
|
MDOC_Bx, |
|
MDOC_Db, |
|
MDOC_Dc, |
|
MDOC_Do, |
|
MDOC_Dq, |
|
MDOC_Ec, |
|
MDOC_Ef, |
|
MDOC_Em, |
|
MDOC_Eo, |
|
MDOC_Fx, |
|
MDOC_Ms, |
|
MDOC_No, |
|
MDOC_Ns, |
|
MDOC_Nx, |
|
MDOC_Ox, |
|
MDOC_Pc, |
|
MDOC_Pf, |
|
MDOC_Po, |
|
MDOC_Pq, |
|
MDOC_Qc, |
|
MDOC_Ql, |
|
MDOC_Qo, |
|
MDOC_Qq, |
|
MDOC_Re, |
|
MDOC_Rs, |
|
MDOC_Sc, |
|
MDOC_So, |
|
MDOC_Sq, |
|
MDOC_Sm, |
|
MDOC_Sx, |
|
MDOC_Sy, |
|
MDOC_Tn, |
|
MDOC_Ux, |
|
MDOC_Xc, |
|
MDOC_Xo, |
|
MDOC_Fo, |
|
MDOC_Fc, |
|
MDOC_Oo, |
|
MDOC_Oc, |
|
MDOC_Bk, |
|
MDOC_Ek, |
|
MDOC_Bt, |
|
MDOC_Hf, |
|
MDOC_Fr, |
|
MDOC_Ud, |
|
MDOC_Lb, |
|
MDOC_Lp, |
|
MDOC_Lk, |
|
MDOC_Mt, |
|
MDOC_Brq, |
|
MDOC_Bro, |
|
MDOC_Brc, |
|
MDOC__C, |
|
MDOC_Es, |
|
MDOC_En, |
|
MDOC_Dx, |
|
MDOC__Q, |
|
MDOC__U, |
|
MDOC_Ta, |
|
MDOC_MAX, |
|
MAN_TH, |
|
MAN_SH, |
|
MAN_SS, |
|
MAN_TP, |
|
MAN_LP, |
|
MAN_PP, |
|
MAN_P, |
|
MAN_IP, |
|
MAN_HP, |
|
MAN_SM, |
|
MAN_SB, |
|
MAN_BI, |
|
MAN_IB, |
|
MAN_BR, |
|
MAN_RB, |
|
MAN_R, |
|
MAN_B, |
|
MAN_I, |
|
MAN_IR, |
|
MAN_RI, |
|
MAN_nf, |
|
MAN_fi, |
|
MAN_RE, |
|
MAN_RS, |
|
MAN_DT, |
|
MAN_UC, |
|
MAN_PD, |
|
MAN_AT, |
|
MAN_in, |
|
MAN_OP, |
|
MAN_EX, |
|
MAN_EE, |
|
MAN_UR, |
|
MAN_UE, |
|
MAN_MAX |
|
}; |
|
|
enum roff_next { |
enum roff_next { |
ROFF_NEXT_SIBLING = 0, |
ROFF_NEXT_SIBLING = 0, |
ROFF_NEXT_CHILD |
ROFF_NEXT_CHILD |
|
Line 487 enum roff_next { |
|
*/ |
*/ |
enum mdoc_endbody { |
enum mdoc_endbody { |
ENDBODY_NOT = 0, |
ENDBODY_NOT = 0, |
ENDBODY_SPACE, /* Is broken: append a space. */ |
ENDBODY_SPACE /* Is broken: append a space. */ |
ENDBODY_NOSPACE /* Is broken: don't append a space. */ |
|
}; |
}; |
|
|
struct roff_node { |
struct roff_node { |
Line 95 struct roff_node { |
|
Line 506 struct roff_node { |
|
const struct eqn *eqn; /* EQN */ |
const struct eqn *eqn; /* EQN */ |
int line; /* Input file line number. */ |
int line; /* Input file line number. */ |
int pos; /* Input file column number. */ |
int pos; /* Input file column number. */ |
int tok; /* Request or macro ID. */ |
|
#define TOKEN_NONE (-1) /* No request or macro. */ |
|
int flags; |
int flags; |
#define NODE_VALID (1 << 0) /* Has been validated. */ |
#define NODE_VALID (1 << 0) /* Has been validated. */ |
#define NODE_ENDED (1 << 1) /* Gone past body end mark. */ |
#define NODE_ENDED (1 << 1) /* Gone past body end mark. */ |
Line 110 struct roff_node { |
|
Line 519 struct roff_node { |
|
#define NODE_NOPRT (1 << 9) /* Shall not print anything. */ |
#define NODE_NOPRT (1 << 9) /* Shall not print anything. */ |
int prev_font; /* Before entering this node. */ |
int prev_font; /* Before entering this node. */ |
int aux; /* Decoded node data, type-dependent. */ |
int aux; /* Decoded node data, type-dependent. */ |
|
enum roff_tok tok; /* Request or macro ID. */ |
enum roff_type type; /* AST node type. */ |
enum roff_type type; /* AST node type. */ |
enum roff_sec sec; /* Current named section. */ |
enum roff_sec sec; /* Current named section. */ |
enum mdoc_endbody end; /* BODY */ |
enum mdoc_endbody end; /* BODY */ |
Line 124 struct roff_meta { |
|
Line 534 struct roff_meta { |
|
char *name; /* Leading manual name. */ |
char *name; /* Leading manual name. */ |
char *date; /* Normalized date. */ |
char *date; /* Normalized date. */ |
int hasbody; /* Document is not empty. */ |
int hasbody; /* Document is not empty. */ |
|
enum mdoc_os os_e; /* Operating system. */ |
}; |
}; |
|
|
struct roff_man { |
struct roff_man { |
struct roff_meta meta; /* Document meta-data. */ |
struct roff_meta meta; /* Document meta-data. */ |
struct mparse *parse; /* Parse pointer. */ |
struct mparse *parse; /* Parse pointer. */ |
struct roff *roff; /* Roff parser state data. */ |
struct roff *roff; /* Roff parser state data. */ |
|
struct ohash *mdocmac; /* Mdoc macro lookup table. */ |
|
struct ohash *manmac; /* Man macro lookup table. */ |
const char *defos; /* Default operating system. */ |
const char *defos; /* Default operating system. */ |
struct roff_node *first; /* The first node parsed. */ |
struct roff_node *first; /* The first node parsed. */ |
struct roff_node *last; /* The last node parsed. */ |
struct roff_node *last; /* The last node parsed. */ |
Line 159 struct roff_man { |
|
Line 572 struct roff_man { |
|
enum roff_next next; /* Where to put the next node. */ |
enum roff_next next; /* Where to put the next node. */ |
}; |
}; |
|
|
|
extern const char *const *roff_name; |
|
|
|
|
void deroff(char **, const struct roff_node *); |
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 *); |