Return to out.c CVS log | Up to [cvsweb.bsd.lv] / mandoc |
version 1.11, 2009/11/12 08:21:05 | version 1.13, 2010/04/07 07:49:38 | ||
---|---|---|---|
|
|
||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
*/ | */ | ||
#ifdef HAVE_CONFIG_H | |||
#include "config.h" | |||
#endif | |||
#include <sys/types.h> | #include <sys/types.h> | ||
#include <assert.h> | #include <assert.h> | ||
|
|
||
(t) = 3; } \ | (t) = 3; } \ | ||
while (/* CONSTCOND */ 0) | while (/* CONSTCOND */ 0) | ||
#ifdef __linux__ | |||
extern size_t strlcat(char *, const char *, size_t); | |||
#endif | |||
/* | /* | ||
* Convert a `scaling unit' to a consistent form, or fail. Scaling | * Convert a `scaling unit' to a consistent form, or fail. Scaling | ||
* units are documented in groff.7, mdoc.7, man.7. | * units are documented in groff.7, mdoc.7, man.7. | ||
|
|
||
a2roffdeco(enum roffdeco *d, | a2roffdeco(enum roffdeco *d, | ||
const char **word, size_t *sz) | const char **word, size_t *sz) | ||
{ | { | ||
int j, type, term, lim; | int j, offs, term, lim; | ||
const char *wp, *sp; | const char *wp, *sp; | ||
*d = DECO_NONE; | *d = DECO_NONE; | ||
wp = *word; | wp = *word; | ||
type = 1; | offs = 0; | ||
switch (*wp) { | switch (*wp) { | ||
case ('\0'): | case ('\0'): | ||
|
|
||
return(4); | return(4); | ||
case ('['): | case ('['): | ||
type = 0; | offs = 1; | ||
break; | break; | ||
default: | default: | ||
|
|
||
} | } | ||
*word = ++wp; | *word = ++wp; | ||
for (j = 0; *wp && ']' != *wp; wp++, j++) | for (j = 0; *wp && ']' != *wp; wp++, j++) | ||
/* Loop... */ ; | /* Loop... */ ; | ||
if ('\0' == *wp) | if ('\0' == *wp) | ||
return(j + 1); | return(j + 1 + offs); | ||
*d = type ? DECO_SPECIAL : DECO_RESERVED; | *d = offs ? DECO_RESERVED : DECO_SPECIAL; | ||
*sz = (size_t)j; | *sz = (size_t)j; | ||
return (j + 2); | |||
return (j + 2 + offs); | |||
} | } |