1/* $Id: libmandoc.h,v 1.62 2015/11/07 14:01:16 schwarze Exp $ */
| 1/* $Id: libmandoc.h,v 1.29 2011/12/02 01:37:14 schwarze Exp $ */
|
2/*
| 2/*
|
3 * Copyright (c) 2009, 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv> 4 * Copyright (c) 2013, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org>
| 3 * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons
|
5 * 6 * Permission to use, copy, modify, and distribute this software for any 7 * purpose with or without fee is hereby granted, provided that the above 8 * copyright notice and this permission notice appear in all copies. 9 *
| 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 *
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES
| 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
| 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
| 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 */
| 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#ifndef LIBMANDOC_H 18#define LIBMANDOC_H
|
18 19enum rofferr { 20 ROFF_CONT, /* continue processing line */ 21 ROFF_RERUN, /* re-run roff interpreter with offset */ 22 ROFF_APPEND, /* re-run main parser, appending next line */ 23 ROFF_REPARSE, /* re-run main parser on the result */ 24 ROFF_SO, /* include another file */ 25 ROFF_IGN, /* ignore current line */ 26 ROFF_TBL, /* a table row was successfully parsed */
| 19 20enum rofferr { 21 ROFF_CONT, /* continue processing line */ 22 ROFF_RERUN, /* re-run roff interpreter with offset */ 23 ROFF_APPEND, /* re-run main parser, appending next line */ 24 ROFF_REPARSE, /* re-run main parser on the result */ 25 ROFF_SO, /* include another file */ 26 ROFF_IGN, /* ignore current line */ 27 ROFF_TBL, /* a table row was successfully parsed */
|
27 ROFF_EQN /* an equation was successfully parsed */
| 28 ROFF_EQN, /* an equation was successfully parsed */ 29 ROFF_ERR /* badness: puke and stop */
|
28}; 29
| 30}; 31
|
30struct buf { 31 char *buf; 32 size_t sz;
| 32enum regs { 33 REG_nS = 0, /* nS register */ 34 REG__MAX
|
33}; 34
| 35}; 36
|
| 37__BEGIN_DECLS
|
35
| 38
|
36struct mparse; 37struct tbl_span; 38struct eqn;
| |
39struct roff;
| 39struct roff;
|
40struct roff_man; 41struct roff_node;
| 40struct mdoc; 41struct man;
|
42
| 42
|
43void mandoc_msg(enum mandocerr, struct mparse *,
| 43void mandoc_msg(enum mandocerr, struct mparse *,
|
44 int, int, const char *);
| 44 int, int, const char *);
|
45#if __GNUC__ - 0 >= 4 46__attribute__((__format__ (__printf__, 5, 6))) 47#endif 48void mandoc_vmsg(enum mandocerr, struct mparse *,
| 45void mandoc_vmsg(enum mandocerr, struct mparse *,
|
49 int, int, const char *, ...); 50char *mandoc_getarg(struct mparse *, char **, int, int *); 51char *mandoc_normdate(struct mparse *, char *, int, int);
| 46 int, int, const char *, ...); 47char *mandoc_getarg(struct mparse *, char **, int, int *); 48char *mandoc_normdate(struct mparse *, char *, int, int);
|
52int mandoc_eos(const char *, size_t);
| 49int mandoc_eos(const char *, size_t, int); 50int mandoc_getcontrol(const char *, int *);
|
53int mandoc_strntoi(const char *, size_t, int); 54const char *mandoc_a2msec(const char*); 55
| 51int mandoc_strntoi(const char *, size_t, int); 52const char *mandoc_a2msec(const char*); 53
|
56void mdoc_hash_init(void); 57int mdoc_parseln(struct roff_man *, int, char *, int); 58void mdoc_endparse(struct roff_man *);
| 54void mdoc_free(struct mdoc *); 55struct mdoc *mdoc_alloc(struct roff *, struct mparse *); 56void mdoc_reset(struct mdoc *); 57int mdoc_parseln(struct mdoc *, int, char *, int); 58int mdoc_endparse(struct mdoc *); 59int mdoc_addspan(struct mdoc *, const struct tbl_span *); 60int mdoc_addeqn(struct mdoc *, const struct eqn *);
|
59
| 61
|
60void man_hash_init(void); 61int man_parseln(struct roff_man *, int, char *, int); 62void man_endparse(struct roff_man *);
| 62void man_free(struct man *); 63struct man *man_alloc(struct roff *, struct mparse *); 64void man_reset(struct man *); 65int man_parseln(struct man *, int, char *, int); 66int man_endparse(struct man *); 67int man_addspan(struct man *, const struct tbl_span *); 68int man_addeqn(struct man *, const struct eqn *);
|
63
| 69
|
64int preconv_cue(const struct buf *, size_t); 65int preconv_encode(struct buf *, size_t *, 66 struct buf *, size_t *, int *); 67 68void roff_free(struct roff *); 69struct roff *roff_alloc(struct mparse *, int);
| 70void roff_free(struct roff *); 71struct roff *roff_alloc(struct mparse *);
|
70void roff_reset(struct roff *);
| 72void roff_reset(struct roff *);
|
71void roff_man_free(struct roff_man *); 72struct roff_man *roff_man_alloc(struct roff *, struct mparse *, 73 const char *, int); 74void roff_man_reset(struct roff_man *); 75enum rofferr roff_parseln(struct roff *, int, struct buf *, int *);
| 73enum rofferr roff_parseln(struct roff *, int, 74 char **, size_t *, int, int *);
|
76void roff_endparse(struct roff *);
| 75void roff_endparse(struct roff *);
|
77void roff_setreg(struct roff *, const char *, int, char sign); 78int roff_getreg(const struct roff *, const char *);
| 76int roff_regisset(const struct roff *, enum regs); 77unsigned int roff_regget(const struct roff *, enum regs); 78void roff_regunset(struct roff *, enum regs);
|
79char *roff_strdup(const struct roff *, const char *);
| 79char *roff_strdup(const struct roff *, const char *);
|
80int roff_getcontrol(const struct roff *, 81 const char *, int *); 82int roff_getformat(const struct roff *);
| 80#if 0 81char roff_eqndelim(const struct roff *); 82void roff_openeqn(struct roff *, const char *, 83 int, int, const char *); 84int roff_closeeqn(struct roff *); 85#endif
|
83 84const struct tbl_span *roff_span(const struct roff *); 85const struct eqn *roff_eqn(const struct roff *);
| 86 87const struct tbl_span *roff_span(const struct roff *); 88const struct eqn *roff_eqn(const struct roff *);
|
| 89 90__END_DECLS 91 92#endif /*!LIBMANDOC_H*/
|
| |