version 1.183, 2012/05/27 17:39:28 |
version 1.186, 2012/07/11 16:57:43 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2010, 2011, 2012 Ingo Schwarze <schwarze@openbsd.org> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
Line 314 static const enum mdoct rsord[RSORD_MAX] = { |
|
Line 314 static const enum mdoct rsord[RSORD_MAX] = { |
|
MDOC__R, |
MDOC__R, |
MDOC__N, |
MDOC__N, |
MDOC__V, |
MDOC__V, |
|
MDOC__U, |
MDOC__P, |
MDOC__P, |
MDOC__Q, |
MDOC__Q, |
MDOC__D, |
MDOC__D, |
MDOC__O, |
MDOC__O, |
MDOC__C, |
MDOC__C |
MDOC__U |
|
}; |
}; |
|
|
static const char * const secnames[SEC__MAX] = { |
static const char * const secnames[SEC__MAX] = { |
Line 733 pre_bl(PRE_ARGS) |
|
Line 733 pre_bl(PRE_ARGS) |
|
/* |
/* |
* Validate the width field. Some list types don't need width |
* Validate the width field. Some list types don't need width |
* types and should be warned about them. Others should have it |
* types and should be warned about them. Others should have it |
* and must also be warned. |
* and must also be warned. Yet others have a default and need |
|
* no warning. |
*/ |
*/ |
|
|
switch (n->norm->Bl.type) { |
switch (n->norm->Bl.type) { |
case (LIST_tag): |
case (LIST_tag): |
if (n->norm->Bl.width) |
if (NULL == n->norm->Bl.width) |
break; |
mdoc_nmsg(mdoc, n, MANDOCERR_NOWIDTHARG); |
mdoc_nmsg(mdoc, n, MANDOCERR_NOWIDTHARG); |
|
break; |
break; |
case (LIST_column): |
case (LIST_column): |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
Line 754 pre_bl(PRE_ARGS) |
|
Line 754 pre_bl(PRE_ARGS) |
|
if (n->norm->Bl.width) |
if (n->norm->Bl.width) |
mdoc_nmsg(mdoc, n, MANDOCERR_IGNARGV); |
mdoc_nmsg(mdoc, n, MANDOCERR_IGNARGV); |
break; |
break; |
|
case (LIST_bullet): |
|
/* FALLTHROUGH */ |
|
case (LIST_dash): |
|
/* FALLTHROUGH */ |
|
case (LIST_hyphen): |
|
if (NULL == n->norm->Bl.width) |
|
n->norm->Bl.width = "2n"; |
|
break; |
|
case (LIST_enum): |
|
if (NULL == n->norm->Bl.width) |
|
n->norm->Bl.width = "3n"; |
|
break; |
default: |
default: |
break; |
break; |
} |
} |
Line 2192 post_os(POST_ARGS) |
|
Line 2204 post_os(POST_ARGS) |
|
n = mdoc->last; |
n = mdoc->last; |
|
|
/* |
/* |
* Set the operating system by way of the `Os' macro. Note that |
* Set the operating system by way of the `Os' macro. |
* if an argument isn't provided and -DOSNAME="\"foo\"" is |
* The order of precedence is: |
* provided during compilation, this value will be used instead |
* 1. the argument of the `Os' macro, unless empty |
* of filling in "sysname release" from uname(). |
* 2. the -Ios=foo command line argument, if provided |
|
* 3. -DOSNAME="\"foo\"", if provided during compilation |
|
* 4. "sysname release" from uname(3) |
*/ |
*/ |
|
|
if (mdoc->meta.os) |
free(mdoc->meta.os); |
free(mdoc->meta.os); |
|
|
|
buf[0] = '\0'; |
buf[0] = '\0'; |
if (-1 == (c = concat(buf, n->child, BUFSIZ))) { |
if (-1 == (c = concat(buf, n->child, BUFSIZ))) { |
Line 2209 post_os(POST_ARGS) |
|
Line 2222 post_os(POST_ARGS) |
|
|
|
assert(c); |
assert(c); |
|
|
/* XXX: yes, these can all be dynamically-adjusted buffers, but |
|
* it's really not worth the extra hackery. |
|
*/ |
|
|
|
if ('\0' == buf[0]) { |
if ('\0' == buf[0]) { |
|
if (mdoc->defos) { |
|
mdoc->meta.os = mandoc_strdup(mdoc->defos); |
|
return(1); |
|
} |
#ifdef OSNAME |
#ifdef OSNAME |
if (strlcat(buf, OSNAME, BUFSIZ) >= BUFSIZ) { |
if (strlcat(buf, OSNAME, BUFSIZ) >= BUFSIZ) { |
mdoc_nmsg(mdoc, n, MANDOCERR_MEM); |
mdoc_nmsg(mdoc, n, MANDOCERR_MEM); |