Home | History | Annotate | Line # | Download | only in dist
man.h revision 1.1.1.5
      1  1.1.1.5  joerg /*	$Vendor-Id: man.h,v 1.36 2010/05/26 14:03:54 kristaps Exp $ */
      2      1.1  joerg /*
      3      1.1  joerg  * Copyright (c) 2009 Kristaps Dzonsons <kristaps (at) kth.se>
      4      1.1  joerg  *
      5      1.1  joerg  * Permission to use, copy, modify, and distribute this software for any
      6      1.1  joerg  * purpose with or without fee is hereby granted, provided that the above
      7      1.1  joerg  * copyright notice and this permission notice appear in all copies.
      8      1.1  joerg  *
      9      1.1  joerg  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     10      1.1  joerg  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     11      1.1  joerg  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     12      1.1  joerg  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     13      1.1  joerg  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     14      1.1  joerg  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     15      1.1  joerg  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     16      1.1  joerg  */
     17      1.1  joerg #ifndef MAN_H
     18      1.1  joerg #define MAN_H
     19      1.1  joerg 
     20      1.1  joerg #include <time.h>
     21      1.1  joerg 
     22  1.1.1.4  joerg enum	mant {
     23  1.1.1.4  joerg 	MAN_br = 0,
     24  1.1.1.4  joerg 	MAN_TH,
     25  1.1.1.4  joerg 	MAN_SH,
     26  1.1.1.4  joerg 	MAN_SS,
     27  1.1.1.4  joerg 	MAN_TP,
     28  1.1.1.4  joerg 	MAN_LP,
     29  1.1.1.4  joerg 	MAN_PP,
     30  1.1.1.4  joerg 	MAN_P,
     31  1.1.1.4  joerg 	MAN_IP,
     32  1.1.1.4  joerg 	MAN_HP,
     33  1.1.1.4  joerg 	MAN_SM,
     34  1.1.1.4  joerg 	MAN_SB,
     35  1.1.1.4  joerg 	MAN_BI,
     36  1.1.1.4  joerg 	MAN_IB,
     37  1.1.1.4  joerg 	MAN_BR,
     38  1.1.1.4  joerg 	MAN_RB,
     39  1.1.1.4  joerg 	MAN_R,
     40  1.1.1.4  joerg 	MAN_B,
     41  1.1.1.4  joerg 	MAN_I,
     42  1.1.1.4  joerg 	MAN_IR,
     43  1.1.1.4  joerg 	MAN_RI,
     44  1.1.1.4  joerg 	MAN_na,
     45  1.1.1.4  joerg 	MAN_i,
     46  1.1.1.4  joerg 	MAN_sp,
     47  1.1.1.4  joerg 	MAN_nf,
     48  1.1.1.4  joerg 	MAN_fi,
     49  1.1.1.4  joerg 	MAN_r,
     50  1.1.1.4  joerg 	MAN_RE,
     51  1.1.1.4  joerg 	MAN_RS,
     52  1.1.1.4  joerg 	MAN_DT,
     53  1.1.1.4  joerg 	MAN_UC,
     54  1.1.1.4  joerg 	MAN_PD,
     55  1.1.1.4  joerg 	MAN_Sp,
     56  1.1.1.4  joerg 	MAN_Vb,
     57  1.1.1.4  joerg 	MAN_Ve,
     58  1.1.1.5  joerg 	MAN_AT,
     59  1.1.1.4  joerg 	MAN_MAX
     60  1.1.1.4  joerg };
     61      1.1  joerg 
     62      1.1  joerg enum	man_type {
     63      1.1  joerg 	MAN_TEXT,
     64      1.1  joerg 	MAN_ELEM,
     65      1.1  joerg 	MAN_ROOT,
     66      1.1  joerg 	MAN_BLOCK,
     67      1.1  joerg 	MAN_HEAD,
     68      1.1  joerg 	MAN_BODY
     69      1.1  joerg };
     70      1.1  joerg 
     71      1.1  joerg struct	man_meta {
     72  1.1.1.5  joerg 	char		*msec;
     73      1.1  joerg 	time_t		 date;
     74  1.1.1.5  joerg 	char		*rawdate;
     75      1.1  joerg 	char		*vol;
     76      1.1  joerg 	char		*title;
     77      1.1  joerg 	char		*source;
     78      1.1  joerg };
     79      1.1  joerg 
     80      1.1  joerg struct	man_node {
     81      1.1  joerg 	struct man_node	*parent;
     82      1.1  joerg 	struct man_node	*child;
     83      1.1  joerg 	struct man_node	*next;
     84      1.1  joerg 	struct man_node	*prev;
     85      1.1  joerg 	int		 nchild;
     86      1.1  joerg 	int		 line;
     87      1.1  joerg 	int		 pos;
     88  1.1.1.4  joerg 	enum mant	 tok;
     89      1.1  joerg 	int		 flags;
     90      1.1  joerg #define	MAN_VALID	(1 << 0)
     91      1.1  joerg #define	MAN_ACTED	(1 << 1)
     92  1.1.1.5  joerg #define	MAN_EOS		(1 << 2)
     93      1.1  joerg 	enum man_type	 type;
     94      1.1  joerg 	char		*string;
     95      1.1  joerg 	struct man_node	*head;
     96      1.1  joerg 	struct man_node	*body;
     97      1.1  joerg };
     98      1.1  joerg 
     99      1.1  joerg #define	MAN_IGN_MACRO	 (1 << 0)
    100      1.1  joerg #define	MAN_IGN_ESCAPE	 (1 << 2)
    101      1.1  joerg 
    102      1.1  joerg extern	const char *const *man_macronames;
    103      1.1  joerg 
    104      1.1  joerg __BEGIN_DECLS
    105      1.1  joerg 
    106      1.1  joerg struct	man;
    107      1.1  joerg 
    108      1.1  joerg void	 	  man_free(struct man *);
    109  1.1.1.5  joerg struct	man	 *man_alloc(void *, int, mandocmsg);
    110  1.1.1.3  joerg void		  man_reset(struct man *);
    111  1.1.1.5  joerg int	 	  man_parseln(struct man *, int, char *, int);
    112      1.1  joerg int		  man_endparse(struct man *);
    113      1.1  joerg 
    114      1.1  joerg const struct man_node *man_node(const struct man *);
    115      1.1  joerg const struct man_meta *man_meta(const struct man *);
    116      1.1  joerg 
    117      1.1  joerg __END_DECLS
    118      1.1  joerg 
    119      1.1  joerg #endif /*!MAN_H*/
    120