[BACK]Return to strings.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Annotation of mandoc/strings.c, Revision 1.2

1.2     ! kristaps    1: /* $Id: strings.c,v 1.1 2008/12/15 03:13:01 kristaps Exp $ */
1.1       kristaps    2: /*
                      3:  * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
                      4:  *
                      5:  * Permission to use, copy, modify, and distribute this software for any
                      6:  * purpose with or without fee is hereby granted, provided that the
                      7:  * above copyright notice and this permission notice appear in all
                      8:  * copies.
                      9:  *
                     10:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
                     11:  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
                     12:  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
                     13:  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
                     14:  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
                     15:  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
                     16:  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
                     17:  * PERFORMANCE OF THIS SOFTWARE.
                     18:  */
                     19: #include <assert.h>
                     20: #include <ctype.h>
                     21: #include <stdlib.h>
                     22: #include <stdio.h>
1.2     ! kristaps   23: #include <string.h>
1.1       kristaps   24:
                     25: #include "private.h"
                     26:
                     27: int
                     28: mdoc_isdelim(const char *p)
                     29: {
                     30:
                     31:        if (0 == *p)
                     32:                return(0);
                     33:        if (0 != *(p + 1))
                     34:                return(0);
                     35:
                     36:        switch (*p) {
                     37:        case('{'):
                     38:                /* FALLTHROUGH */
                     39:        case('.'):
                     40:                /* FALLTHROUGH */
                     41:        case(','):
                     42:                /* FALLTHROUGH */
                     43:        case(';'):
                     44:                /* FALLTHROUGH */
                     45:        case(':'):
                     46:                /* FALLTHROUGH */
                     47:        case('?'):
                     48:                /* FALLTHROUGH */
                     49:        case('!'):
                     50:                /* FALLTHROUGH */
                     51:        case('('):
                     52:                /* FALLTHROUGH */
                     53:        case(')'):
                     54:                /* FALLTHROUGH */
                     55:        case('['):
                     56:                /* FALLTHROUGH */
                     57:        case(']'):
                     58:                /* FALLTHROUGH */
                     59:        case('}'):
                     60:                return(1);
                     61:        default:
                     62:                break;
                     63:        }
                     64:
                     65:        return(0);
                     66: }
                     67:
1.2     ! kristaps   68:
        !            69: enum mdoc_sec
        !            70: mdoc_atosec(size_t sz, const char **p)
        !            71: {
        !            72:
        !            73:        assert(sz > 0);
        !            74:        if (sz > 2)
        !            75:                return(SEC_CUSTOM);
        !            76:        if (sz == 2) {
        !            77:                if (0 == strcmp(*p, "RETURN") &&
        !            78:                                0 == strcmp(*(p + 1), "VALUES"))
        !            79:                        return(SEC_RETURN_VALUES);
        !            80:                if (0 == strcmp(*p, "SEE") &&
        !            81:                                0 == strcmp(*(p + 1), "ALSO"))
        !            82:                        return(SEC_SEE_ALSO);
        !            83:                return(SEC_CUSTOM);
        !            84:        }
        !            85:
        !            86:        if (0 == strcmp(*p, "NAME"))
        !            87:                return(SEC_NAME);
        !            88:        else if (0 == strcmp(*p, "SYNOPSIS"))
        !            89:                return(SEC_SYNOPSIS);
        !            90:        else if (0 == strcmp(*p, "DESCRIPTION"))
        !            91:                return(SEC_DESCRIPTION);
        !            92:        else if (0 == strcmp(*p, "ENVIRONMENT"))
        !            93:                return(SEC_ENVIRONMENT);
        !            94:        else if (0 == strcmp(*p, "FILES"))
        !            95:                return(SEC_FILES);
        !            96:        else if (0 == strcmp(*p, "EXAMPLES"))
        !            97:                return(SEC_EXAMPLES);
        !            98:        else if (0 == strcmp(*p, "DIAGNOSTICS"))
        !            99:                return(SEC_DIAGNOSTICS);
        !           100:        else if (0 == strcmp(*p, "ERRORS"))
        !           101:                return(SEC_ERRORS);
        !           102:        else if (0 == strcmp(*p, "STANDARDS"))
        !           103:                return(SEC_STANDARDS);
        !           104:        else if (0 == strcmp(*p, "HISTORY"))
        !           105:                return(SEC_HISTORY);
        !           106:        else if (0 == strcmp(*p, "AUTHORS"))
        !           107:                return(SEC_AUTHORS);
        !           108:        else if (0 == strcmp(*p, "CAVEATS"))
        !           109:                return(SEC_CAVEATS);
        !           110:        else if (0 == strcmp(*p, "BUGS"))
        !           111:                return(SEC_BUGS);
        !           112:
        !           113:        return(SEC_CUSTOM);
        !           114: }
        !           115:
        !           116:
        !           117: time_t
        !           118: mdoc_atotime(const char *p)
        !           119: {
        !           120:        struct tm        tm;
        !           121:
        !           122:        if (strptime(p, "%b %d %Y", &tm))
        !           123:                return(mktime(&tm));
        !           124:        if (strptime(p, "%b %d, %Y", &tm))
        !           125:                return(mktime(&tm));
        !           126:
        !           127:        return(0);
        !           128: }
        !           129:
        !           130:
        !           131: enum mdoc_msec
        !           132: mdoc_atomsec(const char *p)
        !           133: {
        !           134:
        !           135:        if (0 == strcmp(p, "1"))
        !           136:                return(MSEC_1);
        !           137:        else if (0 == strcmp(p, "2"))
        !           138:                return(MSEC_2);
        !           139:        else if (0 == strcmp(p, "3"))
        !           140:                return(MSEC_3);
        !           141:        else if (0 == strcmp(p, "3f"))
        !           142:                return(MSEC_3f);
        !           143:        else if (0 == strcmp(p, "3p"))
        !           144:                return(MSEC_3p);
        !           145:        else if (0 == strcmp(p, "4"))
        !           146:                return(MSEC_4);
        !           147:        else if (0 == strcmp(p, "5"))
        !           148:                return(MSEC_5);
        !           149:        else if (0 == strcmp(p, "6"))
        !           150:                return(MSEC_6);
        !           151:        else if (0 == strcmp(p, "7"))
        !           152:                return(MSEC_7);
        !           153:        else if (0 == strcmp(p, "8"))
        !           154:                return(MSEC_8);
        !           155:        else if (0 == strcmp(p, "9"))
        !           156:                return(MSEC_9);
        !           157:        else if (0 == strcmp(p, "X11"))
        !           158:                return(MSEC_X11);
        !           159:        else if (0 == strcmp(p, "X11R6"))
        !           160:                return(MSEC_X11R6);
        !           161:        else if (0 == strcmp(p, "local"))
        !           162:                return(MSEC_local);
        !           163:        else if (0 == strcmp(p, "n"))
        !           164:                return(MSEC_n);
        !           165:        else if (0 == strcmp(p, "unass"))
        !           166:                return(MSEC_unass);
        !           167:        else if (0 == strcmp(p, "draft"))
        !           168:                return(MSEC_draft);
        !           169:        else if (0 == strcmp(p, "paper"))
        !           170:                return(MSEC_paper);
        !           171:
        !           172:        return(MSEC_DEFAULT);
        !           173: }
        !           174:
        !           175:
        !           176: enum mdoc_vol
        !           177: mdoc_atovol(const char *p)
        !           178: {
        !           179:
        !           180:        if (0 == strcmp(p, "AMD"))
        !           181:                return(VOL_AMD);
        !           182:        else if (0 == strcmp(p, "IND"))
        !           183:                return(VOL_IND);
        !           184:        else if (0 == strcmp(p, "KM"))
        !           185:                return(VOL_KM);
        !           186:        else if (0 == strcmp(p, "LOCAL"))
        !           187:                return(VOL_LOCAL);
        !           188:        else if (0 == strcmp(p, "PRM"))
        !           189:                return(VOL_PRM);
        !           190:        else if (0 == strcmp(p, "PS1"))
        !           191:                return(VOL_PS1);
        !           192:        else if (0 == strcmp(p, "SMM"))
        !           193:                return(VOL_SMM);
        !           194:        else if (0 == strcmp(p, "URM"))
        !           195:                return(VOL_URM);
        !           196:        else if (0 == strcmp(p, "USD"))
        !           197:                return(VOL_USD);
        !           198:
        !           199:        return(VOL_DEFAULT);
        !           200: }
        !           201:
        !           202:
        !           203: enum mdoc_arch
        !           204: mdoc_atoarch(const char *p)
        !           205: {
        !           206:
        !           207:        if (0 == strcmp(p, "alpha"))
        !           208:                return(ARCH_alpha);
        !           209:        else if (0 == strcmp(p, "amd64"))
        !           210:                return(ARCH_amd64);
        !           211:        else if (0 == strcmp(p, "amiga"))
        !           212:                return(ARCH_amiga);
        !           213:        else if (0 == strcmp(p, "arc"))
        !           214:                return(ARCH_arc);
        !           215:        else if (0 == strcmp(p, "armish"))
        !           216:                return(ARCH_armish);
        !           217:        else if (0 == strcmp(p, "aviion"))
        !           218:                return(ARCH_aviion);
        !           219:        else if (0 == strcmp(p, "hp300"))
        !           220:                return(ARCH_hp300);
        !           221:        else if (0 == strcmp(p, "hppa"))
        !           222:                return(ARCH_hppa);
        !           223:        else if (0 == strcmp(p, "hppa64"))
        !           224:                return(ARCH_hppa64);
        !           225:        else if (0 == strcmp(p, "i386"))
        !           226:                return(ARCH_i386);
        !           227:        else if (0 == strcmp(p, "landisk"))
        !           228:                return(ARCH_landisk);
        !           229:        else if (0 == strcmp(p, "luna88k"))
        !           230:                return(ARCH_luna88k);
        !           231:        else if (0 == strcmp(p, "mac68k"))
        !           232:                return(ARCH_mac68k);
        !           233:        else if (0 == strcmp(p, "macppc"))
        !           234:                return(ARCH_macppc);
        !           235:        else if (0 == strcmp(p, "mvme68k"))
        !           236:                return(ARCH_mvme68k);
        !           237:        else if (0 == strcmp(p, "mvme88k"))
        !           238:                return(ARCH_mvme88k);
        !           239:        else if (0 == strcmp(p, "mvmeppc"))
        !           240:                return(ARCH_mvmeppc);
        !           241:        else if (0 == strcmp(p, "pmax"))
        !           242:                return(ARCH_pmax);
        !           243:        else if (0 == strcmp(p, "sgi"))
        !           244:                return(ARCH_sgi);
        !           245:        else if (0 == strcmp(p, "socppc"))
        !           246:                return(ARCH_socppc);
        !           247:        else if (0 == strcmp(p, "sparc"))
        !           248:                return(ARCH_sparc);
        !           249:        else if (0 == strcmp(p, "sparc64"))
        !           250:                return(ARCH_sparc64);
        !           251:        else if (0 == strcmp(p, "sun3"))
        !           252:                return(ARCH_sun3);
        !           253:        else if (0 == strcmp(p, "vax"))
        !           254:                return(ARCH_vax);
        !           255:        else if (0 == strcmp(p, "zaurus"))
        !           256:                return(ARCH_zaurus);
        !           257:
        !           258:        return(ARCH_DEFAULT);
        !           259: }

CVSweb