Annotation of 43BSDReno/contrib/isode-beta/doc/manual/ryinitiator-c.tex, revision 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.