=================================================================== RCS file: /cvs/mandoc/Attic/strings.c,v retrieving revision 1.7 retrieving revision 1.12 diff -u -p -r1.7 -r1.12 --- mandoc/Attic/strings.c 2009/01/16 11:50:54 1.7 +++ mandoc/Attic/strings.c 2009/02/20 23:35:36 1.12 @@ -1,4 +1,4 @@ -/* $Id: strings.c,v 1.7 2009/01/16 11:50:54 kristaps Exp $ */ +/* $Id: strings.c,v 1.12 2009/02/20 23:35:36 kristaps Exp $ */ /* * Copyright (c) 2008 Kristaps Dzonsons * @@ -21,7 +21,7 @@ #include #include #include -#ifdef __linux__ +#ifndef __OpenBSD__ #include #endif @@ -81,47 +81,39 @@ mdoc_isdelim(const char *p) enum mdoc_sec -mdoc_atosec(size_t sz, const char **p) +mdoc_atosec(const char *p) { - assert(sz > 0); - if (sz > 2) - return(SEC_CUSTOM); - if (sz == 2) { - if (0 == strcmp(*p, "RETURN") && - 0 == strcmp(*(p + 1), "VALUES")) - return(SEC_RETURN_VALUES); - if (0 == strcmp(*p, "SEE") && - 0 == strcmp(*(p + 1), "ALSO")) - return(SEC_SEE_ALSO); - return(SEC_CUSTOM); - } - - if (0 == strcmp(*p, "NAME")) + assert(p); + if (0 == strcmp(p, "NAME")) return(SEC_NAME); - else if (0 == strcmp(*p, "SYNOPSIS")) + else if (0 == strcmp(p, "RETURN VALUES")) + return(SEC_RETURN_VALUES); + else if (0 == strcmp(p, "SEE ALSO")) + return(SEC_SEE_ALSO); + else if (0 == strcmp(p, "SYNOPSIS")) return(SEC_SYNOPSIS); - else if (0 == strcmp(*p, "DESCRIPTION")) + else if (0 == strcmp(p, "DESCRIPTION")) return(SEC_DESCRIPTION); - else if (0 == strcmp(*p, "ENVIRONMENT")) + else if (0 == strcmp(p, "ENVIRONMENT")) return(SEC_ENVIRONMENT); - else if (0 == strcmp(*p, "FILES")) + else if (0 == strcmp(p, "FILES")) return(SEC_FILES); - else if (0 == strcmp(*p, "EXAMPLES")) + else if (0 == strcmp(p, "EXAMPLES")) return(SEC_EXAMPLES); - else if (0 == strcmp(*p, "DIAGNOSTICS")) + else if (0 == strcmp(p, "DIAGNOSTICS")) return(SEC_DIAGNOSTICS); - else if (0 == strcmp(*p, "ERRORS")) + else if (0 == strcmp(p, "ERRORS")) return(SEC_ERRORS); - else if (0 == strcmp(*p, "STANDARDS")) + else if (0 == strcmp(p, "STANDARDS")) return(SEC_STANDARDS); - else if (0 == strcmp(*p, "HISTORY")) + else if (0 == strcmp(p, "HISTORY")) return(SEC_HISTORY); - else if (0 == strcmp(*p, "AUTHORS")) + else if (0 == strcmp(p, "AUTHORS")) return(SEC_AUTHORS); - else if (0 == strcmp(*p, "CAVEATS")) + else if (0 == strcmp(p, "CAVEATS")) return(SEC_CAVEATS); - else if (0 == strcmp(*p, "BUGS")) + else if (0 == strcmp(p, "BUGS")) return(SEC_BUGS); return(SEC_CUSTOM); @@ -132,13 +124,19 @@ time_t mdoc_atotime(const char *p) { struct tm tm; + char *pp; (void)memset(&tm, 0, sizeof(struct tm)); - if (strptime(p, "%b %d %Y", &tm)) + if (xstrcmp(p, "$Mdocdate: February 20 2009 $")) + return(time(NULL)); + if ((pp = strptime(p, "$Mdocdate: February 20 2009 $", &tm)) && 0 == *pp) return(mktime(&tm)); - if (strptime(p, "%b %d, %Y", &tm)) + /* XXX - this matches "June 1999", which is wrong. */ + if ((pp = strptime(p, "%b %d %Y", &tm)) && 0 == *pp) return(mktime(&tm)); + if ((pp = strptime(p, "%b %d, %Y", &tm)) && 0 == *pp) + return(mktime(&tm)); return(0); } @@ -228,6 +226,8 @@ mdoc_atoarch(const char *p) return(ARCH_amiga); else if (0 == strcmp(p, "arc")) return(ARCH_arc); + else if (0 == strcmp(p, "arm")) + return(ARCH_arm); else if (0 == strcmp(p, "armish")) return(ARCH_armish); else if (0 == strcmp(p, "aviion")) @@ -334,3 +334,158 @@ mdoc_type2a(enum mdoc_type type) abort(); /* NOTREACHED */ } + + +char * +mdoc_arch2a(enum mdoc_arch arch) +{ + + switch (arch) { + case (ARCH_alpha): + return("Alpha"); + case (ARCH_amd64): + return("AMD64"); + case (ARCH_amiga): + return("Amiga"); + case (ARCH_arc): + return("ARC"); + case (ARCH_arm): + return("ARM"); + case (ARCH_armish): + return("ARMISH"); + case (ARCH_aviion): + return("AViion"); + case (ARCH_hp300): + return("HP300"); + case (ARCH_hppa): + return("HPPA"); + case (ARCH_hppa64): + return("HPPA64"); + case (ARCH_i386): + return("i386"); + case (ARCH_landisk): + return("LANDISK"); + case (ARCH_luna88k): + return("Luna88k"); + case (ARCH_mac68k): + return("Mac68k"); + case (ARCH_macppc): + return("MacPPC"); + case (ARCH_mvme68k): + return("MVME68k"); + case (ARCH_mvme88k): + return("MVME88k"); + case (ARCH_mvmeppc): + return("MVMEPPC"); + case (ARCH_pmax): + return("PMAX"); + case (ARCH_sgi): + return("SGI"); + case (ARCH_socppc): + return("SOCPPC"); + case (ARCH_sparc): + return("SPARC"); + case (ARCH_sparc64): + return("SPARC64"); + case (ARCH_sun3): + return("Sun3"); + case (ARCH_vax): + return("VAX"); + case (ARCH_zaurus): + return("Zaurus"); + case (ARCH_DEFAULT): + return(NULL); + default: + break; + } + + abort(); + /* NOTREACHED */ +} + + +char * +mdoc_vol2a(enum mdoc_vol vol) +{ + + switch (vol) { + case (VOL_AMD): + return("OpenBSD Ancestral Manual Documents"); + case (VOL_IND): + return("OpenBSD Manual Master Index"); + case (VOL_KM): + return("OpenBSD Kernel Manual"); + case (VOL_LOCAL): + return("OpenBSD Local Manual"); + case (VOL_PRM): + return("OpenBSD Programmer's Manual"); + case (VOL_PS1): + return("OpenBSD Programmer's Supplementary Documents"); + case (VOL_SMM): + return("OpenBSD System Manager's Manual"); + case (VOL_URM): + return("OpenBSD Reference Manual"); + case (VOL_USD): + return("OpenBSD User's Supplementary Documents"); + case (VOL_DEFAULT): + return(NULL); + default: + break; + } + + abort(); + /* NOTREACHED */ +} + + +char * +mdoc_msec2a(enum mdoc_msec msec) +{ + + switch (msec) { + case(MSEC_1): + return("1"); + case(MSEC_2): + return("2"); + case(MSEC_3): + return("3"); + case(MSEC_3f): + return("3f"); + case(MSEC_3p): + return("3p"); + case(MSEC_4): + return("4"); + case(MSEC_5): + return("5"); + case(MSEC_6): + return("6"); + case(MSEC_7): + return("7"); + case(MSEC_8): + return("8"); + case(MSEC_9): + return("9"); + case(MSEC_X11): + return("X11"); + case(MSEC_X11R6): + return("X11R6"); + case(MSEC_local): + return("local"); + case(MSEC_n): + return("n"); + case(MSEC_unass): + /* FALLTHROUGH */ + case(MSEC_draft): + return("draft"); + case(MSEC_paper): + return("paper"); + case(MSEC_DEFAULT): + return(NULL); + default: + break; + } + + abort(); + /* NOTREACHED */ +} +