version 1.23, 2011/03/15 03:03:49 |
version 1.24, 2011/04/21 22:59:54 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2011 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2011 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 |
|
|
while (' ' == *cp) |
while (' ' == *cp) |
cp++; |
cp++; |
} |
} |
*pos += (cp - start) + (quoted ? 1 : 0); |
*pos += (int)(cp - start) + (quoted ? 1 : 0); |
*cpp = cp; |
*cpp = cp; |
|
|
if ('\0' == *cp && msg && (white || ' ' == cp[-1])) |
if ('\0' == *cp && msg && (white || ' ' == cp[-1])) |
|
|
return(start); |
return(start); |
} |
} |
|
|
|
|
static int |
static int |
a2time(time_t *t, const char *fmt, const char *p) |
a2time(time_t *t, const char *fmt, const char *p) |
{ |
{ |
|
|
return(0); |
return(0); |
} |
} |
|
|
|
|
static char * |
static char * |
time2a(time_t t) |
time2a(time_t t) |
{ |
{ |
|
|
return(NULL); |
return(NULL); |
} |
} |
|
|
|
|
char * |
char * |
mandoc_normdate(char *in, mandocmsg msg, void *data, int ln, int pos) |
mandoc_normdate(char *in, mandocmsg msg, void *data, int ln, int pos) |
{ |
{ |
|
|
return(out ? out : mandoc_strdup(in)); |
return(out ? out : mandoc_strdup(in)); |
} |
} |
|
|
|
|
int |
int |
mandoc_eos(const char *p, size_t sz, int enclosed) |
mandoc_eos(const char *p, size_t sz, int enclosed) |
{ |
{ |
|
|
return(found && !enclosed); |
return(found && !enclosed); |
} |
} |
|
|
|
|
int |
int |
mandoc_hyph(const char *start, const char *c) |
mandoc_hyph(const char *start, const char *c) |
{ |
{ |
|
|
return(0); |
return(0); |
|
|
return(1); |
return(1); |
|
} |
|
|
|
/* |
|
* Check if a string is a punctuation delimiter. This only applies to |
|
* mdoc(7) documents, but as it's used in both front-ends and back-ends, |
|
* it needs to go here (instead of, say, in libmdoc.h). |
|
*/ |
|
enum mdelim |
|
mandoc_isdelim(const char *p) |
|
{ |
|
|
|
if ('\0' == p[0]) |
|
return(DELIM_NONE); |
|
|
|
if ('\0' == p[1]) |
|
switch (p[0]) { |
|
case('('): |
|
/* FALLTHROUGH */ |
|
case('['): |
|
return(DELIM_OPEN); |
|
case('|'): |
|
return(DELIM_MIDDLE); |
|
case('.'): |
|
/* FALLTHROUGH */ |
|
case(','): |
|
/* FALLTHROUGH */ |
|
case(';'): |
|
/* FALLTHROUGH */ |
|
case(':'): |
|
/* FALLTHROUGH */ |
|
case('?'): |
|
/* FALLTHROUGH */ |
|
case('!'): |
|
/* FALLTHROUGH */ |
|
case(')'): |
|
/* FALLTHROUGH */ |
|
case(']'): |
|
return(DELIM_CLOSE); |
|
default: |
|
return(DELIM_NONE); |
|
} |
|
|
|
if ('\\' != p[0]) |
|
return(DELIM_NONE); |
|
|
|
if (0 == strcmp(p + 1, ".")) |
|
return(DELIM_CLOSE); |
|
if (0 == strcmp(p + 1, "*(Ba")) |
|
return(DELIM_MIDDLE); |
|
|
|
return(DELIM_NONE); |
} |
} |