]> git.cameronkatri.com Git - mandoc.git/blobdiff - mandoc.h
document -Q and -T; from OpenBSD
[mandoc.git] / mandoc.h
index f84b746cd4d4e81d4286912a9068ebac47cf3bd8..8d5100ea460222c17e07ec38c2d81a3e78e41e17 100644 (file)
--- a/mandoc.h
+++ b/mandoc.h
@@ -1,7 +1,7 @@
-/*     $Id: mandoc.h,v 1.106 2012/11/19 22:30:58 schwarze Exp $ */
+/*     $Id: mandoc.h,v 1.119 2014/03/28 23:26:25 schwarze Exp $ */
 /*
  * Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2012 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -20,6 +20,7 @@
 
 #define ASCII_NBRSP     31  /* non-breaking space */
 #define        ASCII_HYPH       30  /* breakable hyphen */
+#define        ASCII_BREAK      29  /* breakable zero-width space */
 
 /*
  * Status level.  This refers to both internal status (i.e., whilst
@@ -65,7 +66,7 @@ enum  mandocerr {
        MANDOCERR_BADNAMESEC, /* bad NAME section contents */
        MANDOCERR_SECOOO, /* sections out of conventional order */
        MANDOCERR_SECREP, /* duplicate section name */
-       MANDOCERR_SECMSEC, /* section not in conventional manual section */
+       MANDOCERR_SECMSEC, /* section header suited to sections ... */
 
        /* related to macros and nesting */
        MANDOCERR_MACROOBS, /* skipping obsolete macro */
@@ -145,12 +146,14 @@ enum      mandocerr {
        MANDOCERR_NOARGS, /* macro requires line argument(s) */
        MANDOCERR_NOBODY, /* macro requires body argument(s) */
        MANDOCERR_NOARGV, /* macro requires argument(s) */
+       MANDOCERR_NUMERIC, /* request requires a numeric argument */
        MANDOCERR_LISTTYPE, /* missing list type */
        MANDOCERR_ARGSLOST, /* line argument(s) will be lost */
        MANDOCERR_BODYLOST, /* body argument(s) will be lost */
 
        MANDOCERR_FATAL, /* ===== start of fatal errors ===== */
 
+       MANDOCERR_TOOLARGE, /* input too large */
        MANDOCERR_NOTMANUAL, /* manual isn't really a manual */
        MANDOCERR_COLUMNS, /* column syntax is inconsistent */
        MANDOCERR_BADDISP, /* NOT IMPLEMENTED: .Bd -file */
@@ -161,10 +164,17 @@ enum      mandocerr {
        MANDOCERR_NODOCBODY, /* no document body */
        MANDOCERR_NODOCPROLOG, /* no document prologue */
        MANDOCERR_MEM, /* static buffer exhausted */
+
+       /* ===== system errors ===== */
+
+       MANDOCERR_SYSOPEN, /* cannot open file */
+       MANDOCERR_SYSSTAT, /* cannot stat file */
+       MANDOCERR_SYSREAD, /* cannot read file */
+
        MANDOCERR_MAX
 };
 
-struct tbl {
+struct tbl_opts {
        char              tab; /* cell-separator */
        char              decimal; /* decimal point */
        int               linesize;
@@ -230,6 +240,7 @@ struct      tbl_row {
        struct tbl_row   *next;
        struct tbl_cell  *first;
        struct tbl_cell  *last;
+       int               vert; /* trailing vertical line */
 };
 
 enum   tbl_datt {
@@ -263,7 +274,7 @@ enum        tbl_spant {
  * A row of data in a table.
  */
 struct tbl_span {
-       struct tbl       *tbl;
+       struct tbl_opts  *opts;
        struct tbl_head  *head;
        struct tbl_row   *layout; /* layout row */
        struct tbl_dat   *first;
@@ -362,15 +373,12 @@ struct    eqn {
 };
 
 /*
- * The type of parse sequence.  This value is usually passed via the
- * mandoc(1) command line of -man and -mdoc.  It's almost exclusively
- * -mandoc but the others have been retained for compatibility.
+ * Parse options.
  */
-enum   mparset {
-       MPARSE_AUTO, /* magically determine the document type */
-       MPARSE_MDOC, /* assume -mdoc */
-       MPARSE_MAN /* assume -man */
-};
+#define        MPARSE_MDOC     1  /* assume -mdoc */
+#define        MPARSE_MAN      2  /* assume -man */
+#define        MPARSE_SO       4  /* honour .so requests */
+#define        MPARSE_QUICK    8  /* abort the parse early */
 
 enum   mandoc_esc {
        ESCAPE_ERROR = 0, /* bail! unparsable escape */
@@ -379,6 +387,7 @@ enum        mandoc_esc {
        ESCAPE_FONT, /* a generic font mode */
        ESCAPE_FONTBOLD, /* bold font mode */
        ESCAPE_FONTITALIC, /* italic font mode */
+       ESCAPE_FONTBI, /* bold italic font mode */
        ESCAPE_FONTROMAN, /* roman font mode */
        ESCAPE_FONTPREV, /* previous font mode */
        ESCAPE_NUMBERED, /* a numbered glyph */
@@ -397,12 +406,7 @@ struct     man;
 
 __BEGIN_DECLS
 
-void            *mandoc_calloc(size_t, size_t);
 enum mandoc_esc          mandoc_escape(const char **, const char **, int *);
-void            *mandoc_malloc(size_t);
-void            *mandoc_realloc(void *, size_t);
-char            *mandoc_strdup(const char *);
-char            *mandoc_strndup(const char *, size_t);
 struct mchars   *mchars_alloc(void);
 void             mchars_free(struct mchars *);
 char             mchars_num2char(const char *, size_t);
@@ -411,8 +415,7 @@ int           mchars_spec2cp(const struct mchars *,
                        const char *, size_t);
 const char      *mchars_spec2str(const struct mchars *, 
                        const char *, size_t, size_t *);
-struct mparse   *mparse_alloc(enum mparset, enum mandoclevel,
-                       mandocmsg, void *, char *);
+struct mparse   *mparse_alloc(int, enum mandoclevel, mandocmsg, char *);
 void             mparse_free(struct mparse *);
 void             mparse_keep(struct mparse *);
 enum mandoclevel  mparse_readfd(struct mparse *, int, const char *);
@@ -420,7 +423,7 @@ enum mandoclevel  mparse_readmem(struct mparse *, const void *, size_t,
                        const char *);
 void             mparse_reset(struct mparse *);
 void             mparse_result(struct mparse *, 
-                       struct mdoc **, struct man **);
+                       struct mdoc **, struct man **, char **);
 const char      *mparse_getkeep(const struct mparse *);
 const char      *mparse_strerror(enum mandocerr);
 const char      *mparse_strlevel(enum mandoclevel);