Annotation of 43BSDReno/contrib/isode-beta/ftam/ftamfaduid.c, revision 1.1.1.1

1.1       root        1: /* ftamfaduid.c - FPM: encode/decode FADU identities */
                      2: 
                      3: #ifndef        lint
                      4: static char *rcsid = "$Header: /f/osi/ftam/RCS/ftamfaduid.c,v 7.0 89/11/23 21:53:36 mrose Rel $";
                      5: #endif
                      6: 
                      7: /* 
                      8:  * $Header: /f/osi/ftam/RCS/ftamfaduid.c,v 7.0 89/11/23 21:53:36 mrose Rel $
                      9:  *
                     10:  *
                     11:  * $Log:       ftamfaduid.c,v $
                     12:  * Revision 7.0  89/11/23  21:53:36  mrose
                     13:  * Release 6.0
                     14:  * 
                     15:  */
                     16: 
                     17: /*
                     18:  *                               NOTICE
                     19:  *
                     20:  *    Acquisition, use, and distribution of this module and related
                     21:  *    materials are subject to the restrictions of a license agreement.
                     22:  *    Consult the Preface in the User's Manual for the full terms of
                     23:  *    this agreement.
                     24:  *
                     25:  */
                     26: 
                     27: 
                     28: /* LINTLIBRARY */
                     29: 
                     30: #include <stdio.h>
                     31: #include "fpkt.h"
                     32: 
                     33: /*  */
                     34: 
                     35: struct type_FTAM_FADU__Identity *faduid2fpm (fsb, fa, fti)
                     36: register struct ftamblk *fsb;
                     37: register struct FADUidentity *fa;
                     38: struct FTAMindication *fti;
                     39: {
                     40:     register int    n;
                     41:     register char **ap;
                     42:     register struct type_FTAM_FADU__Identity *fpm;
                     43:     register struct name_element **f4;
                     44: 
                     45:     if ((fpm = (struct type_FTAM_FADU__Identity *) calloc (1, sizeof *fpm))
                     46:            == NULL) {
                     47: no_mem: ;
                     48:        (void) ftamlose (fti, FS_GEN (fsb), 1, NULLCP, "out of memory");
                     49: out: ;
                     50:        if (fpm)
                     51:            free_FTAM_FADU__Identity (fpm);
                     52:        return NULL;
                     53:     }
                     54: 
                     55:     switch (fa -> fa_type) {
                     56:        case FA_FIRSTLAST:
                     57:            fpm -> offset = type_FTAM_FADU__Identity_first__last;
                     58:            switch (fa -> fa_firstlast) {
                     59:                case FA_FIRST:
                     60:                case FA_LAST:
                     61:                    break;
                     62: 
                     63:                default:
                     64: bad_value:;
                     65:                    (void) ftamlose (fti, FS_GEN (fsb), 0, NULLCP,
                     66:                                     "bad value in FADU identity");
                     67:                    goto out;
                     68:            }
                     69:            fpm -> un.first__last = fa -> fa_firstlast;
                     70:            break;
                     71: 
                     72:        case FA_RELATIVE:
                     73:            fpm -> offset = type_FTAM_FADU__Identity_relative;
                     74:            switch (fa -> fa_relative) {
                     75:                case FA_PREVIOUS:
                     76:                case FA_CURRENT:
                     77:                case FA_NEXT:
                     78:                    break;
                     79: 
                     80:                default:
                     81:                    goto bad_value;
                     82:            }
                     83:            fpm -> un.relative = fa -> fa_relative;
                     84:            break;
                     85: 
                     86:        case FA_BEGINEND:
                     87:            fpm -> offset = type_FTAM_FADU__Identity_begin__end;
                     88:            switch (fa -> fa_beginend) {
                     89:                case FA_BEGIN:
                     90:                case FA_END:
                     91:                    break;
                     92: 
                     93:                default:
                     94:                    goto out;
                     95:            }
                     96:            fpm -> un.begin__end = fa -> fa_beginend;
                     97:            break;
                     98: 
                     99:        case FA_SINGLE:
                    100:            if (!fa -> fa_singlename)
                    101:                goto bad_value;
                    102:            fpm -> offset = type_FTAM_FADU__Identity_single__name;
                    103:            if ((fpm -> un.single__name =
                    104:                        str2qb (fa -> fa_singlename,
                    105:                                strlen (fa -> fa_singlename),
                    106:                                1)) == NULL)
                    107:                goto no_mem;
                    108:            break;
                    109: 
                    110:        case FA_NAMELIST:
                    111:            f4 = &fpm -> un.name__list;
                    112:            for (n = fa -> fa_nname - 1, ap = fa -> fa_names;
                    113:                     n >= 0;
                    114:                     ap++, n--) {
                    115:                if (!*ap)
                    116:                    goto bad_value;
                    117:                if ((*f4 = (struct name_element *) calloc (1, sizeof **f4))
                    118:                            == NULL
                    119:                        || ((*f4) -> Node__Name =
                    120:                                str2qb (*ap, strlen (*ap), 1)) == NULL)
                    121:                    goto no_mem;
                    122:                f4 = &((*f4) -> next);
                    123:            }
                    124:            break;
                    125: 
                    126:        case FA_FADUNUMBER:
                    127:            fpm -> offset = type_FTAM_FADU__Identity_fadu__number;
                    128:            fpm -> un.fadu__number = fa -> fa_fadunumber;
                    129:            break;
                    130: 
                    131:        default:
                    132:            (void) ftamlose (fti, FS_GEN (fsb), 0, NULLCP,
                    133:                             "bad type for FADU identity");
                    134:            goto out;
                    135:     }
                    136: 
                    137:     return fpm;
                    138: }
                    139: 
                    140: /*  */
                    141: 
                    142: int    fpm2faduid (fsb, fpm, fa, fti)
                    143: register struct ftamblk *fsb;
                    144: register struct type_FTAM_FADU__Identity *fpm;
                    145: register struct FADUidentity *fa;
                    146: struct FTAMindication *fti;
                    147: {
                    148:     register int    n;
                    149:     register char **ap;
                    150:     register struct name_element *f4;
                    151: 
                    152:     bzero ((char *) fa, sizeof *fa);
                    153: 
                    154:     switch (fpm -> offset) {
                    155:        case type_FTAM_FADU__Identity_first__last:
                    156:            fa -> fa_type = FA_FIRSTLAST;
                    157:            fa -> fa_firstlast = fpm -> un.first__last;
                    158:            break;
                    159: 
                    160:        case type_FTAM_FADU__Identity_relative:
                    161:            fa -> fa_type = FA_RELATIVE;
                    162:            fa -> fa_relative = fpm -> un.relative;
                    163:            break;
                    164: 
                    165:        case type_FTAM_FADU__Identity_begin__end:
                    166:            fa -> fa_type = FA_BEGINEND;
                    167:            fa -> fa_beginend = fpm -> un.begin__end;
                    168:            break;
                    169: 
                    170:        case type_FTAM_FADU__Identity_single__name:
                    171:            fa -> fa_type = FA_SINGLE;
                    172:            if ((fa -> fa_singlename = qb2str (fpm -> un.single__name))
                    173:                    == NULL) {
                    174: no_mem: ;
                    175:                FUFREE (fa);
                    176:                return ftamlose (fti, FS_GEN (fsb), 1, NULLCP,
                    177:                                 "out of memory");
                    178:            }
                    179:            break;
                    180: 
                    181:        case type_FTAM_FADU__Identity_name__list:
                    182:            fa -> fa_type = FA_NAMELIST;
                    183:            ap = fa -> fa_names, n = NANAME;
                    184:            for (f4 = fpm -> un.name__list; f4; f4 = f4 -> next) {
                    185:                if (n-- <= 0) {
                    186:                    FUFREE (fa);
                    187:                    return ftamlose (fti, FS_GEN (fsb), 1, NULLCP,
                    188:                                     "too many nodes in FADU name");
                    189:                }
                    190:                if ((*ap++ = qb2str (f4 -> Node__Name)) == NULL)
                    191:                    goto no_mem;
                    192:            }
                    193:            break;
                    194: 
                    195:        case type_FTAM_FADU__Identity_fadu__number:
                    196:            fa -> fa_type = FA_FADUNUMBER;
                    197:            fa -> fa_fadunumber = fpm -> un.fadu__number;
                    198:            break;
                    199:     }
                    200: 
                    201:     return OK;
                    202: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.