1: /* advertise.c - the heart of adios */
   2: 
   3: #include "../h/mh.h"
   4: #include <stdio.h>
   5: #ifdef  BSD42
   6: #include <sys/types.h>
   7: #include <sys/uio.h>
   8: #endif	BSD42
   9: 
  10: /* For 4.2BSD systems, use writev() for slightly better performance.  Why?
  11:    Well, there are a couple of reasons.  Primarily, it gives a smoother
  12:    output...  More importantly though, it's a sexy syscall()...
  13:  */
  14: 
  15: extern int  errno;
  16: extern int  sys_nerr;
  17: extern char *sys_errlist[];
  18: 
  19: /*  */
  20: 
  21: /* VARARGS3 */
  22: 
  23: void advertise (what, tail, fmt, a, b, c, d, e, f)
  24: char   *what,
  25:        *tail,
  26:        *fmt,
  27:        *a,
  28:        *b,
  29:        *c,
  30:        *d,
  31:        *e,
  32:        *f;
  33: {
  34:     int     eindex = errno;
  35: #ifdef  BSD42
  36:     char    buffer[BUFSIZ],
  37:             err[BUFSIZ];
  38:     struct iovec    iob[20];
  39:     register struct iovec  *iov = iob;
  40: #endif	BSD42
  41: 
  42:     (void) fflush (stdout);
  43: 
  44: #ifndef BSD42
  45:     fprintf (stderr, "%s: ", invo_name);
  46:     fprintf (stderr, fmt, a, b, c, d, e, f);
  47:     if (what) {
  48:     if (*what)
  49:         fprintf (stderr, " %s: ", what);
  50:     if (eindex > 0 && eindex < sys_nerr)
  51:         fprintf (stderr, "%s", sys_errlist[eindex]);
  52:     else
  53:         fprintf (stderr, "Error %d", eindex);
  54:     }
  55:     if (tail)
  56:     fprintf (stderr, ", %s", tail);
  57:     (void) fputc ('\n', stderr);
  58: #else   BSD42
  59:     (void) fflush (stderr);
  60: 
  61:     iov -> iov_len = strlen (iov -> iov_base = invo_name);
  62:     iov++;
  63:     iov -> iov_len = strlen (iov -> iov_base = ": ");
  64:     iov++;
  65: 
  66:     (void) sprintf (buffer, fmt, a, b, c, d, e, f);
  67:     iov -> iov_len = strlen (iov -> iov_base = buffer);
  68:     iov++;
  69:     if (what) {
  70:     if (*what) {
  71:         iov -> iov_len = strlen (iov -> iov_base = " ");
  72:         iov++;
  73:         iov -> iov_len = strlen (iov -> iov_base = what);
  74:         iov++;
  75:         iov -> iov_len = strlen (iov -> iov_base = ": ");
  76:         iov++;
  77:     }
  78:     if (eindex > 0 && eindex < sys_nerr)
  79:         iov -> iov_len = strlen (iov -> iov_base = sys_errlist[eindex]);
  80:     else {
  81:         (void) sprintf (err, "Error %d", eindex);
  82:         iov -> iov_len = strlen (iov -> iov_base = err);
  83:     }
  84:     iov++;
  85:     }
  86:     if (tail && *tail) {
  87:     iov -> iov_len = strlen (iov -> iov_base = ", ");
  88:     iov++;
  89:     iov -> iov_len = strlen (iov -> iov_base = tail);
  90:     iov++;
  91:     }
  92:     iov -> iov_len = strlen (iov -> iov_base = "\n");
  93:     iov++;
  94:     (void) writev (fileno (stderr), iob, iov - iob);
  95: #endif	BSD42
  96: }

Defined functions

advertise defined in line 23; used 2 times
Last modified: 1985-09-21
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 875
Valid CSS Valid XHTML 1.0 Strict