=================================================================== RCS file: /cvs/mandoc/mandoc.c,v retrieving revision 1.75 retrieving revision 1.78 diff -u -p -r1.75 -r1.78 --- mandoc/mandoc.c 2013/12/31 23:23:10 1.75 +++ mandoc/mandoc.c 2014/04/08 01:37:27 1.78 @@ -1,7 +1,7 @@ -/* $Id: mandoc.c,v 1.75 2013/12/31 23:23:10 schwarze Exp $ */ +/* $Id: mandoc.c,v 1.78 2014/04/08 01:37:27 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons - * Copyright (c) 2011, 2012, 2013 Ingo Schwarze + * Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -31,6 +31,7 @@ #include #include "mandoc.h" +#include "mandoc_aux.h" #include "libmandoc.h" #define DATESIZE 32 @@ -160,29 +161,26 @@ mandoc_escape(const char **end, const char **start, in /* * These escapes are of the form \X'Y', where 'X' is the trigger * and 'Y' is any string. These have opaque sub-strings. + * The \B and \w escapes are handled in roff.c, roff_res(). */ case ('A'): /* FALLTHROUGH */ case ('b'): /* FALLTHROUGH */ - case ('B'): - /* FALLTHROUGH */ case ('D'): /* FALLTHROUGH */ case ('o'): /* FALLTHROUGH */ case ('R'): /* FALLTHROUGH */ - case ('w'): - /* FALLTHROUGH */ case ('X'): /* FALLTHROUGH */ case ('Z'): - if ('\'' != **start) + if ('\0' == **start) return(ESCAPE_ERROR); gly = ESCAPE_IGNORE; + term = **start; *start = ++*end; - term = '\''; break; /* @@ -202,11 +200,11 @@ mandoc_escape(const char **end, const char **start, in case ('v'): /* FALLTHROUGH */ case ('x'): - if ('\'' != **start) + if (strchr("\0 %&()*+-./0123456789:<=>", **start)) return(ESCAPE_ERROR); gly = ESCAPE_IGNORE; + term = **start; *start = ++*end; - term = '\''; break; /* @@ -351,74 +349,6 @@ mandoc_escape(const char **end, const char **start, in } 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); } /*