]>
git.cameronkatri.com Git - mandoc.git/blob - mdoc_action.c
4d0e9e9f20e1ee9994d21f55229b1ad1be9aaca2
1 /* $Id: mdoc_action.c,v 1.88 2010/11/30 12:59:20 kristaps Exp $ */
3 * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22 #include <sys/utsname.h>
33 #include "libmandoc.h"
36 * FIXME: this file is deprecated. All future "actions" should be
37 * pushed into mdoc_validate.c.
40 #define POST_ARGS struct mdoc *m, struct mdoc_node *n
41 #define PRE_ARGS struct mdoc *m, struct mdoc_node *n
45 int (*post
)(POST_ARGS
);
48 static const struct actions mdoc_actions
[MDOC_MAX
] = {
49 { NULL
, NULL
}, /* Ap */
50 { NULL
, NULL
}, /* Dd */
51 { NULL
, NULL
}, /* Dt */
52 { NULL
, NULL
}, /* Os */
53 { NULL
, NULL
}, /* Sh */
54 { NULL
, NULL
}, /* Ss */
55 { NULL
, NULL
}, /* Pp */
56 { NULL
, NULL
}, /* D1 */
57 { NULL
, NULL
}, /* Dl */
58 { NULL
, NULL
}, /* Bd */
59 { NULL
, NULL
}, /* Ed */
60 { NULL
, NULL
}, /* Bl */
61 { NULL
, NULL
}, /* El */
62 { NULL
, NULL
}, /* It */
63 { NULL
, NULL
}, /* Ad */
64 { NULL
, NULL
}, /* An */
65 { NULL
, NULL
}, /* Ar */
66 { NULL
, NULL
}, /* Cd */
67 { NULL
, NULL
}, /* Cm */
68 { NULL
, NULL
}, /* Dv */
69 { NULL
, NULL
}, /* Er */
70 { NULL
, NULL
}, /* Ev */
71 { NULL
, NULL
}, /* Ex */
72 { NULL
, NULL
}, /* Fa */
73 { NULL
, NULL
}, /* Fd */
74 { NULL
, NULL
}, /* Fl */
75 { NULL
, NULL
}, /* Fn */
76 { NULL
, NULL
}, /* Ft */
77 { NULL
, NULL
}, /* Ic */
78 { NULL
, NULL
}, /* In */
79 { NULL
, NULL
}, /* Li */
80 { NULL
, NULL
}, /* Nd */
81 { NULL
, NULL
}, /* Nm */
82 { NULL
, NULL
}, /* Op */
83 { NULL
, NULL
}, /* Ot */
84 { NULL
, NULL
}, /* Pa */
85 { NULL
, NULL
}, /* Rv */
86 { NULL
, NULL
}, /* St */
87 { NULL
, NULL
}, /* Va */
88 { NULL
, NULL
}, /* Vt */
89 { NULL
, NULL
}, /* Xr */
90 { NULL
, NULL
}, /* %A */
91 { NULL
, NULL
}, /* %B */
92 { NULL
, NULL
}, /* %D */
93 { NULL
, NULL
}, /* %I */
94 { NULL
, NULL
}, /* %J */
95 { NULL
, NULL
}, /* %N */
96 { NULL
, NULL
}, /* %O */
97 { NULL
, NULL
}, /* %P */
98 { NULL
, NULL
}, /* %R */
99 { NULL
, NULL
}, /* %T */
100 { NULL
, NULL
}, /* %V */
101 { NULL
, NULL
}, /* Ac */
102 { NULL
, NULL
}, /* Ao */
103 { NULL
, NULL
}, /* Aq */
104 { NULL
, NULL
}, /* At */
105 { NULL
, NULL
}, /* Bc */
106 { NULL
, NULL
}, /* Bf */
107 { NULL
, NULL
}, /* Bo */
108 { NULL
, NULL
}, /* Bq */
109 { NULL
, NULL
}, /* Bsx */
110 { NULL
, NULL
}, /* Bx */
111 { NULL
, NULL
}, /* Db */
112 { NULL
, NULL
}, /* Dc */
113 { NULL
, NULL
}, /* Do */
114 { NULL
, NULL
}, /* Dq */
115 { NULL
, NULL
}, /* Ec */
116 { NULL
, NULL
}, /* Ef */
117 { NULL
, NULL
}, /* Em */
118 { NULL
, NULL
}, /* Eo */
119 { NULL
, NULL
}, /* Fx */
120 { NULL
, NULL
}, /* Ms */
121 { NULL
, NULL
}, /* No */
122 { NULL
, NULL
}, /* Ns */
123 { NULL
, NULL
}, /* Nx */
124 { NULL
, NULL
}, /* Ox */
125 { NULL
, NULL
}, /* Pc */
126 { NULL
, NULL
}, /* Pf */
127 { NULL
, NULL
}, /* Po */
128 { NULL
, NULL
}, /* Pq */
129 { NULL
, NULL
}, /* Qc */
130 { NULL
, NULL
}, /* Ql */
131 { NULL
, NULL
}, /* Qo */
132 { NULL
, NULL
}, /* Qq */
133 { NULL
, NULL
}, /* Re */
134 { NULL
, NULL
}, /* Rs */
135 { NULL
, NULL
}, /* Sc */
136 { NULL
, NULL
}, /* So */
137 { NULL
, NULL
}, /* Sq */
138 { NULL
, NULL
}, /* Sm */
139 { NULL
, NULL
}, /* Sx */
140 { NULL
, NULL
}, /* Sy */
141 { NULL
, NULL
}, /* Tn */
142 { NULL
, NULL
}, /* Ux */
143 { NULL
, NULL
}, /* Xc */
144 { NULL
, NULL
}, /* Xo */
145 { NULL
, NULL
}, /* Fo */
146 { NULL
, NULL
}, /* Fc */
147 { NULL
, NULL
}, /* Oo */
148 { NULL
, NULL
}, /* Oc */
149 { NULL
, NULL
}, /* Bk */
150 { NULL
, NULL
}, /* Ek */
151 { NULL
, NULL
}, /* Bt */
152 { NULL
, NULL
}, /* Hf */
153 { NULL
, NULL
}, /* Fr */
154 { NULL
, NULL
}, /* Ud */
155 { NULL
, NULL
}, /* Lb */
156 { NULL
, NULL
}, /* Lp */
157 { NULL
, NULL
}, /* Lk */
158 { NULL
, NULL
}, /* Mt */
159 { NULL
, NULL
}, /* Brq */
160 { NULL
, NULL
}, /* Bro */
161 { NULL
, NULL
}, /* Brc */
162 { NULL
, NULL
}, /* %C */
163 { NULL
, NULL
}, /* Es */
164 { NULL
, NULL
}, /* En */
165 { NULL
, NULL
}, /* Dx */
166 { NULL
, NULL
}, /* %Q */
167 { NULL
, NULL
}, /* br */
168 { NULL
, NULL
}, /* sp */
169 { NULL
, NULL
}, /* %U */
170 { NULL
, NULL
}, /* Ta */
175 mdoc_action_pre(struct mdoc
*m
, struct mdoc_node
*n
)
187 if (NULL
== mdoc_actions
[n
->tok
].pre
)
189 return((*mdoc_actions
[n
->tok
].pre
)(m
, n
));
194 mdoc_action_post(struct mdoc
*m
)
197 if (MDOC_ACTED
& m
->last
->flags
)
199 m
->last
->flags
|= MDOC_ACTED
;
201 switch (m
->last
->type
) {
210 if (NULL
== mdoc_actions
[m
->last
->tok
].post
)
212 return((*mdoc_actions
[m
->last
->tok
].post
)(m
, m
->last
));