![]() ![]() | ![]() |
version 1.22, 2009/10/26 07:11:06 | version 1.32, 2010/05/15 15:54:39 | ||
---|---|---|---|
|
|
||
struct man { | struct man { | ||
void *data; | void *data; | ||
struct man_cb cb; | struct man_cb cb; | ||
int pflags; | int pflags; /* parse flags (see man.h) */ | ||
int flags; | int svflags; /* flags saved during roff blocks */ | ||
#define MAN_HALT (1 << 0) | int flags; /* parse flags */ | ||
#define MAN_ELINE (1 << 1) /* Next-line element scope. */ | #define MAN_HALT (1 << 0) /* badness happened: die */ | ||
#define MAN_BLINE (1 << 2) /* Next-line block scope. */ | #define MAN_ELINE (1 << 1) /* Next-line element scope. */ | ||
#define MAN_LITERAL (1 << 3) /* Literal input. */ | #define MAN_BLINE (1 << 2) /* Next-line block scope. */ | ||
#define MAN_ILINE (1 << 3) /* Ignored in next-line scope. */ | |||
#define MAN_LITERAL (1 << 4) /* Literal input. */ | |||
#define MAN_BPLINE (1 << 5) | |||
enum man_next next; | enum man_next next; | ||
enum man_next svnext; | |||
struct man_node *last; | struct man_node *last; | ||
struct man_node *first; | struct man_node *first; | ||
struct man_meta meta; | struct man_meta meta; | ||
|
|
||
enum merr { | enum merr { | ||
WNPRINT = 0, | WNPRINT = 0, | ||
WNMEM, | |||
WMSEC, | |||
WDATE, | WDATE, | ||
WLNSCOPE, | WLNSCOPE, | ||
WLNSCOPE2, | |||
WTSPACE, | WTSPACE, | ||
WTQUOTE, | WTQUOTE, | ||
WNODATA, | WNODATA, | ||
|
|
||
WNOSCOPE, | WNOSCOPE, | ||
WOLITERAL, | WOLITERAL, | ||
WNLITERAL, | WNLITERAL, | ||
WROFFNEST, | |||
WROFFSCOPE, | |||
WTITLECASE, | |||
WBADCOMMENT, | |||
WERRMAX | WERRMAX | ||
}; | }; | ||
#define MACRO_PROT_ARGS struct man *m, int tok, int line, \ | #define MACRO_PROT_ARGS struct man *m, enum mant tok, int line, \ | ||
int ppos, int *pos, char *buf | int ppos, int *pos, char *buf | ||
struct man_macro { | struct man_macro { | ||
|
|
||
#define MAN_SCOPED (1 << 0) | #define MAN_SCOPED (1 << 0) | ||
#define MAN_EXPLICIT (1 << 1) /* See blk_imp(). */ | #define MAN_EXPLICIT (1 << 1) /* See blk_imp(). */ | ||
#define MAN_FSCOPED (1 << 2) /* See blk_imp(). */ | #define MAN_FSCOPED (1 << 2) /* See blk_imp(). */ | ||
#define MAN_NSCOPED (1 << 3) /* See in_line_eoln(). */ | |||
#define MAN_NOCLOSE (1 << 4) /* See blk_exp(). */ | |||
}; | }; | ||
extern const struct man_macro *const man_macros; | extern const struct man_macro *const man_macros; | ||
|
|
||
man_err((m), (n)->line, (n)->pos, 0, (t)) | man_err((m), (n)->line, (n)->pos, 0, (t)) | ||
int man_word_alloc(struct man *, int, int, const char *); | int man_word_alloc(struct man *, int, int, const char *); | ||
int man_block_alloc(struct man *, int, int, int); | int man_block_alloc(struct man *, int, int, enum mant); | ||
int man_head_alloc(struct man *, int, int, int); | int man_head_alloc(struct man *, int, int, enum mant); | ||
int man_body_alloc(struct man *, int, int, int); | int man_body_alloc(struct man *, int, int, enum mant); | ||
int man_elem_alloc(struct man *, int, int, int); | int man_elem_alloc(struct man *, int, int, enum mant); | ||
void man_node_free(struct man_node *); | void man_node_delete(struct man *, struct man_node *); | ||
void man_node_freelist(struct man_node *); | |||
void man_hash_init(void); | void man_hash_init(void); | ||
int man_hash_find(const char *); | enum mant man_hash_find(const char *); | ||
int man_macroend(struct man *); | int man_macroend(struct man *); | ||
int man_args(struct man *, int, int *, char *, char **); | int man_args(struct man *, int, int *, char *, char **); | ||
#define ARGS_ERROR (-1) | #define ARGS_ERROR (-1) | ||
|
|
||
int man_valid_pre(struct man *, const struct man_node *); | int man_valid_pre(struct man *, const struct man_node *); | ||
int man_action_post(struct man *); | int man_action_post(struct man *); | ||
int man_action_pre(struct man *, struct man_node *); | int man_action_pre(struct man *, struct man_node *); | ||
int man_unscope(struct man *, const struct man_node *); | int man_unscope(struct man *, | ||
const struct man_node *, enum merr); | |||
__END_DECLS | __END_DECLS | ||