man.h revision 1.1.1.5 1 1.1.1.5 joerg /* $Vendor-Id: man.h,v 1.36 2010/05/26 14:03:54 kristaps Exp $ */
2 1.1 joerg /*
3 1.1 joerg * Copyright (c) 2009 Kristaps Dzonsons <kristaps (at) kth.se>
4 1.1 joerg *
5 1.1 joerg * Permission to use, copy, modify, and distribute this software for any
6 1.1 joerg * purpose with or without fee is hereby granted, provided that the above
7 1.1 joerg * copyright notice and this permission notice appear in all copies.
8 1.1 joerg *
9 1.1 joerg * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 1.1 joerg * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 1.1 joerg * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 1.1 joerg * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 1.1 joerg * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 1.1 joerg * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 1.1 joerg * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 1.1 joerg */
17 1.1 joerg #ifndef MAN_H
18 1.1 joerg #define MAN_H
19 1.1 joerg
20 1.1 joerg #include <time.h>
21 1.1 joerg
22 1.1.1.4 joerg enum mant {
23 1.1.1.4 joerg MAN_br = 0,
24 1.1.1.4 joerg MAN_TH,
25 1.1.1.4 joerg MAN_SH,
26 1.1.1.4 joerg MAN_SS,
27 1.1.1.4 joerg MAN_TP,
28 1.1.1.4 joerg MAN_LP,
29 1.1.1.4 joerg MAN_PP,
30 1.1.1.4 joerg MAN_P,
31 1.1.1.4 joerg MAN_IP,
32 1.1.1.4 joerg MAN_HP,
33 1.1.1.4 joerg MAN_SM,
34 1.1.1.4 joerg MAN_SB,
35 1.1.1.4 joerg MAN_BI,
36 1.1.1.4 joerg MAN_IB,
37 1.1.1.4 joerg MAN_BR,
38 1.1.1.4 joerg MAN_RB,
39 1.1.1.4 joerg MAN_R,
40 1.1.1.4 joerg MAN_B,
41 1.1.1.4 joerg MAN_I,
42 1.1.1.4 joerg MAN_IR,
43 1.1.1.4 joerg MAN_RI,
44 1.1.1.4 joerg MAN_na,
45 1.1.1.4 joerg MAN_i,
46 1.1.1.4 joerg MAN_sp,
47 1.1.1.4 joerg MAN_nf,
48 1.1.1.4 joerg MAN_fi,
49 1.1.1.4 joerg MAN_r,
50 1.1.1.4 joerg MAN_RE,
51 1.1.1.4 joerg MAN_RS,
52 1.1.1.4 joerg MAN_DT,
53 1.1.1.4 joerg MAN_UC,
54 1.1.1.4 joerg MAN_PD,
55 1.1.1.4 joerg MAN_Sp,
56 1.1.1.4 joerg MAN_Vb,
57 1.1.1.4 joerg MAN_Ve,
58 1.1.1.5 joerg MAN_AT,
59 1.1.1.4 joerg MAN_MAX
60 1.1.1.4 joerg };
61 1.1 joerg
62 1.1 joerg enum man_type {
63 1.1 joerg MAN_TEXT,
64 1.1 joerg MAN_ELEM,
65 1.1 joerg MAN_ROOT,
66 1.1 joerg MAN_BLOCK,
67 1.1 joerg MAN_HEAD,
68 1.1 joerg MAN_BODY
69 1.1 joerg };
70 1.1 joerg
71 1.1 joerg struct man_meta {
72 1.1.1.5 joerg char *msec;
73 1.1 joerg time_t date;
74 1.1.1.5 joerg char *rawdate;
75 1.1 joerg char *vol;
76 1.1 joerg char *title;
77 1.1 joerg char *source;
78 1.1 joerg };
79 1.1 joerg
80 1.1 joerg struct man_node {
81 1.1 joerg struct man_node *parent;
82 1.1 joerg struct man_node *child;
83 1.1 joerg struct man_node *next;
84 1.1 joerg struct man_node *prev;
85 1.1 joerg int nchild;
86 1.1 joerg int line;
87 1.1 joerg int pos;
88 1.1.1.4 joerg enum mant tok;
89 1.1 joerg int flags;
90 1.1 joerg #define MAN_VALID (1 << 0)
91 1.1 joerg #define MAN_ACTED (1 << 1)
92 1.1.1.5 joerg #define MAN_EOS (1 << 2)
93 1.1 joerg enum man_type type;
94 1.1 joerg char *string;
95 1.1 joerg struct man_node *head;
96 1.1 joerg struct man_node *body;
97 1.1 joerg };
98 1.1 joerg
99 1.1 joerg #define MAN_IGN_MACRO (1 << 0)
100 1.1 joerg #define MAN_IGN_ESCAPE (1 << 2)
101 1.1 joerg
102 1.1 joerg extern const char *const *man_macronames;
103 1.1 joerg
104 1.1 joerg __BEGIN_DECLS
105 1.1 joerg
106 1.1 joerg struct man;
107 1.1 joerg
108 1.1 joerg void man_free(struct man *);
109 1.1.1.5 joerg struct man *man_alloc(void *, int, mandocmsg);
110 1.1.1.3 joerg void man_reset(struct man *);
111 1.1.1.5 joerg int man_parseln(struct man *, int, char *, int);
112 1.1 joerg int man_endparse(struct man *);
113 1.1 joerg
114 1.1 joerg const struct man_node *man_node(const struct man *);
115 1.1 joerg const struct man_meta *man_meta(const struct man *);
116 1.1 joerg
117 1.1 joerg __END_DECLS
118 1.1 joerg
119 1.1 joerg #endif /*!MAN_H*/
120