version 1.2, 2008/12/17 17:18:38 |
version 1.8, 2009/01/16 12:23:25 |
|
|
#include <stdlib.h> |
#include <stdlib.h> |
#include <stdio.h> |
#include <stdio.h> |
#include <string.h> |
#include <string.h> |
|
#ifdef __linux__ |
|
#include <time.h> |
|
#endif |
|
|
#include "private.h" |
#include "private.h" |
|
|
|
#ifdef __linux__ |
|
extern char *strptime(const char *, const char *, struct tm *); |
|
#endif |
|
|
int |
int |
mdoc_isdelim(const char *p) |
mdoc_iscdelim(char p) |
{ |
{ |
|
|
if (0 == *p) |
switch (p) { |
return(0); |
|
if (0 != *(p + 1)) |
|
return(0); |
|
|
|
switch (*p) { |
|
case('{'): |
|
/* FALLTHROUGH */ |
|
case('.'): |
case('.'): |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case(','): |
case(','): |
Line 56 mdoc_isdelim(const char *p) |
|
Line 56 mdoc_isdelim(const char *p) |
|
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case(']'): |
case(']'): |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
|
case('{'): |
|
/* FALLTHROUGH */ |
case('}'): |
case('}'): |
return(1); |
return(1); |
default: |
default: |
Line 66 mdoc_isdelim(const char *p) |
|
Line 68 mdoc_isdelim(const char *p) |
|
} |
} |
|
|
|
|
|
int |
|
mdoc_isdelim(const char *p) |
|
{ |
|
|
|
if (0 == *p) |
|
return(0); |
|
if (0 != *(p + 1)) |
|
return(0); |
|
return(mdoc_iscdelim(*p)); |
|
} |
|
|
|
|
enum mdoc_sec |
enum mdoc_sec |
mdoc_atosec(size_t sz, const char **p) |
mdoc_atosec(size_t sz, const char **p) |
{ |
{ |
Line 119 mdoc_atotime(const char *p) |
|
Line 133 mdoc_atotime(const char *p) |
|
{ |
{ |
struct tm tm; |
struct tm tm; |
|
|
if (strptime(p, "%b %d %Y", &tm)) |
(void)memset(&tm, 0, sizeof(struct tm)); |
|
|
|
if (0 == strptime(p, "%b %d %Y", &tm)) |
return(mktime(&tm)); |
return(mktime(&tm)); |
if (strptime(p, "%b %d, %Y", &tm)) |
if (0 == strptime(p, "%b %d, %Y", &tm)) |
return(mktime(&tm)); |
return(mktime(&tm)); |
|
|
return(0); |
return(0); |
Line 212 mdoc_atoarch(const char *p) |
|
Line 228 mdoc_atoarch(const char *p) |
|
return(ARCH_amiga); |
return(ARCH_amiga); |
else if (0 == strcmp(p, "arc")) |
else if (0 == strcmp(p, "arc")) |
return(ARCH_arc); |
return(ARCH_arc); |
|
else if (0 == strcmp(p, "arm")) |
|
return(ARCH_arm); |
else if (0 == strcmp(p, "armish")) |
else if (0 == strcmp(p, "armish")) |
return(ARCH_armish); |
return(ARCH_armish); |
else if (0 == strcmp(p, "aviion")) |
else if (0 == strcmp(p, "aviion")) |
Line 256 mdoc_atoarch(const char *p) |
|
Line 274 mdoc_atoarch(const char *p) |
|
return(ARCH_zaurus); |
return(ARCH_zaurus); |
|
|
return(ARCH_DEFAULT); |
return(ARCH_DEFAULT); |
|
} |
|
|
|
|
|
enum mdoc_att |
|
mdoc_atoatt(const char *p) |
|
{ |
|
|
|
assert(p); |
|
if (0 == strcmp(p, "v1")) |
|
return(ATT_v1); |
|
else if (0 == strcmp(p, "v2")) |
|
return(ATT_v2); |
|
else if (0 == strcmp(p, "v3")) |
|
return(ATT_v3); |
|
else if (0 == strcmp(p, "v4")) |
|
return(ATT_v4); |
|
else if (0 == strcmp(p, "v5")) |
|
return(ATT_v5); |
|
else if (0 == strcmp(p, "v6")) |
|
return(ATT_v6); |
|
else if (0 == strcmp(p, "v7")) |
|
return(ATT_v7); |
|
else if (0 == strcmp(p, "32v")) |
|
return(ATT_32v); |
|
else if (0 == strcmp(p, "V.1")) |
|
return(ATT_V1); |
|
else if (0 == strcmp(p, "V.2")) |
|
return(ATT_V2); |
|
else if (0 == strcmp(p, "V.3")) |
|
return(ATT_V3); |
|
else if (0 == strcmp(p, "V.4")) |
|
return(ATT_V4); |
|
|
|
return(ATT_DEFAULT); |
|
} |
|
|
|
|
|
char * |
|
mdoc_type2a(enum mdoc_type type) |
|
{ |
|
switch (type) { |
|
case (MDOC_ROOT): |
|
return("root"); |
|
case (MDOC_BLOCK): |
|
return("block"); |
|
case (MDOC_HEAD): |
|
return("block-head"); |
|
case (MDOC_BODY): |
|
return("block-body"); |
|
case (MDOC_TAIL): |
|
return("block-tail"); |
|
case (MDOC_ELEM): |
|
return("elem"); |
|
case (MDOC_TEXT): |
|
return("text"); |
|
default: |
|
break; |
|
} |
|
|
|
abort(); |
|
/* NOTREACHED */ |
} |
} |