=================================================================== RCS file: /cvs/mandoc/mdoc_validate.c,v retrieving revision 1.210 retrieving revision 1.212 diff -u -p -r1.210 -r1.212 --- mandoc/mdoc_validate.c 2014/04/20 16:46:05 1.210 +++ mandoc/mdoc_validate.c 2014/04/20 20:48:53 1.212 @@ -1,4 +1,4 @@ -/* $Id: mdoc_validate.c,v 1.210 2014/04/20 16:46:05 schwarze Exp $ */ +/* $Id: mdoc_validate.c,v 1.212 2014/04/20 20:48:53 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2014 Ingo Schwarze @@ -45,8 +45,6 @@ #define PRE_ARGS struct mdoc *mdoc, struct mdoc_node *n #define POST_ARGS struct mdoc *mdoc -#define NUMSIZ 32 - enum check_ineq { CHECK_LT, CHECK_GT, @@ -1046,34 +1044,25 @@ post_bf(POST_ARGS) static int post_lb(POST_ARGS) { - const char *p; - char *buf; - size_t sz; + struct mdoc_node *n; + const char *stdlibname; + char *libname; check_count(mdoc, MDOC_ELEM, CHECK_WARN, CHECK_EQ, 1); - assert(mdoc->last->child); - assert(MDOC_TEXT == mdoc->last->child->type); + n = mdoc->last->child; - p = mdoc_a2lib(mdoc->last->child->string); + assert(n); + assert(MDOC_TEXT == n->type); - /* If lookup ok, replace with table value. */ + if (NULL == (stdlibname = mdoc_a2lib(n->string))) + mandoc_asprintf(&libname, + "library \\(lq%s\\(rq", n->string); + else + libname = mandoc_strdup(stdlibname); - if (p) { - free(mdoc->last->child->string); - mdoc->last->child->string = mandoc_strdup(p); - return(1); - } - - /* If not, use "library ``xxxx''. */ - - sz = strlen(mdoc->last->child->string) + 2 + - strlen("\\(lqlibrary\\(rq"); - buf = mandoc_malloc(sz); - snprintf(buf, sz, "library \\(lq%s\\(rq", - mdoc->last->child->string); - free(mdoc->last->child->string); - mdoc->last->child->string = buf; + free(n->string); + n->string = libname; return(1); } @@ -1388,7 +1377,7 @@ post_bl_block_width(POST_ARGS) int i; enum mdoct tok; struct mdoc_node *n; - char buf[NUMSIZ]; + char buf[24]; n = mdoc->last; @@ -1420,7 +1409,7 @@ post_bl_block_width(POST_ARGS) assert(i < (int)n->args->argc); - snprintf(buf, NUMSIZ, "%un", (unsigned int)width); + (void)snprintf(buf, sizeof(buf), "%un", (unsigned int)width); free(n->args->argv[i].value[0]); n->args->argv[i].value[0] = mandoc_strdup(buf); @@ -1435,7 +1424,7 @@ post_bl_block_tag(POST_ARGS) struct mdoc_node *n, *nn; size_t sz, ssz; int i; - char buf[NUMSIZ]; + char buf[24]; /* * Calculate the -width for a `Bl -tag' list if it hasn't been @@ -1470,7 +1459,7 @@ post_bl_block_tag(POST_ARGS) /* Defaults to ten ens. */ - snprintf(buf, NUMSIZ, "%un", (unsigned int)sz); + (void)snprintf(buf, sizeof(buf), "%un", (unsigned int)sz); /* * We have to dynamically add this to the macro's argument list.