Annotation of 43BSDReno/contrib/isode-beta/h/psap.h, revision 1.1.1.1

1.1       root        1: /* psap.h - include file for presentation users (PS-USER) */
                      2: 
                      3: /* 
                      4:  * $Header: /f/osi/h/RCS/psap.h,v 7.3 90/07/27 08:44:43 mrose Exp $
                      5:  *
                      6:  *
                      7:  * $Log:       psap.h,v $
                      8:  * Revision 7.3  90/07/27  08:44:43  mrose
                      9:  * update
                     10:  * 
                     11:  * Revision 7.2  90/07/01  21:03:50  mrose
                     12:  * pepsy
                     13:  * 
                     14:  * Revision 7.1  90/03/22  08:39:21  mrose
                     15:  * touch-up
                     16:  * 
                     17:  * Revision 7.0  89/11/23  21:55:52  mrose
                     18:  * Release 6.0
                     19:  * 
                     20:  */
                     21: 
                     22: /*
                     23:  *                               NOTICE
                     24:  *
                     25:  *    Acquisition, use, and distribution of this module and related
                     26:  *    materials are subject to the restrictions of a license agreement.
                     27:  *    Consult the Preface in the User's Manual for the full terms of
                     28:  *    this agreement.
                     29:  *
                     30:  */
                     31: 
                     32: 
                     33: #ifndef        _PSAP_
                     34: #define        _PSAP_
                     35: 
                     36: #ifndef        _MANIFEST_
                     37: #include "manifest.h"
                     38: #endif
                     39: #ifndef        _GENERAL_
                     40: #include "general.h"
                     41: #endif
                     42: #ifndef        OSX
                     43: #ifndef        BSD42
                     44: #include <time.h>
                     45: #else
                     46: #ifndef        timerisset
                     47: #include <sys/time.h>
                     48: #endif
                     49: #endif
                     50: #endif
                     51: #include <math.h>
                     52: 
                     53: /*  */
                     54: 
                     55: typedef struct OIDentifier {
                     56:     int            oid_nelem;          /* number of sub-identifiers */
                     57: 
                     58:     unsigned int *oid_elements;        /* the (ordered) list of sub-identifiers */
                     59: }                      OIDentifier, *OID;
                     60: #define        NULLOID ((OID) 0)
                     61: 
                     62: 
                     63: OID    ode2oid ();
                     64: int    oid_cmp (), elem_cmp ();
                     65: OID    oid_cpy ();
                     66: int    oid_free ();
                     67: #define        oid2ode(i)      oid2ode_aux ((i), 1)
                     68: char   *oid2ode_aux ();
                     69: char   *sprintoid ();
                     70: OID    str2oid ();
                     71: 
                     72: /*  */
                     73: 
                     74: typedef        u_char     PElementClass;
                     75: 
                     76: typedef        u_char     PElementForm;
                     77: 
                     78: typedef u_short    PElementID; /* 0..16383 are meaningful (14 bits) */
                     79: #define        PE_ID_BITS      14
                     80: 
                     81: #define        PE_ID(class,code) \
                     82:        ((int) ((((code) & 0x3fff) << 2) | ((class) & 0x0003)))
                     83: 
                     84: typedef        int        PElementLen;
                     85: 
                     86: 
                     87: typedef u_char   byte, *PElementData;
                     88: #define        NULLPED ((PElementData) 0)
                     89: 
                     90: #define        PEDalloc(s)             ((PElementData) malloc ((unsigned int) (s)))
                     91: 
                     92: #define        PEDrealloc(p, s)        ((PElementData) \
                     93:                                    realloc ((char *) (p), (unsigned int) (s)))
                     94: 
                     95: #define        PEDfree(p)              free ((char *) (p))
                     96: 
                     97: #define        PEDcmp(b1, b2, length)  \
                     98:                        bcmp ((char *) (b1), (char *) (b2), (int) (length))
                     99: 
                    100: #define        PEDcpy(b1, b2, length)  \
                    101:                        bcopy ((char *) (b1), (char *) (b2), (int) (length))
                    102: 
                    103: /*  */
                    104: 
                    105: typedef struct PElement {
                    106:     int            pe_errno;           /* Error codes */
                    107: #define        PE_ERR_NONE     0       /*   No error */
                    108: #define        PE_ERR_OVER     1       /*   Overflow */
                    109: #define        PE_ERR_NMEM     2       /*   Out of memory */
                    110: #define        PE_ERR_BIT      3       /*   No such bit */
                    111: #define        PE_ERR_UTCT     4       /*   Malformed universal timestring */
                    112: #define        PE_ERR_GENT     5       /*   Malformed generalized timestring */
                    113: #define        PE_ERR_MBER     6       /*   No such member */
                    114: #define        PE_ERR_PRIM     7       /*   Not a primitive form */
                    115: #define        PE_ERR_CONS     8       /*   Not a constructor form */
                    116: #define        PE_ERR_TYPE     9       /*   Class/ID mismatch in constructor */
                    117: #define        PE_ERR_OID      10      /*   Malformed object identifier */
                    118: #define        PE_ERR_BITS     11      /*   Malformed bitstring */
                    119: #define PE_ERR_NOSUPP  12      /* type not supported */
                    120: 
                    121:                                /* for the PSAP */
                    122:     int            pe_context;         /* indirect reference */
                    123: #define        PE_DFLT_CTX     0       /*   the default context */
                    124: 
                    125: #define        PE_ID_XTND      0x1f    /* distinguished ID for extension bits */
                    126: #define        PE_ID_MORE      0x80    /* more to come flag */
                    127: #define        PE_ID_MASK      0x7f    /* value in extension byte */
                    128: #define        PE_ID_SHIFT     7
                    129: 
                    130: #define        PE_CLASS_MASK   0xc0    /* identifier class bits (8-7) */
                    131: #define        PE_CLASS_SHIFT  6
                    132: #define        PE_FORM_MASK    0x20    /* identifier form bit (6) */
                    133: #define        PE_FORM_SHIFT   5
                    134: #define        PE_CODE_MASK    0x1f    /* identifier code bits (5-1) + ... */
                    135: #define        PE_CODE_SHIFT   0
                    136: 
                    137:     PElementClass      pe_class;
                    138: #define        PE_CLASS_UNIV   0x0     /*   Universal */
                    139: #define        PE_CLASS_APPL   0x1     /*   Application-wide */
                    140: #define        PE_CLASS_CONT   0x2     /*   Context-specific */
                    141: #define        PE_CLASS_PRIV   0x3     /*   Private-use */
                    142: 
                    143:     PElementForm       pe_form;
                    144: #define        PE_FORM_PRIM    0x0     /*   PRIMitive */
                    145: #define        PE_FORM_CONS    0x1     /*   CONStructor */
                    146: #define        PE_FORM_ICONS   0x2     /*   internal: Inline CONStructor */
                    147: 
                    148:     PElementID pe_id;          /* should be extensible, 14 bits for now */
                    149:                                /* Pseudo Types */
                    150: #define        PE_UNIV_EOC     0x000   /*   End-of-contents */
                    151: 
                    152:                                /* Built-in Types */
                    153: #define        PE_PRIM_BOOL    0x001   /*   Boolean */
                    154: #define        PE_PRIM_INT     0x002   /*   Integer */
                    155: #define        PE_PRIM_BITS    0x003   /*   Bitstring */
                    156: #define        PE_PRIM_OCTS    0x004   /*   Octetstring */
                    157: #define        PE_PRIM_NULL    0x005   /*   Null */
                    158: #define        PE_PRIM_OID     0x006   /*   Object identifier */
                    159: #define        PE_PRIM_ODE     0x007   /*   Object descriptor */
                    160: #define        PE_CONS_EXTN    0x008   /*   External */
                    161: #define PE_PRIM_REAL   0x009   /*   Real */
                    162: #define PE_PRIM_ENUM   0x00a   /*   Enumerated type */
                    163: #define PE_PRIM_ENCR   0x00b   /*   Encrypted */
                    164: #define        PE_CONS_SEQ     0x010   /*   Sequence */
                    165: #define        PE_CONS_SET     0x011   /*   Set */
                    166: 
                    167:                                /* Defined Types */
                    168: #define        PE_DEFN_NUMS    0x012   /*   Numeric String */
                    169: #define        PE_DEFN_PRTS    0x013   /*   Printable String */
                    170: #define        PE_DEFN_T61S    0x014   /*   T.61 String */
                    171: #define        PE_DEFN_VTXS    0x015   /*   Videotex String */
                    172: #define        PE_DEFN_IA5S    0x016   /*   IA5 String */
                    173: #define        PE_DEFN_UTCT    0x017   /*   UTC Time */
                    174: #define        PE_DEFN_GENT    0x018   /*   Generalized Time */
                    175: #define        PE_DEFN_GFXS    0x019   /*   Graphics string (ISO2375) */
                    176: #define        PE_DEFN_VISS    0x01a   /*   Visible string */
                    177: #define        PE_DEFN_GENS    0x01b   /*   General string */
                    178: #define        PE_DEFN_CHRS    0x01c   /*   Character string */
                    179: 
                    180:     PElementLen        pe_len;
                    181: #define        PE_LEN_XTND     0x80    /* long or indefinite form */
                    182: #define        PE_LEN_SMAX     127     /* largest short form */
                    183: #define        PE_LEN_MASK     0x7f    /* mask to get number of bytes in length */
                    184: #define        PE_LEN_INDF     (-1)    /* indefinite length */
                    185: 
                    186:     PElementLen        pe_ilen;
                    187: 
                    188:     union {
                    189:        PElementData     un_pe_prim;    /* PRIMitive value */
                    190:        struct PElement *un_pe_cons;    /* CONStructor head */
                    191:     }                       pe_un1;
                    192: #define        pe_prim pe_un1.un_pe_prim
                    193: #define        pe_cons pe_un1.un_pe_cons
                    194: 
                    195:     union {
                    196:        int         un_pe_cardinal;     /* cardinality of list */
                    197:        int         un_pe_nbits;        /* number of bits in string */
                    198:     }                      pe_un2;
                    199: #define        pe_cardinal     pe_un2.un_pe_cardinal
                    200: #define        pe_nbits        pe_un2.un_pe_nbits
                    201: 
                    202:     int            pe_inline;          /* for "ultra-efficient" PElements */
                    203:     char   *pe_realbase;       /*   .. */
                    204: 
                    205:     int            pe_offset;          /* offset of element in sequence */
                    206: 
                    207:     struct PElement *pe_next;
                    208: 
                    209:     int            pe_refcnt;          /* hack for ANYs in pepy */
                    210: }                      PElement, *PE;
                    211: #define        NULLPE  ((PE) 0)
                    212: #define        NULLPEP ((PE *) 0)
                    213: 
                    214: #define        pe_seterr(pe, e, v)     ((pe) -> pe_errno = (e), (v))
                    215: 
                    216: 
                    217: PE     pe_alloc ();
                    218: int    pe_free ();
                    219: int    pe_cmp ();
                    220: PE     pe_cpy ();
                    221: int    pe_pullup ();
                    222: PE     pe_expunge ();
                    223: int    pe_extract ();
                    224: 
                    225: PE     str2pe ();
                    226: PE     qb2pe ();
                    227: 
                    228: extern int    pe_maxclass;
                    229: extern char  *pe_classlist[];
                    230: 
                    231: extern int    pe_maxuniv;
                    232: extern char  *pe_univlist[];
                    233: 
                    234: extern int    pe_maxappl;
                    235: extern char **pe_applist;
                    236: 
                    237: extern int    pe_maxpriv;
                    238: extern char **pe_privlist;
                    239: 
                    240: /*  */
                    241: 
                    242: typedef struct UTCtime {
                    243:     int            ut_year;
                    244:     int            ut_mon;
                    245:     int            ut_mday;
                    246:     int            ut_hour;
                    247:     int            ut_min;
                    248:     int            ut_sec;
                    249: 
                    250:     int            ut_usec;
                    251: 
                    252:     int            ut_zone;
                    253: 
                    254:     int            ut_flags;
                    255: #define        UT_NULL         0x00
                    256: #define        UT_ZONE         0x01
                    257: #define        UT_SEC          0x02
                    258: #define        UT_USEC         0x04
                    259: }                      UTCtime, *UTC;
                    260: #define        NULLUTC ((UTC) 0)
                    261: 
                    262: 
                    263: void   tm2ut ();
                    264: long   gtime ();
                    265: struct tm *ut2tm ();
                    266: 
                    267: /*  */
                    268: 
                    269: extern char *psapversion;
                    270: 
                    271: 
                    272: int    prim2flag ();
                    273: PE     flag2prim ();
                    274: #define        bool2prim(b)            flag2prim ((b), PE_CLASS_UNIV, PE_PRIM_BOOL)
                    275: 
                    276: int    prim2num ();
                    277: PE     num2prim ();
                    278: #define        int2prim(i)             num2prim ((i), PE_CLASS_UNIV, PE_PRIM_INT)
                    279: 
                    280: 
                    281: #define        prim2enum(i)            prim2num((i))
                    282: #define enum2prim(a,b,c)       num2prim((a), (b), (c))
                    283: #define enumint2prim(i)                enum2prim ((i), PE_CLASS_UNIV, PE_PRIM_ENUM)
                    284: 
                    285: 
                    286: /* psap REAL parameters - tons of 'em */
                    287: #define PE_REAL_FLAGS  0300    /* flag bits of real */
                    288: #define        PE_REAL_BINENC  0200    /* binary encoding */
                    289: #define        PE_REAL_DECENC  0000    /* decimal encoding */
                    290: #define        PE_REAL_SPECENC 0100    /* special encoding */
                    291: 
                    292: #define PE_REAL_B_S    0100    /* sign bit */
                    293: #define PE_REAL_B_BASE 0060    /* base bits */
                    294: #define        PE_REAL_B_B2    0000
                    295: #define        PE_REAL_B_B8    0020
                    296: #define        PE_REAL_B_B16   0040
                    297: 
                    298: #define PE_REAL_B_F    0014    /* factor bits */
                    299: #define PE_REAL_B_EXP  0003    /* exponent type bits */
                    300: #define                PE_REAL_B_EF1   0000
                    301: #define        PE_REAL_B_EF2   0001
                    302: #define                PE_REAL_B_EF3   0002
                    303: #define                PE_REAL_B_EF4   0003
                    304: 
                    305: #define        PE_REAL_PLUSINF         0200
                    306: #define PE_REAL_MINUSINF       0201
                    307: 
                    308: #ifndef HUGE
                    309: #ifdef MAXFLOAT
                    310: #define PE_REAL_INFINITY       MAXFLOAT
                    311: #else
                    312: #define        PE_REAL_INFINITY        99.e99
                    313: #endif
                    314: #else
                    315: #define PE_REAL_INFINITY       HUGE
                    316: #endif
                    317: 
                    318: double prim2real ();
                    319: PE     real2prim ();
                    320: #define double2prim(i)         real2prim ((i), PE_CLASS_UNIV, PE_PRIM_REAL)
                    321: 
                    322: 
                    323: char   *prim2str ();
                    324: PE     str2prim ();
                    325: struct qbuf *prim2qb ();
                    326: PE     qb2prim_aux ();         /* really should be qb2pe () */
                    327: #define        qb2prim(q,c,i)          qb2prim_aux ((q), (c), (i), 0)
                    328: #define        oct2prim(s,len)         str2prim ((s), (len), \
                    329:                                            PE_CLASS_UNIV, PE_PRIM_OCTS)
                    330: #define        ia5s2prim(s,len)        str2prim ((s), (len), \
                    331:                                            PE_CLASS_UNIV, PE_DEFN_IA5S)
                    332: #define        nums2prim(s,len)        str2prim ((s), (len), \
                    333:                                            PE_CLASS_UNIV, PE_DEFN_NUMS)
                    334: #define        prts2prim(s,len)        str2prim ((s), (len), \
                    335:                                            PE_CLASS_UNIV, PE_DEFN_PRTS)
                    336: #define        t61s2prim(s,len)        str2prim ((s), (len), \
                    337:                                            PE_CLASS_UNIV, PE_DEFN_T61S)
                    338: #define        vtxs2prim(s,len)        str2prim ((s), (len), \
                    339:                                            PE_CLASS_UNIV, PE_DEFN_VTXS)
                    340: #define        gfxs2prim(s,len)        str2prim ((s), (len), \
                    341:                                            PE_CLASS_UNIV, PE_DEFN_GFXS)
                    342: #define        viss2prim(s,len)        str2prim ((s), (len), \
                    343:                                            PE_CLASS_UNIV, PE_DEFN_VISS)
                    344: #define        gens2prim(s,len)        str2prim ((s), (len), \
                    345:                                            PE_CLASS_UNIV, PE_DEFN_GENS)
                    346: #define        chrs2prim(s,len)        str2prim ((s), (len), \
                    347:                                            PE_CLASS_UNIV, PE_DEFN_CHRS)
                    348: #define        ode2prim(s,len)         str2prim ((s), (len), \
                    349:                                            PE_CLASS_UNIV, PE_PRIM_ODE)
                    350: 
                    351: PE     prim2bit ();
                    352: PE     bit2prim ();
                    353: 
                    354: int    bit_on (), bit_off ();
                    355: int    bit_test ();
                    356: 
                    357: OID    prim2oid ();
                    358: PE     obj2prim ();
                    359: #define        oid2prim(o)             obj2prim ((o), PE_CLASS_UNIV, PE_PRIM_OID)
                    360: 
                    361: UTC    prim2time ();
                    362: #define        prim2utct(pe)           prim2time ((pe), 0)
                    363: #define        prim2gent(pe)           prim2time ((pe), 1)
                    364: PE     time2prim ();
                    365: #define        utct2prim(u)            time2prim ((u), 0, PE_CLASS_UNIV, PE_DEFN_UTCT)
                    366: #define        gent2prim(u)            time2prim ((u), 1, PE_CLASS_UNIV, PE_DEFN_GENT)
                    367: char   *time2str ();
                    368: #define        utct2str(u)             time2str ((u), 0)
                    369: #define        gent2str(u)             time2str ((u), 1)
                    370: UTC    str2utct (), str2gent ();
                    371: 
                    372: PE     prim2set ();
                    373: #define        set2prim(pe)            (pe)
                    374: int    set_add (), set_addon (), set_del ();
                    375: PE     set_find ();
                    376: #define        first_member(pe)        ((pe) -> pe_cons)
                    377: #define        next_member(pe,p)       ((p) -> pe_next)
                    378: 
                    379: #define        prim2seq(pe)            (prim2set (pe))
                    380: #define        seq2prim(pe)            (pe)
                    381: int    seq_add (), seq_addon (), seq_del ();
                    382: PE     seq_find ();
                    383: 
                    384: 
                    385: char   *pe_error ();
                    386: 
                    387: /*  */
                    388: 
                    389: typedef struct {
                    390:     int            ps_errno;           /* Error codes */
                    391: #define        PS_ERR_NONE      0      /*   No error */
                    392: #define        PS_ERR_OVERID    1      /*   Overflow in ID */
                    393: #define        PS_ERR_OVERLEN   2      /*   Overflow in length */
                    394: #define        PS_ERR_NMEM      3      /*   Out of memory */
                    395: #define        PS_ERR_EOF       4      /*   End of file */
                    396: #define        PS_ERR_EOFID     5      /*   End of file reading extended ID */
                    397: #define        PS_ERR_EOFLEN    6      /*   End of file reading extended length */
                    398: #define        PS_ERR_LEN       7      /*   Length mismatch */
                    399: #define        PS_ERR_TRNC      8      /*   Truncated */
                    400: #define        PS_ERR_INDF      9      /*   Indefinite length in primitive form */
                    401: #define        PS_ERR_IO       10      /*   I/O error */
                    402: #define        PS_ERR_XXX      11      /*   XXX */
                    403: 
                    404:     union {
                    405:        caddr_t un_ps_addr;
                    406:        struct {
                    407:            char   *st_ps_base;
                    408:            int     st_ps_cnt;
                    409:            char   *st_ps_ptr;
                    410:            int     st_ps_bufsiz;
                    411:        }                       un_ps_st;
                    412:        struct {
                    413:            struct udvec *uv_ps_head;
                    414:            struct udvec *uv_ps_cur;
                    415:            struct udvec *uv_ps_end;
                    416:            int     uv_ps_elems;
                    417:            int     uv_ps_slop;
                    418:            int     uv_ps_cc;
                    419:        }                       un_ps_uv;
                    420:     }                       ps_un;
                    421: #define        ps_addr ps_un.un_ps_addr
                    422: #define        ps_base ps_un.un_ps_st.st_ps_base
                    423: #define        ps_cnt  ps_un.un_ps_st.st_ps_cnt
                    424: #define        ps_ptr  ps_un.un_ps_st.st_ps_ptr
                    425: #define        ps_bufsiz       ps_un.un_ps_st.st_ps_bufsiz
                    426: #define        ps_head ps_un.un_ps_uv.uv_ps_head
                    427: #define        ps_cur  ps_un.un_ps_uv.uv_ps_cur
                    428: #define        ps_end  ps_un.un_ps_uv.uv_ps_end
                    429: #define        ps_elems        ps_un.un_ps_uv.uv_ps_elems
                    430: #define        ps_slop ps_un.un_ps_uv.uv_ps_slop
                    431: #define        ps_cc   ps_un.un_ps_uv.uv_ps_cc
                    432: 
                    433:     caddr_t ps_extra;          /* for George's recursive PStreams */
                    434: 
                    435:     int            ps_inline;          /* for "ultra-efficient" PStreams */
                    436: 
                    437:     int            ps_scratch;         /* XXX */
                    438: 
                    439:     int            ps_byteno;          /* byte position */
                    440: 
                    441:     IFP            ps_primeP;
                    442:     IFP            ps_readP;
                    443:     IFP            ps_writeP;
                    444:     IFP            ps_flushP;
                    445:     IFP            ps_closeP;
                    446: }                      PStream, *PS;
                    447: #define        NULLPS  ((PS) 0)
                    448: 
                    449: #define        ps_seterr(ps, e, v)     ((ps) -> ps_errno = (e), (v))
                    450: 
                    451: 
                    452: PS     ps_alloc ();
                    453: void   ps_free ();
                    454: 
                    455: int    ps_io ();
                    456: #define        ps_read(ps, data, cc)   ps_io ((ps), (ps) -> ps_readP, (data), (cc), 0)
                    457: #define        ps_write(ps, data, cc)  ps_write_aux ((ps), (data), (cc), 0)
                    458: #define        ps_write_aux(ps, data, cc, inline) \
                    459:        ps_io ((ps), (ps) -> ps_writeP, (data), (cc), (inline))
                    460: 
                    461: int    ps_flush ();
                    462: 
                    463: int    std_open ();
                    464: #define        std_setup(ps, fp)       ((ps) -> ps_addr = (caddr_t) (fp), OK)
                    465: 
                    466: int    str_open ();
                    467: int    str_setup ();
                    468: 
                    469: int    dg_open ();
                    470: int    dg_setup ();
                    471: 
                    472: int    fdx_open ();
                    473: int    fdx_setup ();
                    474: 
                    475: int    qbuf_open ();
                    476: #define        qbuf_setup(ps, qb)      ((ps) -> ps_addr = (caddr_t) (qb), OK)
                    477: 
                    478: #define        ts_open dg_open
                    479: #define        ts_setup(p,f,s)         dg_setup ((p), (f), (s), ts_read, ts_write)
                    480: int    ts_read (), ts_write ();
                    481: 
                    482: int    uvec_open ();
                    483: int    uvec_setup ();
                    484: 
                    485: 
                    486: #define        ps2pe(ps)               ps2pe_aux ((ps), 1, 1)
                    487: PE     ps2pe_aux ();
                    488: #define        pe2ps(ps, pe)           pe2ps_aux ((ps), (pe), 1)
                    489: int    pe2ps_aux ();
                    490: 
                    491: 
                    492: PE     pl2pe ();
                    493: int    pe2pl ();
                    494: 
                    495: 
                    496: extern int    ps_len_strategy;
                    497: #define        PS_LEN_SPAG     0
                    498: #define        PS_LEN_INDF     1
                    499: #define        PS_LEN_LONG     2
                    500: 
                    501: int    ps_get_abs ();
                    502: 
                    503: 
                    504: char   *ps_error ();
                    505: 
                    506: /*  */
                    507: 
                    508: struct isobject {
                    509:     char   *io_descriptor;
                    510: 
                    511:     OIDentifier io_identity;
                    512: };
                    513: 
                    514: int    setisobject (), endisobject ();
                    515: 
                    516: struct isobject *getisobject ();
                    517: 
                    518: struct isobject *getisobjectbyname ();
                    519: struct isobject *getisobjectbyoid ();
                    520: 
                    521: /*  */
                    522: 
                    523: PE     qbuf2pe ();
                    524: char   *qb2str ();
                    525: struct qbuf *str2qb ();
                    526: int    qb_free ();
                    527: 
                    528: int    pe2ssdu ();
                    529: PE     ssdu2pe ();
                    530: 
                    531: void   pe2text (), text2pe ();
                    532: 
                    533: int    pe2uvec ();
                    534: 
                    535: char   *int2strb ();
                    536: int    strb2int ();
                    537: 
                    538: PE     strb2bitstr ();
                    539: char   *bitstr2strb ();
                    540: 
                    541: /*  */
                    542: 
                    543: extern char PY_pepy[];
                    544: 
                    545: void   PY_advise ();
                    546: int    PY_pp ();
                    547: 
                    548: int    testdebug ();
                    549: 
                    550: int    vpush (), vpop ();
                    551: int    vname (), vtag ();
                    552: int    vprint ();
                    553: int    vstring (), vunknown ();
                    554: 
                    555: char   *bit2str ();
                    556: 
                    557: int    vpushfp (), vpopfp ();
                    558: 
                    559: int    vpushstr (), vpopstr ();
                    560: 
                    561: int    vpushpp (), vpopp ();
                    562: 
                    563: #ifdef PEPSY_VERSION
                    564: /* handle calls to the vunknown print routine */
                    565: #define vunknown_P     0, ((modtyp *) 0)
                    566: 
                    567: /*
                    568:  * vpdu now comes out of the closet as a real pepsy function "pvpdu" we
                    569:  * keep the #define for vpdu for backwards compatiability of other peoples'
                    570:  * code
                    571:  */
                    572: #ifdef __STDC__
                    573: #define        vpdu(lp,fnx,pe,text,rw) \
                    574: { \
                    575:     pvpdu ((lp), fnx##_P, (pe), (text), (rw)); \
                    576: }
                    577: #else   /* __STDC__ */
                    578: #define        vpdu(lp,fnx,pe,text,rw) \
                    579: { \
                    580:     pvpdu ((lp), fnx/**/_P, (pe), (text), (rw)); \
                    581: }
                    582: #endif /* __STDC__ */
                    583: 
                    584: #else
                    585:        /* Backwards compatibility with posy/pepy */
                    586: #define vpdu(lp,fnx,pe,text,rw) \
                    587: { \
                    588:     int    fnx (); \
                    589:  \
                    590:     _vpdu ((lp), fnx, (pe), (text), (rw)); \
                    591: }
                    592: 
                    593: int     _vpdu ();
                    594: #endif
                    595: 
                    596: /* pepy string definitions */
                    597: extern char *pepy_strings[];
                    598: 
                    599: #define         PEPY_ERR_BAD                   (pepy_strings[0])
                    600: #define         PEPY_ERR_BAD_BITS              (pepy_strings[1])
                    601: #define         PEPY_ERR_BAD_BOOLEAN           (pepy_strings[2])
                    602: #define         PEPY_ERR_BAD_CLASS             (pepy_strings[3])
                    603: #define         PEPY_ERR_BAD_CLASS_FORM_ID     (pepy_strings[4])
                    604: #define         PEPY_ERR_BAD_FORM              (pepy_strings[5])
                    605: #define         PEPY_ERR_BAD_INTEGER           (pepy_strings[6])
                    606: #define         PEPY_ERR_BAD_OID               (pepy_strings[7])
                    607: #define         PEPY_ERR_BAD_OCTET             (pepy_strings[8])
                    608: #define         PEPY_ERR_BAD_REAL              (pepy_strings[9])
                    609: #define         PEPY_ERR_BAD_SEQ               (pepy_strings[10])
                    610: #define         PEPY_ERR_BAD_SET               (pepy_strings[11])
                    611: #define         PEPY_ERR_TOO_MANY_BITS         (pepy_strings[12])
                    612: #define         PEPY_ERR_TOO_MANY_ELEMENTS     (pepy_strings[13])
                    613: #define         PEPY_ERR_UNKNOWN_CHOICE        (pepy_strings[14])
                    614: #define         PEPY_ERR_UNK_COMP              (pepy_strings[15])
                    615: #define         PEPY_ERR_INIT_FAILED           (pepy_strings[16])
                    616: #define         PEPY_ERR_INVALID_CHOICE        (pepy_strings[17])
                    617: #define         PEPY_ERR_MISSING               (pepy_strings[18])
                    618: #define         PEPY_ERR_NOMEM                 (pepy_strings[19])
                    619: #define         PEPY_ERR_TOO_MANY_TAGGED       (pepy_strings[20])
                    620: #define         PEPY_ERR_EXTRA_MEMBERS         (pepy_strings[21])
                    621: 
                    622: #endif

unix.superglobalmegacorp.com

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