![]() ![]() | ![]() |
version 1.6, 2009/03/26 14:38:11 | version 1.28, 2010/05/09 21:19:42 | ||
---|---|---|---|
|
|
||
/* $Id$ */ | /* $Id$ */ | ||
/* | /* | ||
* Copyright (c) 2009 Kristaps Dzonsons <kristaps@openbsd.org> | * Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se> | ||
* | * | ||
* Permission to use, copy, modify, and distribute this software for any | * Permission to use, copy, modify, and distribute this software for any | ||
* purpose with or without fee is hereby granted, provided that the | * purpose with or without fee is hereby granted, provided that the above | ||
* above copyright notice and this permission notice appear in all | * copyright notice and this permission notice appear in all copies. | ||
* copies. | |||
* | * | ||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
* PERFORMANCE OF THIS SOFTWARE. | |||
*/ | */ | ||
#ifndef MAN_H | #ifndef MAN_H | ||
#define MAN_H | #define MAN_H | ||
#include <time.h> | #include <time.h> | ||
#define MAN___ 0 | enum mant { | ||
#define MAN_TH 1 | MAN_br = 0, | ||
#define MAN_SH 2 | MAN_TH, | ||
#define MAN_SS 3 | MAN_SH, | ||
#define MAN_TP 4 | MAN_SS, | ||
#define MAN_LP 5 | MAN_TP, | ||
#define MAN_PP 6 | MAN_LP, | ||
#define MAN_P 7 | MAN_PP, | ||
#define MAN_IP 8 | MAN_P, | ||
#define MAN_HP 9 | MAN_IP, | ||
#define MAN_SM 10 | MAN_HP, | ||
#define MAN_SB 11 | MAN_SM, | ||
#define MAN_BI 12 | MAN_SB, | ||
#define MAN_IB 13 | MAN_BI, | ||
#define MAN_BR 14 | MAN_IB, | ||
#define MAN_RB 15 | MAN_BR, | ||
#define MAN_R 16 | MAN_RB, | ||
#define MAN_B 17 | MAN_R, | ||
#define MAN_I 18 | MAN_B, | ||
#define MAN_IR 19 | MAN_I, | ||
#define MAN_RI 20 | MAN_IR, | ||
#define MAN_MAX 21 | MAN_RI, | ||
MAN_na, | |||
MAN_i, | |||
MAN_sp, | |||
MAN_nf, | |||
MAN_fi, | |||
MAN_r, | |||
MAN_RE, | |||
MAN_RS, | |||
MAN_DT, | |||
MAN_UC, | |||
MAN_PD, | |||
MAN_Sp, | |||
MAN_Vb, | |||
MAN_Ve, | |||
MAN_de, | |||
MAN_dei, | |||
MAN_am, | |||
MAN_ami, | |||
MAN_ig, | |||
MAN_dot, | |||
MAN_MAX | |||
}; | |||
enum man_type { | enum man_type { | ||
MAN_TEXT, | MAN_TEXT, | ||
MAN_ELEM, | MAN_ELEM, | ||
MAN_ROOT | MAN_ROOT, | ||
MAN_BLOCK, | |||
MAN_HEAD, | |||
MAN_BODY | |||
}; | }; | ||
struct man_meta { | struct man_meta { | ||
|
|
||
struct man_node *child; | struct man_node *child; | ||
struct man_node *next; | struct man_node *next; | ||
struct man_node *prev; | struct man_node *prev; | ||
int nchild; | |||
int line; | int line; | ||
int pos; | int pos; | ||
int tok; | enum mant tok; | ||
int flags; | int flags; | ||
#define MAN_VALID (1 << 0) | #define MAN_VALID (1 << 0) | ||
#define MAN_ACTED (1 << 1) | #define MAN_ACTED (1 << 1) | ||
enum man_type type; | enum man_type type; | ||
char *string; | char *string; | ||
struct man_node *head; | |||
struct man_node *body; | |||
}; | }; | ||
#define MAN_IGN_MACRO (1 << 0) /* Ignore unknown macros. */ | #define MAN_IGN_MACRO (1 << 0) | ||
#define MAN_IGN_ESCAPE (1 << 2) | |||
extern const char *const *man_macronames; | extern const char *const *man_macronames; | ||
|
|
||
void man_reset(struct man *); | void man_reset(struct man *); | ||
int man_parseln(struct man *, int, char *buf); | int man_parseln(struct man *, int, char *buf); | ||
int man_endparse(struct man *); | int man_endparse(struct man *); | ||
int man_valid_post(struct man *); | |||
const struct man_node *man_node(const struct man *); | const struct man_node *man_node(const struct man *); | ||
const struct man_meta *man_meta(const struct man *); | const struct man_meta *man_meta(const struct man *); |