version 1.10, 2009/11/08 09:23:35 |
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'): |
Line 236 a2roffdeco(enum roffdeco *d, |
|
Line 236 a2roffdeco(enum roffdeco *d, |
|
return(4); |
return(4); |
|
|
case ('['): |
case ('['): |
type = 0; |
offs = 1; |
break; |
break; |
|
|
default: |
default: |
Line 331 a2roffdeco(enum roffdeco *d, |
|
Line 331 a2roffdeco(enum roffdeco *d, |
|
case ('['): |
case ('['): |
break; |
break; |
|
|
|
case ('c'): |
|
*d = DECO_NOSPACE; |
|
*sz = 1; |
|
return(1); |
|
|
default: |
default: |
*d = DECO_SPECIAL; |
*d = DECO_SPECIAL; |
*word = wp; |
*word = wp; |
Line 339 a2roffdeco(enum roffdeco *d, |
|
Line 344 a2roffdeco(enum roffdeco *d, |
|
} |
} |
|
|
*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); |
} |
} |