| 1 | /* $Id: libmandoc.h,v 1.42 2014/07/09 11:31:43 schwarze Exp $ */ |
| 2 | /* |
| 3 | * Copyright (c) 2009, 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv> |
| 4 | * Copyright (c) 2013, 2014 Ingo Schwarze <schwarze@openbsd.org> |
| 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 | * |
| 10 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
| 11 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
| 12 | * 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 | */ |
| 18 | #ifndef LIBMANDOC_H |
| 19 | #define LIBMANDOC_H |
| 20 | |
| 21 | enum rofferr { |
| 22 | ROFF_CONT, /* continue processing line */ |
| 23 | ROFF_RERUN, /* re-run roff interpreter with offset */ |
| 24 | ROFF_APPEND, /* re-run main parser, appending next line */ |
| 25 | ROFF_REPARSE, /* re-run main parser on the result */ |
| 26 | ROFF_SO, /* include another file */ |
| 27 | ROFF_IGN, /* ignore current line */ |
| 28 | ROFF_TBL, /* a table row was successfully parsed */ |
| 29 | ROFF_EQN, /* an equation was successfully parsed */ |
| 30 | ROFF_ERR /* badness: puke and stop */ |
| 31 | }; |
| 32 | |
| 33 | __BEGIN_DECLS |
| 34 | |
| 35 | struct roff; |
| 36 | struct mdoc; |
| 37 | struct man; |
| 38 | |
| 39 | void mandoc_msg(enum mandocerr, struct mparse *, |
| 40 | int, int, const char *); |
| 41 | #if __GNUC__ - 0 >= 4 |
| 42 | __attribute__((__format__ (__printf__, 5, 6))) |
| 43 | #endif |
| 44 | void mandoc_vmsg(enum mandocerr, struct mparse *, |
| 45 | int, int, const char *, ...); |
| 46 | char *mandoc_getarg(struct mparse *, char **, int, int *); |
| 47 | char *mandoc_normdate(struct mparse *, char *, int, int); |
| 48 | int mandoc_eos(const char *, size_t); |
| 49 | int mandoc_strntoi(const char *, size_t, int); |
| 50 | const char *mandoc_a2msec(const char*); |
| 51 | |
| 52 | void mdoc_free(struct mdoc *); |
| 53 | struct mdoc *mdoc_alloc(struct roff *, struct mparse *, |
| 54 | const char *, int); |
| 55 | void mdoc_reset(struct mdoc *); |
| 56 | int mdoc_parseln(struct mdoc *, int, char *, int); |
| 57 | int mdoc_endparse(struct mdoc *); |
| 58 | int mdoc_addspan(struct mdoc *, const struct tbl_span *); |
| 59 | int mdoc_addeqn(struct mdoc *, const struct eqn *); |
| 60 | |
| 61 | void man_free(struct man *); |
| 62 | struct man *man_alloc(struct roff *, struct mparse *, int); |
| 63 | void man_reset(struct man *); |
| 64 | int man_parseln(struct man *, int, char *, int); |
| 65 | int man_endparse(struct man *); |
| 66 | int man_addspan(struct man *, const struct tbl_span *); |
| 67 | int man_addeqn(struct man *, const struct eqn *); |
| 68 | |
| 69 | void roff_free(struct roff *); |
| 70 | struct roff *roff_alloc(struct mparse *, int); |
| 71 | void roff_reset(struct roff *); |
| 72 | enum rofferr roff_parseln(struct roff *, int, |
| 73 | char **, size_t *, int, int *); |
| 74 | void roff_endparse(struct roff *); |
| 75 | void roff_setreg(struct roff *, const char *, int, char sign); |
| 76 | int roff_getreg(const struct roff *, const char *); |
| 77 | char *roff_strdup(const struct roff *, const char *); |
| 78 | int roff_getcontrol(const struct roff *, |
| 79 | const char *, int *); |
| 80 | #if 0 |
| 81 | char roff_eqndelim(const struct roff *); |
| 82 | void roff_openeqn(struct roff *, const char *, |
| 83 | int, int, const char *); |
| 84 | int roff_closeeqn(struct roff *); |
| 85 | #endif |
| 86 | |
| 87 | const struct tbl_span *roff_span(const struct roff *); |
| 88 | const struct eqn *roff_eqn(const struct roff *); |
| 89 | |
| 90 | __END_DECLS |
| 91 | |
| 92 | #endif /*!LIBMANDOC_H*/ |