usb4bsd/ukbd: Adjust comment style a bit.
[dragonfly.git] / contrib / mdocml / eqn.c
1 /*      $Id: eqn.c,v 1.4 2011/03/22 09:48:13 kristaps Exp $ */
2 /*
3  * Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
4  *
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.
8  *
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.
16  */
17 #ifdef HAVE_CONFIG_H
18 #include "config.h"
19 #endif
20
21 #include <assert.h>
22 #include <stdio.h>
23 #include <stdlib.h>
24 #include <string.h>
25 #include <time.h>
26
27 #include "mandoc.h"
28 #include "libmandoc.h"
29 #include "libroff.h"
30
31 /* ARGSUSED */
32 enum rofferr
33 eqn_read(struct eqn_node **epp, int ln, const char *p, int offs)
34 {
35         size_t           sz;
36         struct eqn_node *ep;
37
38         if (0 == strcmp(p, ".EN")) {
39                 *epp = NULL;
40                 return(ROFF_EQN);
41         }
42
43         ep = *epp;
44
45         sz = strlen(&p[offs]);
46         ep->eqn.data = mandoc_realloc(ep->eqn.data, ep->eqn.sz + sz + 1);
47         if (0 == ep->eqn.sz)
48                 *ep->eqn.data = '\0';
49
50         ep->eqn.sz += sz;
51         strlcat(ep->eqn.data, &p[offs], ep->eqn.sz + 1);
52         return(ROFF_IGN);
53 }
54
55 struct eqn_node *
56 eqn_alloc(int pos, int line)
57 {
58         struct eqn_node *p;
59
60         p = mandoc_calloc(1, sizeof(struct eqn_node));
61         p->eqn.line = line;
62         p->eqn.pos = pos;
63
64         return(p);
65 }
66
67 /* ARGSUSED */
68 void
69 eqn_end(struct eqn_node *e)
70 {
71
72         /* Nothing to do. */
73 }
74
75 void
76 eqn_free(struct eqn_node *p)
77 {
78
79         free(p->eqn.data);
80         free(p);
81 }