Annotation of 43BSDReno/contrib/isode-beta/ssap/str2spkt.c, revision 1.1

1.1     ! root        1: /* str2spkt.c - read/write a SPDU thru a string */
        !             2: 
        !             3: #ifndef        lint
        !             4: static char *rcsid = "$Header: /f/osi/ssap/RCS/str2spkt.c,v 7.0 89/11/23 22:25:53 mrose Rel $";
        !             5: #endif
        !             6: 
        !             7: /* 
        !             8:  * $Header: /f/osi/ssap/RCS/str2spkt.c,v 7.0 89/11/23 22:25:53 mrose Rel $
        !             9:  *
        !            10:  *
        !            11:  * $Log:       str2spkt.c,v $
        !            12:  * Revision 7.0  89/11/23  22:25:53  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 "spkt.h"
        !            32: #include "tailor.h"
        !            33: 
        !            34: /*  */
        !            35: 
        !            36: char   *spkt2str (s)
        !            37: struct ssapkt *s;
        !            38: {
        !            39:     int     i,
        !            40:            len;
        !            41:     char   *base,
        !            42:           *dp;
        !            43:     static char buffer[(CONNECT_MAX + BUFSIZ) * 2 + 1];
        !            44: 
        !            45:     if (spkt2tsdu (s, &base, &len) == NOTOK)
        !            46:        return NULLCP;
        !            47:     if (s -> s_udata)
        !            48:        switch (s -> s_code) {
        !            49:            case SPDU_DT:
        !            50:                if (s -> s_mask & SMASK_SPDU_GT)
        !            51:                    break;      /* else fall */
        !            52:            case SPDU_EX:
        !            53:            case SPDU_TD:
        !            54:                if ((dp = realloc (base, (unsigned) (i = len + s -> s_ulen)))
        !            55:                        == NULL) {
        !            56:                    free (base);
        !            57:                    return NULLCP;
        !            58:                }
        !            59:                bcopy (s -> s_udata, (base = dp) + len, s -> s_ulen);
        !            60:                len = i;
        !            61:                break;
        !            62: 
        !            63:            default:
        !            64:                break;
        !            65:        }
        !            66: 
        !            67:     buffer[explode (buffer, (u_char *) base, len)] = NULL;
        !            68:     if (len > 0)
        !            69:        free (base);
        !            70: 
        !            71: #ifdef DEBUG
        !            72:     if (ssap_log -> ll_events & LLOG_PDUS) {
        !            73:        LLOG (ssap_log, LLOG_PDUS,
        !            74:              ("write %d bytes, \"%s\"", strlen (buffer), buffer));
        !            75:        spkt2text (ssap_log, s, 0);
        !            76:     }
        !            77: #endif
        !            78: 
        !            79:     return buffer;
        !            80: }
        !            81: 
        !            82: /*  */
        !            83: 
        !            84: struct ssapkt *str2spkt (buffer)
        !            85: char  *buffer;
        !            86: {
        !            87:     int            cc;
        !            88:     char    packet[CONNECT_MAX + BUFSIZ];
        !            89:     register struct ssapkt *s;
        !            90:     struct qbuf qbs;
        !            91:     register struct qbuf *qb = &qbs,
        !            92:                         *qp;
        !            93: 
        !            94:     bzero ((char *) qb, sizeof *qb);
        !            95:     qb -> qb_forw = qb -> qb_back = qb;
        !            96: 
        !            97:     cc = implode ((u_char *) packet, buffer, strlen (buffer));
        !            98:     if ((qp = (struct qbuf *) malloc (sizeof *qp + (unsigned) cc)) == NULL)
        !            99:        s = NULLSPKT;
        !           100:     else {
        !           101:        bcopy (packet, qp -> qb_data = qp -> qb_base, qp -> qb_len = cc);
        !           102:        insque (qp, qb -> qb_back);
        !           103:        s = tsdu2spkt (qb, cc, NULLIP);
        !           104:        QBFREE (qb);
        !           105:     }
        !           106: 
        !           107: #ifdef DEBUG
        !           108:     if (ssap_log -> ll_events & LLOG_PDUS) {
        !           109:        LLOG (ssap_log, LLOG_PDUS,
        !           110:              ("read %d bytes, \"%s\"", strlen (buffer), buffer));
        !           111:        spkt2text (ssap_log, s, 1);
        !           112:     }
        !           113: #endif
        !           114: 
        !           115:     return s;
        !           116: }

unix.superglobalmegacorp.com

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