|
|
1.1 ! root 1: /* qb2prim.c - octet string to primitive */ ! 2: ! 3: #ifndef lint ! 4: static char *rcsid = "$Header: /f/osi/psap/RCS/qb2prim.c,v 7.2 90/03/23 11:05:53 mrose Exp $"; ! 5: #endif ! 6: ! 7: /* ! 8: * $Header: /f/osi/psap/RCS/qb2prim.c,v 7.2 90/03/23 11:05:53 mrose Exp $ ! 9: * ! 10: * ! 11: * $Log: qb2prim.c,v $ ! 12: * Revision 7.2 90/03/23 11:05:53 mrose ! 13: * typo ! 14: * ! 15: * Revision 7.1 90/03/22 08:38:15 mrose ! 16: * touch-up ! 17: * ! 18: * Revision 7.0 89/11/23 22:13:29 mrose ! 19: * Release 6.0 ! 20: * ! 21: */ ! 22: ! 23: /* ! 24: * NOTICE ! 25: * ! 26: * Acquisition, use, and distribution of this module and related ! 27: * materials are subject to the restrictions of a license agreement. ! 28: * Consult the Preface in the User's Manual for the full terms of ! 29: * this agreement. ! 30: * ! 31: */ ! 32: ! 33: ! 34: /* LINTLIBRARY */ ! 35: ! 36: #include <stdio.h> ! 37: #include "psap.h" ! 38: ! 39: /* form: PRIMitive or CONStructor -- ! 40: ! 41: qb2prim - octet string (via qbufs) to presentation element ! 42: ! 43: */ ! 44: ! 45: /* */ ! 46: ! 47: PE qb2prim_aux (qb, class, id, in_line) ! 48: register struct qbuf *qb; ! 49: PElementClass class; ! 50: PElementID id; ! 51: int in_line; ! 52: { ! 53: register PE pe, ! 54: p; ! 55: register struct qbuf *qp; ! 56: ! 57: if (qb == NULL) ! 58: return NULLPE; ! 59: ! 60: if ((qp = qb -> qb_forw) == qb || qp -> qb_forw == qb) { ! 61: if ((pe = pe_alloc (class, PE_FORM_PRIM, id)) == NULLPE) ! 62: return NULLPE; ! 63: ! 64: if (in_line) { ! 65: if (pe -> pe_len = qp -> qb_len) ! 66: pe -> pe_prim = (PElementData) qp -> qb_data; ! 67: pe -> pe_inline = 1; ! 68: } ! 69: else ! 70: if (pe -> pe_len = qp -> qb_len) { ! 71: if ((pe -> pe_prim = PEDalloc (pe -> pe_len)) == NULLPED) ! 72: goto no_mem; ! 73: PEDcpy (qp -> qb_data, pe -> pe_prim, pe -> pe_len); ! 74: } ! 75: } ! 76: else { ! 77: if ((pe = pe_alloc (class, PE_FORM_CONS, id)) == NULLPE) ! 78: return NULLPE; ! 79: ! 80: do { ! 81: if (seq_add (pe, p = pe_alloc (PE_CLASS_UNIV, PE_FORM_PRIM, ! 82: PE_PRIM_OCTS), -1) == NOTOK) { ! 83: no_mem: ; ! 84: pe_free (pe); ! 85: return NULLPE; ! 86: } ! 87: ! 88: p -> pe_len = qp -> qb_len; ! 89: if (in_line) { ! 90: p -> pe_prim = (PElementData) qp -> qb_data; ! 91: p -> pe_inline = 1; ! 92: } ! 93: else { ! 94: if ((p -> pe_prim = PEDalloc (p -> pe_len)) == NULLPED) ! 95: goto no_mem; ! 96: PEDcpy (qp -> qb_data, p -> pe_prim, p -> pe_len); ! 97: } ! 98: ! 99: qp = qp -> qb_forw; ! 100: } ! 101: while (qp != qb); ! 102: } ! 103: ! 104: return pe; ! 105: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.