]> git.cameronkatri.com Git - mandoc.git/blobdiff - mandoc.c
Implement the roff(7) .rr (remove register) request.
[mandoc.git] / mandoc.c
index da953214354b284b823ced4ec01eb19048ec7564..2df01659e6bf7b659a0e8bfda4913a8285dce91f 100644 (file)
--- a/mandoc.c
+++ b/mandoc.c
@@ -1,4 +1,4 @@
-/*     $Id: mandoc.c,v 1.72 2013/12/25 22:45:33 schwarze Exp $ */
+/*     $Id: mandoc.c,v 1.76 2014/03/23 11:25:26 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2011, 2012, 2013 Ingo Schwarze <schwarze@openbsd.org>
@@ -31,6 +31,7 @@
 #include <time.h>
 
 #include "mandoc.h"
+#include "mandoc_aux.h"
 #include "libmandoc.h"
 
 #define DATESIZE 32
@@ -40,7 +41,7 @@ static        char    *time2a(time_t);
 
 
 enum mandoc_esc
-mandoc_escape(const char const **end, const char const **start, int *sz)
+mandoc_escape(const char **end, const char **start, int *sz)
 {
        const char      *local_start;
        int              local_sz;
@@ -165,12 +166,16 @@ mandoc_escape(const char const **end, const char const **start, int *sz)
                /* FALLTHROUGH */
        case ('b'):
                /* FALLTHROUGH */
+       case ('B'):
+               /* FALLTHROUGH */
        case ('D'):
                /* FALLTHROUGH */
        case ('o'):
                /* FALLTHROUGH */
        case ('R'):
                /* FALLTHROUGH */
+       case ('w'):
+               /* FALLTHROUGH */
        case ('X'):
                /* FALLTHROUGH */
        case ('Z'):
@@ -185,8 +190,6 @@ mandoc_escape(const char const **end, const char const **start, int *sz)
         * These escapes are of the form \X'N', where 'X' is the trigger
         * and 'N' resolves to a numerical expression.
         */
-       case ('B'):
-               /* FALLTHROUGH */
        case ('h'):
                /* FALLTHROUGH */
        case ('H'):
@@ -194,19 +197,15 @@ mandoc_escape(const char const **end, const char const **start, int *sz)
        case ('L'):
                /* FALLTHROUGH */
        case ('l'):
-               gly = ESCAPE_NUMBERED;
                /* FALLTHROUGH */
        case ('S'):
                /* FALLTHROUGH */
        case ('v'):
                /* FALLTHROUGH */
-       case ('w'):
-               /* FALLTHROUGH */
        case ('x'):
                if ('\'' != **start)
                        return(ESCAPE_ERROR);
-               if (ESCAPE_ERROR == gly)
-                       gly = ESCAPE_IGNORE;
+               gly = ESCAPE_IGNORE;
                *start = ++*end;
                term = '\'';
                break;
@@ -355,74 +354,6 @@ mandoc_escape(const char const **end, const char const **start, int *sz)
        return(gly);
 }
 
-void *
-mandoc_calloc(size_t num, size_t size)
-{
-       void            *ptr;
-
-       ptr = calloc(num, size);
-       if (NULL == ptr) {
-               perror(NULL);
-               exit((int)MANDOCLEVEL_SYSERR);
-       }
-
-       return(ptr);
-}
-
-
-void *
-mandoc_malloc(size_t size)
-{
-       void            *ptr;
-
-       ptr = malloc(size);
-       if (NULL == ptr) {
-               perror(NULL);
-               exit((int)MANDOCLEVEL_SYSERR);
-       }
-
-       return(ptr);
-}
-
-
-void *
-mandoc_realloc(void *ptr, size_t size)
-{
-
-       ptr = realloc(ptr, size);
-       if (NULL == ptr) {
-               perror(NULL);
-               exit((int)MANDOCLEVEL_SYSERR);
-       }
-
-       return(ptr);
-}
-
-char *
-mandoc_strndup(const char *ptr, size_t sz)
-{
-       char            *p;
-
-       p = mandoc_malloc(sz + 1);
-       memcpy(p, ptr, sz);
-       p[(int)sz] = '\0';
-       return(p);
-}
-
-char *
-mandoc_strdup(const char *ptr)
-{
-       char            *p;
-
-       p = strdup(ptr);
-       if (NULL == p) {
-               perror(NULL);
-               exit((int)MANDOCLEVEL_SYSERR);
-       }
-
-       return(p);
-}
-
 /*
  * Parse a quoted or unquoted roff-style request or macro argument.
  * Return a pointer to the parsed argument, which is either the original
@@ -596,10 +527,10 @@ mandoc_normdate(struct mparse *parse, char *in, int ln, int pos)
 }
 
 int
-mandoc_eos(const char *p, size_t sz, int enclosed)
+mandoc_eos(const char *p, size_t sz)
 {
-       const char *q;
-       int found;
+       const char      *q;
+       int              enclosed, found;
 
        if (0 == sz)
                return(0);
@@ -610,7 +541,7 @@ mandoc_eos(const char *p, size_t sz, int enclosed)
         * propagate outward.
         */
 
-       found = 0;
+       enclosed = found = 0;
        for (q = p + (int)sz - 1; q >= p; q--) {
                switch (*q) {
                case ('\"'):