Annotation of 43BSDReno/contrib/isode-beta/doc/manual/ryinitiator-c.tex, revision 1.1.1.1

1.1       root        1: \File{ryinitiator\-c.c},{11:10},{Oct 21 1988}
                      2: \L{\LB{\C{}\/* ryinitiator.c \- generic interactive initiator *\/\CE{}}}
                      3: \L{\LB{}}
                      4: \L{\LB{\K{\#include} \<stdio.h\>}}
                      5: \L{\LB{\K{\#include} \<varargs.h\>}}
                      6: \L{\LB{\K{\#include} \S{}\"ryinitiator.h\"\SE{}}}
                      7: \L{\LB{}}
                      8: \L{\LB{\C{}\/*    DATA *\/\CE{}}}
                      9: \L{\LB{}}
                     10: \L{\LB{\K{static} \K{char} *myname = \S{}\"ryinitiator\"\SE{};}}
                     11: \L{\LB{}}
                     12: \L{\LB{}}
                     13: \L{\LB{\K{extern} \K{char} *isodeversion;}}
                     14: \L{\LB{}}
                     15: \L{\LB{\C{}\/*    INITIATOR *\/\CE{}}}
                     16: \L{\LB{}}
                     17: \L{\LB{\Proc{ryinitiator}ryinitiator (argc, argv, myservice, mycontext, mypci, ops, dispatches, quit)}}
                     18: \L{\LB{\K{int}}\Tab{8}{argc;}}
                     19: \L{\LB{\K{char}  **argv,}}
                     20: \L{\LB{       *myservice,}}
                     21: \L{\LB{       *mycontext,}}
                     22: \L{\LB{       *mypci;}}
                     23: \L{\LB{\K{struct} RyOperation ops[];}}
                     24: \L{\LB{\K{struct} dispatch *dispatches;}}
                     25: \L{\LB{IFP}\Tab{8}{quit;}}
                     26: \L{\LB{\{}}
                     27: \L{\LB{    \K{int}}\Tab{8}{    iloop,}}
                     28: \L{\LB{}\Tab{8}{    sd;}}
                     29: \L{\LB{    \K{char}    buffer[BUFSIZ],}}
                     30: \L{\LB{}\Tab{8}{   *vec[NVEC + 1];}}
                     31: \L{\LB{    \K{register} \K{struct} dispatch   *ds;}}
                     32: \L{\LB{    \K{struct} SSAPref sfs;}}
                     33: \L{\LB{    \K{register} \K{struct} SSAPref *sf;}}
                     34: \L{\LB{    \K{register} \K{struct} PSAPaddr *pa;}}
                     35: \L{\LB{    \K{struct} AcSAPconnect accs;}}
                     36: \L{\LB{    \K{register} \K{struct} AcSAPconnect   *acc = \&accs;}}
                     37: \L{\LB{    \K{struct} AcSAPindication  acis;}}
                     38: \L{\LB{    \K{register} \K{struct} AcSAPindication *aci = \&acis;}}
                     39: \L{\LB{    \K{register} \K{struct} AcSAPabort *aca = \&aci \-\> aci\_abort;}}
                     40: \L{\LB{    AEI}\Tab{8}{    aei;}}
                     41: \L{\LB{    OID}\Tab{8}{    ctx,}}
                     42: \L{\LB{}\Tab{8}{    pci;}}
                     43: \L{\LB{    \K{struct} PSAPctxlist pcs;}}
                     44: \L{\LB{    \K{register} \K{struct} PSAPctxlist *pc = \&pcs;}}
                     45: \L{\LB{    \K{struct} RoSAPindication rois;}}
                     46: \L{\LB{    \K{register} \K{struct} RoSAPindication *roi = \&rois;}}
                     47: \L{\LB{    \K{register} \K{struct} RoSAPpreject *rop = \&roi \-\> roi\_preject;}}
                     48: \L{\LB{}}
                     49: \L{\LB{    \K{if} (myname = rindex (argv[0], \S{}\'\/\'\SE{}))}}
                     50: \L{\LB{}\Tab{8}{myname++;}}
                     51: \L{\LB{    \K{if} (myname == NULL \|\| *myname == NULL)}}
                     52: \L{\LB{}\Tab{8}{myname = argv[0];}}
                     53: \L{\LB{}}
                     54: \L{\LB{    \K{if} (argc \< 2)}}
                     55: \L{\LB{}\Tab{8}{adios (NULLCP, \S{}\"usage: \%s host [operation [ arguments ... ]]\"\SE{}, myname);}}
                     56: \L{\LB{}}
                     57: \L{\LB{    \K{if} ((aei = str2aei (argv[1], myservice)) == NULLAEI)}}
                     58: \L{\LB{}\Tab{8}{adios (NULLCP, \S{}\"\%s\-\%s: unknown application\-entity\"\SE{},}}
                     59: \L{\LB{}\Tab{16}{argv[1], myservice);}}
                     60: \L{\LB{    \K{if} ((pa = aei2addr (aei)) == NULLPA)}}
                     61: \L{\LB{}\Tab{8}{adios (NULLCP, \S{}\"address translation failed\"\SE{});}}
                     62: \L{\LB{}}
                     63: \L{\LB{    \K{if} ((ctx = ode2oid (mycontext)) == NULLOID)}}
                     64: \L{\LB{}\Tab{8}{adios (NULLCP, \S{}\"\%s: unknown object descriptor\"\SE{}, mycontext);}}
                     65: \L{\LB{    \K{if} ((ctx = oid\_cpy (ctx)) == NULLOID)}}
                     66: \L{\LB{}\Tab{8}{adios (NULLCP, \S{}\"out of memory\"\SE{});}}
                     67: \L{\LB{    \K{if} ((pci = ode2oid (mypci)) == NULLOID)}}
                     68: \L{\LB{}\Tab{8}{adios (NULLCP, \S{}\"\%s: unknown object descriptor\"\SE{}, mypci);}}
                     69: \L{\LB{    \K{if} ((pci = oid\_cpy (pci)) == NULLOID)}}
                     70: \L{\LB{}\Tab{8}{adios (NULLCP, \S{}\"out of memory\"\SE{});}}
                     71: \L{\LB{    pc \-\> pc\_nctx = 1;}}
                     72: \L{\LB{    pc \-\> pc\_ctx[0].pc\_id = 1;}}
                     73: \L{\LB{    pc \-\> pc\_ctx[0].pc\_asn = pci;}}
                     74: \L{\LB{    pc \-\> pc\_ctx[0].pc\_atn = NULLOID;}}
                     75: \L{\LB{}}
                     76: \L{\LB{    \K{if} ((sf = addr2ref (PLocalHostName ())) == NULL) \{}}
                     77: \L{\LB{}\Tab{8}{sf = \&sfs;}}
                     78: \L{\LB{}\Tab{8}{(\K{void}) bzero ((\K{char} *) sf, \K{sizeof} *sf);}}
                     79: \L{\LB{    \}}}
                     80: \L{\LB{}}
                     81: \L{\LB{    \K{if} (argc \< 3) \{}}
                     82: \L{\LB{}\Tab{8}{printf (\S{}\"\%s\"\SE{}, myname);}}
                     83: \L{\LB{}\Tab{8}{\K{if} (sf \-\> sr\_ulen \> 2)}}
                     84: \L{\LB{}\Tab{8}{    printf (\S{}\" running on host \%s\"\SE{}, sf \-\> sr\_udata + 2);}}
                     85: \L{\LB{}\Tab{8}{\K{if} (sf \-\> sr\_clen \> 2)}}
                     86: \L{\LB{}\Tab{8}{    printf (\S{}\" at \%s\"\SE{}, sf \-\> sr\_cdata + 2);}}
                     87: \L{\LB{}\Tab{8}{printf (\S{}\" [\%s, \"\SE{}, oid2ode (ctx));}}
                     88: \L{\LB{}\Tab{8}{printf (\S{}\"\%s]\!n\"\SE{}, oid2ode (pci));}}
                     89: \L{\LB{}\Tab{8}{printf (\S{}\"using \%s\!n\"\SE{}, isodeversion);}}
                     90: \L{\LB{}}
                     91: \L{\LB{}\Tab{8}{printf (\S{}\"\%s... \"\SE{}, argv[1]);}}
                     92: \L{\LB{}\Tab{8}{(\K{void}) fflush (stdout);}}
                     93: \L{\LB{    }}
                     94: \L{\LB{}\Tab{8}{iloop = 1;}}
                     95: \L{\LB{    \}}}
                     96: \L{\LB{    \K{else} \{}}
                     97: \L{\LB{}\Tab{8}{\K{for} (ds = dispatches; ds \-\> ds\_name; ds++)}}
                     98: \L{\LB{}\Tab{8}{    \K{if} (strcmp (ds \-\> ds\_name, argv[2]) == 0)}}
                     99: \L{\LB{}\Tab{16}{\K{break};}}
                    100: \L{\LB{}\Tab{8}{\K{if} (ds \-\> ds\_name == NULL)}}
                    101: \L{\LB{}\Tab{8}{    adios (NULLCP, \S{}\"unknown operation \!\"\%s\!\"\"\SE{}, argv[2]);}}
                    102: \L{\LB{}}
                    103: \L{\LB{}\Tab{8}{iloop = 0;}}
                    104: \L{\LB{    \}}}
                    105: \L{\LB{}}
                    106: \L{\LB{    \K{if} (AcAssocRequest (ctx, NULLAEI, aei, NULLPA, pa, pc, NULLOID,}}
                    107: \L{\LB{}\Tab{16}{0, ROS\_MYREQUIRE, SERIAL\_NONE, 0, sf, NULLPEP, 0, NULLQOS,}}
                    108: \L{\LB{}\Tab{16}{acc, aci)}}
                    109: \L{\LB{}\Tab{8}{    == NOTOK)}}
                    110: \L{\LB{}\Tab{8}{acs\_adios (aca, \S{}\"A\-ASSOCIATE.REQUEST\"\SE{});}}
                    111: \L{\LB{}}
                    112: \L{\LB{    \K{if} (acc \-\> acc\_result != ACS\_ACCEPT) \{}}
                    113: \L{\LB{}\Tab{8}{\K{if} (iloop)}}
                    114: \L{\LB{}\Tab{8}{    printf (\S{}\"failed\!n\"\SE{});}}
                    115: \L{\LB{}}
                    116: \L{\LB{}\Tab{8}{adios (NULLCP, \S{}\"association rejected: [\%s]\"\SE{},}}
                    117: \L{\LB{}\Tab{16}{AcErrString (acc \-\> acc\_result));}}
                    118: \L{\LB{    \}}}
                    119: \L{\LB{    \K{if} (iloop) \{}}
                    120: \L{\LB{}\Tab{8}{printf (\S{}\"connected\!n\"\SE{});}}
                    121: \L{\LB{}\Tab{8}{(\K{void}) fflush (stdout);}}
                    122: \L{\LB{    \}}}
                    123: \L{\LB{}}
                    124: \L{\LB{    sd = acc \-\> acc\_sd;}}
                    125: \L{\LB{    ACCFREE (acc);}}
                    126: \L{\LB{}}
                    127: \L{\LB{    \K{if} (RoSetService (sd, RoPService, roi) == NOTOK)}}
                    128: \L{\LB{}\Tab{8}{ros\_adios (rop, \S{}\"set RO\/PS fails\"\SE{});}}
                    129: \L{\LB{}}
                    130: \L{\LB{    \K{if} (iloop) \{}}
                    131: \L{\LB{}\Tab{8}{\K{for} (;;) \{}}
                    132: \L{\LB{}\Tab{8}{    \K{if} (getline (buffer) == NOTOK)}}
                    133: \L{\LB{}\Tab{16}{\K{break};}}
                    134: \L{\LB{}}
                    135: \L{\LB{}\Tab{8}{    \K{if} (str2vec (buffer, vec) \< 1)}}
                    136: \L{\LB{}\Tab{16}{\K{continue};}}
                    137: \L{\LB{}}
                    138: \L{\LB{}\Tab{8}{    \K{for} (ds = dispatches; ds \-\> ds\_name; ds++)}}
                    139: \L{\LB{}\Tab{16}{\K{if} (strcmp (ds \-\> ds\_name, vec[0]) == 0)}}
                    140: \L{\LB{}\Tab{16}{    \K{break};}}
                    141: \L{\LB{}\Tab{8}{    \K{if} (ds \-\> ds\_name == NULL) \{}}
                    142: \L{\LB{}\Tab{16}{advise (NULLCP, \S{}\"unknown operation \!\"\%s\!\"\"\SE{}, vec[0]);}}
                    143: \L{\LB{}\Tab{16}{\K{continue};}}
                    144: \L{\LB{}\Tab{8}{    \}}}
                    145: \L{\LB{}}
                    146: \L{\LB{}\Tab{8}{    invoke (sd, ops, ds, vec + 1);}}
                    147: \L{\LB{}\Tab{8}{\}}}
                    148: \L{\LB{    \}}}
                    149: \L{\LB{    \K{else}}}
                    150: \L{\LB{}\Tab{8}{invoke (sd, ops, ds, argv + 3);}}
                    151: \L{\LB{}}
                    152: \L{\LB{    (*quit) (sd, (\K{struct} dispatch *) NULL, (\K{char} **) NULL, (caddr\_t *) NULL);}}
                    153: \L{\LB{\}}}
                    154: \L{\LB{}}
                    155: \L{\LB{\C{}\/*  *\/\CE{}}}
                    156: \L{\LB{}}
                    157: \L{\LB{\K{static}}\Tab{8}{invoke (sd, ops, ds, args)}}
                    158: \L{\LB{\K{int}}\Tab{8}{sd;}}
                    159: \L{\LB{\K{struct} RyOperation ops[];}}
                    160: \L{\LB{\K{register} \K{struct} dispatch *ds;}}
                    161: \L{\LB{\K{char}  **args;}}
                    162: \L{\LB{\{}}
                    163: \L{\LB{    \K{int}}\Tab{8}{    result;}}
                    164: \L{\LB{    caddr\_t in;}}
                    165: \L{\LB{    \K{struct} RoSAPindication  rois;}}
                    166: \L{\LB{    \K{register} \K{struct} RoSAPindication *roi = \&rois;}}
                    167: \L{\LB{    \K{register} \K{struct} RoSAPpreject   *rop = \&roi \-\> roi\_preject;}}
                    168: \L{\LB{}}
                    169: \L{\LB{    in = NULL;}}
                    170: \L{\LB{    \K{if} (ds \-\> ds\_argument \&\& (*ds \-\> ds\_argument) (sd, ds, args, \&in) == NOTOK)}}
                    171: \L{\LB{}\Tab{8}{\K{return};}}
                    172: \L{\LB{}}
                    173: \L{\LB{    \K{switch} (result = RyStub (sd, ops, ds \-\> ds\_operation, RyGenID (sd), NULLIP,}}
                    174: \L{\LB{}\Tab{16}{    in, ds \-\> ds\_result, ds \-\> ds\_error, ROS\_SYNC, roi)) \{}}
                    175: \L{\LB{}\Tab{8}{\K{case} NOTOK:}\Tab{32}{\C{}\/* failure *\/\CE{}}}
                    176: \L{\LB{}\Tab{8}{    \K{if} (ROS\_FATAL (rop \-\> rop\_reason))}}
                    177: \L{\LB{}\Tab{16}{ros\_adios (rop, \S{}\"STUB\"\SE{});}}
                    178: \L{\LB{}\Tab{8}{    ros\_advise (rop, \S{}\"STUB\"\SE{});}}
                    179: \L{\LB{}\Tab{8}{    \K{break};}}
                    180: \L{\LB{}}
                    181: \L{\LB{}\Tab{8}{\K{case} OK:}\Tab{32}{\C{}\/* got a result\/error response *\/\CE{}}}
                    182: \L{\LB{}\Tab{8}{    \K{break};}}
                    183: \L{\LB{}}
                    184: \L{\LB{}\Tab{8}{\K{case} DONE:}\Tab{32}{\C{}\/* got RO\-END? *\/\CE{}}}
                    185: \L{\LB{}\Tab{8}{    adios (NULLCP, \S{}\"got RO\-END.INDICATION\"\SE{});}}
                    186: \L{\LB{}\Tab{8}{    \C{}\/* NOTREACHED *\/\CE{}}}
                    187: \L{\LB{}}
                    188: \L{\LB{}\Tab{8}{\K{default}:}}
                    189: \L{\LB{}\Tab{8}{    adios (NULLCP, \S{}\"unknown return from RyStub=\%d\"\SE{}, result);}}
                    190: \L{\LB{}\Tab{8}{    \C{}\/* NOTREACHED *\/\CE{}}}
                    191: \L{\LB{    \}}}
                    192: \L{\LB{}}
                    193: \L{\LB{    \K{if} (ds \-\> ds\_free \&\& in)}}
                    194: \L{\LB{}\Tab{8}{(\K{void}) (*ds \-\> ds\_free) (in);}}
                    195: \L{\LB{\}}}
                    196: \L{\LB{}}
                    197: \L{\LB{\C{}\/*  *\/\CE{}}}
                    198: \L{\LB{}}
                    199: \L{\LB{\K{static} \K{int}  getline (buffer)}}
                    200: \L{\LB{\K{char}   *buffer;}}
                    201: \L{\LB{\{}}
                    202: \L{\LB{    \K{register} \K{int}    i;}}
                    203: \L{\LB{    \K{register} \K{char}  *cp,}}
                    204: \L{\LB{                   *ep;}}
                    205: \L{\LB{    \K{static} \K{int}  sticky = 0;}}
                    206: \L{\LB{}}
                    207: \L{\LB{    \K{if} (sticky) \{}}
                    208: \L{\LB{}\Tab{8}{sticky = 0;}}
                    209: \L{\LB{}\Tab{8}{\K{return} NOTOK;}}
                    210: \L{\LB{    \}}}
                    211: \L{\LB{}}
                    212: \L{\LB{    printf (\S{}\"\%s\> \"\SE{}, myname);}}
                    213: \L{\LB{    (\K{void}) fflush (stdout);}}
                    214: \L{\LB{}}
                    215: \L{\LB{    \K{for} (ep = (cp = buffer) + BUFSIZ \- 1; (i = getchar ()) != \S{}\'\!n\'\SE{};) \{}}
                    216: \L{\LB{}\Tab{8}{\K{if} (i == EOF) \{}}
                    217: \L{\LB{}\Tab{8}{    printf (\S{}\"\!n\"\SE{});}}
                    218: \L{\LB{}\Tab{8}{    clearerr (stdin);}}
                    219: \L{\LB{}\Tab{8}{    \K{if} (cp != buffer) \{}}
                    220: \L{\LB{}\Tab{16}{sticky++;}}
                    221: \L{\LB{}\Tab{16}{\K{break};}}
                    222: \L{\LB{}\Tab{8}{    \}}}
                    223: \L{\LB{}}
                    224: \L{\LB{}\Tab{8}{    \K{return} NOTOK;}}
                    225: \L{\LB{}\Tab{8}{\}}}
                    226: \L{\LB{}}
                    227: \L{\LB{}\Tab{8}{\K{if} (cp \< ep)}}
                    228: \L{\LB{}\Tab{8}{    *cp++ = i;}}
                    229: \L{\LB{    \}}}
                    230: \L{\LB{    *cp = NULL;}}
                    231: \L{\LB{}}
                    232: \L{\LB{    \K{return} OK;}}
                    233: \L{\LB{\}}}
                    234: \L{\LB{}}
                    235: \L{\LB{\C{}\/*  *\/\CE{}}}
                    236: \L{\LB{}}
                    237: \L{\LB{\K{void}}\Tab{8}{ros\_adios (rop, event)}}
                    238: \L{\LB{\K{register} \K{struct} RoSAPpreject *rop;}}
                    239: \L{\LB{\K{char}   *event;}}
                    240: \L{\LB{\{}}
                    241: \L{\LB{    ros\_advise (rop, event);}}
                    242: \L{\LB{}}
                    243: \L{\LB{    \_exit (1);}}
                    244: \L{\LB{\}}}
                    245: \L{\LB{}}
                    246: \L{\LB{}}
                    247: \L{\LB{\K{void}}\Tab{8}{ros\_advise (rop, event)}}
                    248: \L{\LB{\K{register} \K{struct} RoSAPpreject *rop;}}
                    249: \L{\LB{\K{char}   *event;}}
                    250: \L{\LB{\{}}
                    251: \L{\LB{    \K{char}    buffer[BUFSIZ];}}
                    252: \L{\LB{}}
                    253: \L{\LB{    \K{if} (rop \-\> rop\_cc \> 0)}}
                    254: \L{\LB{}\Tab{8}{(\K{void}) sprintf (buffer, \S{}\"[\%s] \%*.*s\"\SE{}, RoErrString (rop \-\> rop\_reason),}}
                    255: \L{\LB{}\Tab{16}{rop \-\> rop\_cc, rop \-\> rop\_cc, rop \-\> rop\_data);}}
                    256: \L{\LB{    \K{else}}}
                    257: \L{\LB{}\Tab{8}{(\K{void}) sprintf (buffer, \S{}\"[\%s]\"\SE{}, RoErrString (rop \-\> rop\_reason));}}
                    258: \L{\LB{}}
                    259: \L{\LB{    advise (NULLCP, \S{}\"\%s: \%s\"\SE{}, event, buffer);}}
                    260: \L{\LB{\}}}
                    261: \L{\LB{}}
                    262: \L{\LB{\C{}\/*  *\/\CE{}}}
                    263: \L{\LB{}}
                    264: \L{\LB{\K{void}}\Tab{8}{acs\_adios (aca, event)}}
                    265: \L{\LB{\K{register} \K{struct} AcSAPabort *aca;}}
                    266: \L{\LB{\K{char}   *event;}}
                    267: \L{\LB{\{}}
                    268: \L{\LB{    acs\_advise (aca, event);}}
                    269: \L{\LB{}}
                    270: \L{\LB{    \_exit (1);}}
                    271: \L{\LB{\}}}
                    272: \L{\LB{}}
                    273: \L{\LB{}}
                    274: \L{\LB{\K{void}}\Tab{8}{acs\_advise (aca, event)}}
                    275: \L{\LB{\K{register} \K{struct} AcSAPabort *aca;}}
                    276: \L{\LB{\K{char}   *event;}}
                    277: \L{\LB{\{}}
                    278: \L{\LB{    \K{char}    buffer[BUFSIZ];}}
                    279: \L{\LB{}}
                    280: \L{\LB{    \K{if} (aca \-\> aca\_cc \> 0)}}
                    281: \L{\LB{}\Tab{8}{(\K{void}) sprintf (buffer, \S{}\"[\%s] \%*.*s\"\SE{},}}
                    282: \L{\LB{}\Tab{16}{AcErrString (aca \-\> aca\_reason),}}
                    283: \L{\LB{}\Tab{16}{aca \-\> aca\_cc, aca \-\> aca\_cc, aca \-\> aca\_data);}}
                    284: \L{\LB{    \K{else}}}
                    285: \L{\LB{}\Tab{8}{(\K{void}) sprintf (buffer, \S{}\"[\%s]\"\SE{}, AcErrString (aca \-\> aca\_reason));}}
                    286: \L{\LB{}}
                    287: \L{\LB{}\Tab{8}{advise (NULLCP, \S{}\"\%s: \%s (source \%d)\"\SE{}, event, buffer,}}
                    288: \L{\LB{}\Tab{16}{aca \-\> aca\_source);}}
                    289: \L{\LB{\}}}
                    290: \L{\LB{}}
                    291: \L{\LB{\C{}\/*  *\/\CE{}}}
                    292: \L{\LB{}}
                    293: \L{\LB{\K{\#ifndef}}\Tab{8}{lint}}
                    294: \L{\LB{\K{void}}\Tab{8}{\_advise ();}}
                    295: \L{\LB{}}
                    296: \L{\LB{}}
                    297: \L{\LB{\K{void}}\Tab{8}{adios (va\_alist)}}
                    298: \L{\LB{va\_dcl}}
                    299: \L{\LB{\{}}
                    300: \L{\LB{    va\_list ap;}}
                    301: \L{\LB{}}
                    302: \L{\LB{    va\_start (ap);}}
                    303: \L{\LB{}}
                    304: \L{\LB{    \_advise (ap);}}
                    305: \L{\LB{}}
                    306: \L{\LB{    va\_end (ap);}}
                    307: \L{\LB{}}
                    308: \L{\LB{    \_exit (1);}}
                    309: \L{\LB{\}}}
                    310: \L{\LB{\K{\#else}}}
                    311: \L{\LB{\C{}\/* VARARGS *\/\CE{}}}
                    312: \L{\LB{}}
                    313: \L{\LB{\K{void}}\Tab{8}{adios (what, fmt)}}
                    314: \L{\LB{\K{char}   *what,}}
                    315: \L{\LB{       *fmt;}}
                    316: \L{\LB{\{}}
                    317: \L{\LB{    adios (what, fmt);}}
                    318: \L{\LB{\}}}
                    319: \L{\LB{\K{\#endif}}}
                    320: \L{\LB{}}
                    321: \L{\LB{}}
                    322: \L{\LB{\K{\#ifndef}}\Tab{8}{lint}}
                    323: \L{\LB{\K{void}}\Tab{8}{advise (va\_alist)}}
                    324: \L{\LB{va\_dcl}}
                    325: \L{\LB{\{}}
                    326: \L{\LB{    va\_list ap;}}
                    327: \L{\LB{}}
                    328: \L{\LB{    va\_start (ap);}}
                    329: \L{\LB{}}
                    330: \L{\LB{    \_advise (ap);}}
                    331: \L{\LB{}}
                    332: \L{\LB{    va\_end (ap);}}
                    333: \L{\LB{\}}}
                    334: \L{\LB{}}
                    335: \L{\LB{}}
                    336: \L{\LB{\K{static} \K{void}  \_advise (ap)}}
                    337: \L{\LB{va\_list}\Tab{8}{ap;}}
                    338: \L{\LB{\{}}
                    339: \L{\LB{    \K{char}    buffer[BUFSIZ];}}
                    340: \L{\LB{}}
                    341: \L{\LB{    asprintf (buffer, ap);}}
                    342: \L{\LB{}}
                    343: \L{\LB{    (\K{void}) fflush (stdout);}}
                    344: \L{\LB{}}
                    345: \L{\LB{    fprintf (stderr, \S{}\"\%s: \"\SE{}, myname);}}
                    346: \L{\LB{    (\K{void}) fputs (buffer, stderr);}}
                    347: \L{\LB{    (\K{void}) fputc (\S{}\'\!n\'\SE{}, stderr);}}
                    348: \L{\LB{}}
                    349: \L{\LB{    (\K{void}) fflush (stderr);}}
                    350: \L{\LB{\}}}
                    351: \L{\LB{\K{\#else}}}
                    352: \L{\LB{\C{}\/* VARARGS *\/\CE{}}}
                    353: \L{\LB{}}
                    354: \L{\LB{\K{void}}\Tab{8}{advise (what, fmt)}}
                    355: \L{\LB{\K{char}   *what,}}
                    356: \L{\LB{       *fmt;}}
                    357: \L{\LB{\{}}
                    358: \L{\LB{    advise (what, fmt);}}
                    359: \L{\LB{\}}}
                    360: \L{\LB{\K{\#endif}}}

unix.superglobalmegacorp.com

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