Annotation of 43BSDReno/contrib/isode-beta/pepsy/vprint.c, revision 1.1.1.1

1.1       root        1: /* vprint.c - pepy printer support */
                      2: 
                      3: #ifndef        lint
                      4: static char *rcsid = "$Header: /f/osi/pepsy/RCS/vprint.c,v 7.1 90/07/27 08:49:12 mrose Exp $";
                      5: #endif
                      6: 
                      7: /* 
                      8:  * $Header: /f/osi/pepsy/RCS/vprint.c,v 7.1 90/07/27 08:49:12 mrose Exp $
                      9:  *
                     10:  *
                     11:  * $Log:       vprint.c,v $
                     12:  * Revision 7.1  90/07/27  08:49:12  mrose
                     13:  * update
                     14:  * 
                     15:  * Revision 7.0  90/07/01  19:54:34  mrose
                     16:  * *** empty log message ***
                     17:  * 
                     18:  * Revision 7.0  89/11/23  22:12:08  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 <ctype.h>
                     37: #include <stdio.h>
                     38: #include <varargs.h>
                     39: #include "UNIV-types.h"
                     40: #include "psap.h"
                     41: #include "pepsy.h"
                     42: #include "logger.h"
                     43: 
                     44: 
                     45: int    fprintf ();
                     46: 
                     47: /*    DATA */
                     48: 
                     49: #define        VPRINT(s)       vprint1 (), vwrite ((s)), vprint2 ()
                     50: 
                     51: static int vlevel = 0;
                     52: 
                     53: static int didname = 0;
                     54: static int didvpop = 0;
                     55: static int didvpush = 0;
                     56: static int docomma = 0;
                     57: 
                     58: static char  *py_classlist[] = {
                     59:     "UNIVERSAL", "APPLICATION", "", "PRIVATE"
                     60: };
                     61: 
                     62: static char *vbp = NULL;
                     63: static char *vsp;
                     64: 
                     65: IFP   vfnx = fprintf;
                     66: FILE *vfp = stdout;
                     67: static PS    vps = NULLPS;
                     68: 
                     69: char   *oct2str (), *newbuf ();
                     70: 
                     71: /*    VPUSH/VPOP */
                     72: 
                     73: vpush () {
                     74:     if (didvpush)
                     75:        vwrite ("\n"), didvpush = 0;
                     76:     else
                     77:        if (!didname && docomma)
                     78:            vwrite (",\n");
                     79: 
                     80:     if (didname)
                     81:        vwrite (" ");
                     82:     else
                     83:        if (vfp && vlevel > 0)
                     84:            (*vfnx) (vfp, "%*s", vlevel * 3, "");
                     85:     vwrite ("{");
                     86:     vlevel++;
                     87: 
                     88:     didname = didvpop = docomma = 0, didvpush = 1;
                     89: }
                     90: 
                     91: 
                     92: vpop () {
                     93:     if (didname || docomma)
                     94:        vwrite ("\n");
                     95: 
                     96:     vlevel--;
                     97:     if (!didvpush && vfp && vlevel > 0)
                     98:        (*vfnx) (vfp, "%*s", vlevel * 3, "");
                     99:     vwrite ("}");
                    100:     if (vlevel == 0)
                    101:        vwrite ("\n");
                    102: 
                    103:     didname = didvpush = 0, didvpop = docomma = vlevel ? 1 : 0;
                    104: }
                    105: 
                    106: /*    VNAME/VTAG */
                    107: 
                    108: vname (name)
                    109: char   *name;
                    110: {
                    111:     if (didvpush)
                    112:        vwrite ("\n"), didvpush = 0;
                    113:     else
                    114:        if (docomma)
                    115:            vwrite (",\n");
                    116: 
                    117:     if (vfp && vlevel > 0)
                    118:        (*vfnx) (vfp, "%*s", vlevel * 3, "");
                    119:     vwrite (name);
                    120: 
                    121:     didname = 1;
                    122: }
                    123: 
                    124: 
                    125: vtag (class, id)
                    126: int    class,
                    127:        id;
                    128: {
                    129:     register char *bp;
                    130:     static char buffer[BUFSIZ];
                    131: 
                    132:     if (didname)
                    133:        return;
                    134: 
                    135:     bp = buffer;
                    136:     *bp++ = '[';
                    137:     switch (class) {
                    138:        case PE_CLASS_UNIV: 
                    139:        case PE_CLASS_APPL: 
                    140:        case PE_CLASS_PRIV: 
                    141:            (void) sprintf (bp, "%s ", py_classlist[class]);
                    142:            bp += strlen (bp);
                    143:            break;
                    144: 
                    145:        case PE_CLASS_CONT: 
                    146:        default:
                    147:            break;
                    148:     }
                    149:     (void) sprintf (bp, "%d]", id);
                    150: 
                    151:     vname (buffer);
                    152: }
                    153: 
                    154: /*    VPRINT */
                    155: 
                    156: #ifndef        lint
                    157: vprint (va_alist)
                    158: va_dcl
                    159: {
                    160:     char    buffer[BUFSIZ];
                    161:     va_list ap;
                    162:     
                    163:     vprint1 ();
                    164: 
                    165:     va_start (ap);
                    166: 
                    167:     _asprintf (buffer, NULLCP, ap);
                    168:     
                    169:     va_end (ap);
                    170: 
                    171:     vwrite (buffer);
                    172: 
                    173:     vprint2 ();
                    174: }
                    175: #else
                    176: /* VARARGS */
                    177: 
                    178: vprint (fmt)
                    179: char   *fmt;
                    180: {
                    181:     vprint (fmt);
                    182: }
                    183: #endif
                    184: 
                    185: 
                    186: static vprint1 ()
                    187: {
                    188:     if (didvpush) {
                    189:        vwrite ("\n"), didvpush = 0;
                    190:        goto indent;
                    191:     }
                    192:     else
                    193:        if (didname)
                    194:            vwrite (" ");
                    195:        else {
                    196:            if (docomma)
                    197:                vwrite (",\n");
                    198: indent: ;
                    199:            if (vfp && vlevel > 0)
                    200:                (*vfnx) (vfp, "%*s", vlevel * 3, "");
                    201:        }
                    202: }
                    203: 
                    204: 
                    205: static vprint2 ()
                    206: {
                    207:     if (vlevel == 0)
                    208:        vwrite ("\n");
                    209: 
                    210:     didname = didvpop = 0, docomma = vlevel ? 1 : 0;
                    211: }
                    212: 
                    213: /*  */
                    214: 
                    215: static vwrite (s)
                    216: char   *s;
                    217: {
                    218:     if (vfp)
                    219:        (*vfnx) (vfp, "%s", s);
                    220:     else {
                    221:        register char   c,
                    222:                       *cp;
                    223: 
                    224:        if (vps)
                    225:                for (cp = s; *cp; cp++) {
                    226:                    if (*cp == '\n' )
                    227:                            (void) ps_write (vps, (PElementData) " ", 1);
                    228:                    else
                    229:                            (void) ps_write (vps, (PElementData) cp, 1);
                    230:                }
                    231:        else
                    232:                for (cp = s; *cp; )
                    233:                    *vbp++ = (c = *cp++) != '\n' ? c : ' ';
                    234:     }
                    235: }
                    236: 
                    237: /*    VSTRING */
                    238: 
                    239: vstring (pe)
                    240: register PE    pe;
                    241: {
                    242:     register PE            p;
                    243: 
                    244:     switch (pe -> pe_form) {
                    245:        case PE_FORM_PRIM: 
                    246:        case PE_FORM_ICONS:
                    247:            VPRINT (oct2str ((char *) pe -> pe_prim, (int) pe -> pe_len));
                    248:            break;
                    249: 
                    250:        case PE_FORM_CONS: 
                    251:            vpush ();
                    252:            for (p = pe -> pe_cons; p; p = p -> pe_next)
                    253:                vstring (p);
                    254:            vpop ();
                    255:            break;
                    256:     }
                    257: }
                    258: 
                    259: /*  */
                    260: 
                    261: static char   *oct2str (s, len)
                    262: register char  *s;
                    263: register int   len;
                    264: {
                    265:     int     ia5ok;
                    266:     register int    k;
                    267:     register char  *bp,
                    268:                    *cp,
                    269:                    *dp,
                    270:                   *zp;
                    271: 
                    272:     ia5ok = 1, k = 0;
                    273:     for (dp = (cp = s) + len; cp < dp; cp++) {
                    274:        switch (*cp) {
                    275:            case ' ': 
                    276:                continue;
                    277: 
                    278:            case '"': 
                    279:                break;
                    280: 
                    281:            case '\b':
                    282:            case '\f':
                    283:            case '\n':
                    284:            case '\r':
                    285:            case '\t':
                    286:            case '\\':
                    287:                ia5ok = -1, k++;
                    288:                continue;
                    289: 
                    290:            case '-': 
                    291:                if (cp > s && *(cp + 1) == '-')
                    292:                    break;
                    293:                continue;
                    294: 
                    295:            default: 
                    296:                if (iscntrl (*cp) || isspace (*cp) || (*cp & 0x80))
                    297:                    break;
                    298:                continue;
                    299:        }
                    300:        ia5ok = 0;
                    301:        break;
                    302:     }
                    303: 
                    304:     switch (ia5ok) {
                    305:        case 1: 
                    306:            zp = newbuf (len + 2);
                    307:            (void) sprintf (zp, "\"%*.*s\"", len, len, s);
                    308:            break;
                    309: 
                    310:        case -1: 
                    311:            bp = zp = newbuf (len + k + 2);
                    312:            *bp++ = '"';
                    313:            for (cp = s; cp < dp; cp++)
                    314:                if (*cp >= ' ' && *cp != '\\')
                    315:                    *bp++ = *cp;
                    316:                else {
                    317:                    *bp++ = '\\';
                    318:                    switch (*cp) {
                    319:                        case '\b':
                    320:                            *bp++ = 'b';
                    321:                            break;
                    322:                        case '\f':
                    323:                            *bp++ = 'f';
                    324:                            break;
                    325:                        case '\n':
                    326:                            *bp++ = 'n';
                    327:                            break;
                    328:                        case '\r':
                    329:                            *bp++ = 'r';
                    330:                            break;
                    331:                        case '\t':
                    332:                            *bp++ = 't';
                    333:                            break;
                    334: 
                    335:                        case '\\':
                    336:                            *bp++ =  '\\';
                    337:                            break;
                    338:                    }
                    339:                }
                    340:            (void) sprintf (bp, "\"");
                    341:            break;
                    342: 
                    343:        case 0: 
                    344:        default: 
                    345:            bp = zp = newbuf (len * 2 + 3);
                    346:            *bp++ = '\'';
                    347:            for (cp = s; cp < dp; cp++) {
                    348:                (void) sprintf (bp, "%02x", *cp & 0xff);
                    349:                bp += strlen (bp);
                    350:            }
                    351:            (void) sprintf (bp, "'H");
                    352:            break;
                    353:     }
                    354: 
                    355:     return zp;
                    356: }
                    357: 
                    358: /*  */
                    359: 
                    360: char   *bit2str (pe, s)
                    361: PE     pe;
                    362: char   *s;
                    363: {
                    364:     int     ia5ok;
                    365:     register int    hit,
                    366:                    i,
                    367:                     j,
                    368:                     k;
                    369:     register char  *bp,
                    370:                    *cp,
                    371:                   *zp;
                    372: 
                    373:     j = pe -> pe_nbits;
                    374:     if ((cp = s) && *++cp) {
                    375:        ia5ok = 1, hit = 0;
                    376:        for (i = 0; i < j;)
                    377:            if (bit_test (pe, i++) == 1) {
                    378:                do {
                    379:                    if (!(k = *cp++ & 0xff))
                    380:                        break;
                    381:                    if (k == i) {
                    382:                        hit += hit ? 2 : 1;
                    383:                        for (; *cp > ' '; cp++)
                    384:                            hit++;
                    385:                    }
                    386:                    else
                    387:                        for (; *cp > ' '; cp++)
                    388:                            continue;
                    389:                } while (k != 0 && k < i);
                    390:                if (k == 0 || k > i) {
                    391:                    ia5ok = 0;
                    392:                    break;
                    393:                }
                    394:            }
                    395:     }
                    396:     else
                    397:        ia5ok = 0;
                    398: 
                    399:     if (ia5ok) {
                    400:        bp = zp = newbuf (hit + 3);
                    401:        *bp++ = '{';
                    402: 
                    403:        cp = s, cp++;
                    404:        for (i = hit = 0; i < j;)
                    405:            if (bit_test (pe, i++) == 1) {
                    406:                do {
                    407:                    if (!(k = *cp++ & 0xff))
                    408:                        break;
                    409:                    if (k == i) {
                    410:                        if (hit)
                    411:                            *bp++ = ',';
                    412:                        *bp++ = ' ';
                    413:                        for (; *cp > ' '; cp++)
                    414:                            *bp++ = *cp;
                    415:                    }
                    416:                    else
                    417:                        for (; *cp > ' '; cp++)
                    418:                            continue;
                    419:                } while (k != 0 && k < i);
                    420:                if (k == 0 || k > i)
                    421:                    break;
                    422:                hit++;
                    423:            }
                    424: 
                    425:        (void) sprintf (bp, "%s}", hit ? " " : "");
                    426:     }
                    427:     else {
                    428:        bp = zp = newbuf (j + 3);
                    429:        *bp++ = '\'';
                    430:        for (i = 0; i < j; i++)
                    431:            *bp++ = bit_test (pe, i) ? '1' : '0';
                    432:        (void) sprintf (bp, "'B");
                    433:     }
                    434: 
                    435:     return zp;
                    436: }
                    437: 
                    438: /*  */
                    439: 
                    440: #ifdef vunknown
                    441: #undef vunknown
                    442: #endif
                    443: 
                    444: vunknown (pe)
                    445: register PE    pe;
                    446: {
                    447:     int     i;
                    448: #ifdef notyet      /* could comment this in, but then all programs need -lm */
                    449:     double  j;
                    450: #endif
                    451:     OID            oid;
                    452:     register PE            p;
                    453: 
                    454:     switch (pe -> pe_form) {
                    455:        case PE_FORM_PRIM: 
                    456:            switch (PE_ID (pe -> pe_class, pe -> pe_id)) {
                    457:                case PE_ID (PE_CLASS_UNIV, PE_PRIM_BOOL): 
                    458:                    if ((i = prim2flag (pe)) == NOTOK)
                    459:                        goto bad_pe;
                    460:                    VPRINT (i ? "TRUE" : "FALSE");
                    461:                    break;
                    462: 
                    463:                case PE_ID (PE_CLASS_UNIV, PE_PRIM_INT): 
                    464:                case PE_ID (PE_CLASS_UNIV, PE_PRIM_ENUM): 
                    465:                    if ((i = prim2num (pe)) == NOTOK
                    466:                            && pe -> pe_errno != PE_ERR_NONE)
                    467:                        goto bad_pe;
                    468:                    vprint ("%d", i);
                    469:                    break;
                    470: 
                    471: #ifdef notyet
                    472:                case PE_ID (PE_CLASS_UNIV, PE_PRIM_REAL): 
                    473:                    if ((j = prim2real (pe)) == NOTOK
                    474:                            && pe -> pe_errno != PE_ERR_NONE)
                    475:                        goto bad_pe;
                    476:                    vprint ("%g", j);
                    477:                    break;
                    478: #endif
                    479: 
                    480:                case PE_ID (PE_CLASS_UNIV, PE_PRIM_BITS): 
                    481:                    if ((p = prim2bit (pe)) == NULLPE)
                    482:                        goto bad_pe;
                    483:                    VPRINT (bit2str (p, "\020"));
                    484:                    break;
                    485: 
                    486:                default: 
                    487:            bad_pe: ;
                    488:                    vtag ((int) pe -> pe_class, (int) pe -> pe_id);
                    489:                /* fall */
                    490: 
                    491:                case PE_ID (PE_CLASS_UNIV, PE_PRIM_OCTS): 
                    492:                case PE_ID (PE_CLASS_UNIV, PE_DEFN_IA5S): 
                    493:                case PE_ID (PE_CLASS_UNIV, PE_DEFN_NUMS): 
                    494:                case PE_ID (PE_CLASS_UNIV, PE_DEFN_PRTS): 
                    495:                case PE_ID (PE_CLASS_UNIV, PE_DEFN_T61S): 
                    496:                case PE_ID (PE_CLASS_UNIV, PE_DEFN_VTXS): 
                    497:                case PE_ID (PE_CLASS_UNIV, PE_DEFN_GENT): 
                    498:                case PE_ID (PE_CLASS_UNIV, PE_DEFN_UTCT): 
                    499:                case PE_ID (PE_CLASS_UNIV, PE_DEFN_GFXS): 
                    500:                case PE_ID (PE_CLASS_UNIV, PE_DEFN_VISS): 
                    501:                case PE_ID (PE_CLASS_UNIV, PE_DEFN_GENS): 
                    502:                case PE_ID (PE_CLASS_UNIV, PE_DEFN_CHRS): 
                    503:                case PE_ID (PE_CLASS_UNIV, PE_PRIM_ODE): 
                    504:                    vstring (pe);
                    505:                    break;
                    506: 
                    507:                case PE_ID (PE_CLASS_UNIV, PE_PRIM_NULL):
                    508:                    VPRINT ("NULL");
                    509:                    break;
                    510: 
                    511:                case PE_ID (PE_CLASS_UNIV, PE_PRIM_OID): 
                    512:                    if ((oid = prim2oid (pe)) == NULLOID)
                    513:                        goto bad_pe;
                    514:                    VPRINT (oid2ode (oid));
                    515:                    break;
                    516:            }
                    517:            break;
                    518: 
                    519:        case PE_FORM_CONS: 
                    520:            switch (PE_ID (pe -> pe_class, pe -> pe_id)) {
                    521:                case PE_ID (PE_CLASS_UNIV, PE_CONS_SEQ):
                    522:                case PE_ID (PE_CLASS_UNIV, PE_CONS_SET):
                    523:                    break;
                    524: 
                    525:                case PE_ID (PE_CLASS_UNIV, PE_CONS_EXTN):
                    526:                    (void) print_UNIV_EXTERNAL (pe, 1, NULLIP, NULLVP,
                    527:                                                NULLCP);
                    528:                    return;
                    529: 
                    530:                default:
                    531:                    vtag ((int) pe -> pe_class, (int) pe -> pe_id);
                    532:                    break;
                    533:            }
                    534:            vpush ();
                    535:            for (p = pe -> pe_cons; p; p = p -> pe_next)
                    536:                vunknown (p);
                    537:            vpop ();
                    538:            break;
                    539: 
                    540:        case PE_FORM_ICONS:
                    541:            vtag ((int) pe -> pe_class, (int) pe -> pe_id);
                    542:            vstring (pe);
                    543:            break;
                    544:     }
                    545: }
                    546: 
                    547: /*    VPUSHFP/VPOPFP */
                    548: 
                    549: vpushfp (fp, pe, s, rw)
                    550: FILE   *fp;
                    551: PE     pe;
                    552: char   *s;
                    553: int    rw;
                    554: {
                    555:     vpushpp ((caddr_t) fp, fprintf, pe, s, rw);
                    556: }
                    557: 
                    558: vsetfp (fp, s)
                    559: FILE   * fp;
                    560: char   * s;
                    561: {
                    562:     vfp = fp;
                    563:     vfnx = fprintf;
                    564: 
                    565:     if(s != NULLCP)
                    566:        (*vfnx) (vfp, "%s\n", s);
                    567: 
                    568:     vlevel = didname = didvpush = didvpop = docomma = 0;
                    569: }
                    570: 
                    571: vpopfp ()
                    572: {
                    573:     (*vfnx) (vfp, "-------\n");
                    574:     (void) fflush (vfp);
                    575: 
                    576:     vpopp ();
                    577: }
                    578: 
                    579: /*    VPUSHSTR/VPOPSTR */
                    580: 
                    581: vpushstr (cp)
                    582: char   *cp;
                    583: {
                    584:     vfp = NULL;
                    585:     vbp = vsp = cp;
                    586: 
                    587:     vlevel = didname = didvpush = didvpop = docomma = 0;
                    588: }
                    589: 
                    590: 
                    591: vpopstr ()
                    592: {
                    593:     while (--vbp >= vsp)
                    594:        if (*vbp != ' ')
                    595:            break;
                    596:     *++vbp = NULL;
                    597: 
                    598:     vfp = stdout;
                    599: }
                    600: 
                    601: /*    VPUSHPP */
                    602: 
                    603: vpushpp (pv, pfnx, pe, text, rw)
                    604: caddr_t pv;
                    605: IFP    pfnx;
                    606: register PE    pe;
                    607: char   *text;
                    608: int    rw;
                    609: {
                    610:     vfp = (FILE *) pv, vfnx = pfnx;
                    611: 
                    612:     (*vfnx) (vfp, "%s %s", rw ? "read" : "wrote", text ? text : "pdu");
                    613:     if (pe -> pe_context != PE_DFLT_CTX)
                    614:        (*vfnx) (vfp, ", context %d", pe -> pe_context);
                    615:     (*vfnx) (vfp, "\n");
                    616: 
                    617:     vlevel = didname = didvpush = didvpop = docomma = 0;
                    618: }
                    619: 
                    620: vpopp ()
                    621: {
                    622:     vfp = stdout, vfnx = fprintf;
                    623: }
                    624: 
                    625: 
                    626: vpushquipu (ps)
                    627: PS     ps;
                    628: {
                    629:     vps = ps;
                    630:     vfp = NULL;
                    631: 
                    632:     vlevel = didname = didvpush = didvpop = docomma = 0;
                    633: }
                    634: 
                    635: 
                    636: vpopquipu ()
                    637: {
                    638:        vpopp();
                    639:        vps = NULLPS;
                    640: }
                    641: 
                    642: /*    PVPDU - for pepsy */
                    643: 
                    644: pvpdu (lp, ind, mod, pe, text, rw)
                    645: register LLog *lp;
                    646: int    ind;            /* index into tables */
                    647: modtyp *mod;           /* pointer to tables */
                    648: register PE pe;
                    649: char   *text;
                    650: int    rw;
                    651: {
                    652:     register char   *bp;
                    653:     char   buffer[BUFSIZ];
                    654: 
                    655:     vfp = (FILE *) lp, vfnx = ll_printf;
                    656: 
                    657:     bp = buffer;
                    658:     (void) sprintf (bp, "%s %s", rw ? "read" : "wrote",
                    659:                    text ? text : "pdu");
                    660:     bp += strlen (bp);
                    661:     if (pe -> pe_context != PE_DFLT_CTX) {
                    662:        (void) sprintf (bp, ", context %d", pe -> pe_context);
                    663:        bp += strlen (bp);
                    664:     }
                    665:     LLOG (lp, LLOG_ALL, ("%s", buffer));
                    666: 
                    667:     vlevel = didname = didvpush = didvpop = docomma = 0;
                    668: 
                    669:     if (mod == NULL)
                    670:         (void) vunknown (pe);
                    671:     else
                    672:         (void) prnt_f (ind, mod, pe, 1, NULLIP, NULLVP);
                    673: 
                    674:     (void) ll_printf (lp, "-------\n");
                    675: 
                    676:     (void) ll_sync (lp);
                    677: 
                    678:     vfp = stdout, vfnx = fprintf;
                    679: }
                    680: 
                    681: /*    MISC */
                    682: 
                    683: static char *newbuf (i)
                    684: int    i;
                    685: {
                    686:     static unsigned int len = 0;
                    687:     static char *bp = NULL;
                    688: 
                    689:     if (i++ < len)
                    690:        return bp;
                    691: 
                    692:     if (bp)
                    693:        free (bp);
                    694:     if ((bp = malloc ((unsigned int) i)))
                    695:        len = i;
                    696:     else
                    697:        len = 0;
                    698: 
                    699:     return bp;
                    700: }
                    701: /*  VPDU - support for backwards compatibility */
                    702: 
                    703: _vpdu (lp, fnx, pe, text, rw)
                    704: register LLog *lp;
                    705: IFP    fnx;
                    706: register PE pe;
                    707: char   *text;
                    708: int    rw;
                    709: {
                    710:     register char   *bp;
                    711:     char   buffer[BUFSIZ];
                    712: 
                    713:     vfp = (FILE *) lp, vfnx = ll_printf;
                    714: 
                    715:     bp = buffer;
                    716:     (void) sprintf (bp, "%s %s", rw ? "read" : "wrote",
                    717:                    text ? text : "pdu");
                    718:     bp += strlen (bp);
                    719:     if (pe -> pe_context != PE_DFLT_CTX) {
                    720:        (void) sprintf (bp, ", context %d", pe -> pe_context);
                    721:        bp += strlen (bp);
                    722:     }
                    723:     LLOG (lp, LLOG_ALL, ("%s", buffer));
                    724: 
                    725:     vlevel = didname = didvpush = didvpop = docomma = 0;
                    726: 
                    727:     (void) (*fnx) (pe, 1, NULLIP, NULLVP, NULLCP);
                    728: 
                    729:     (void) ll_printf (lp, "-------\n");
                    730: 
                    731:     (void) ll_sync (lp);
                    732: 
                    733:     vfp = stdout, vfnx = fprintf;
                    734: }
                    735: 

unix.superglobalmegacorp.com

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