|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.