|
|
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}}}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.