1: # include   <stdio.h>
   2: # include   <sccs.h>
   3: 
   4: SCCSID(@(#)syserr.c	8.1	12/31/84)
   5: 
   6: /*
   7: **  SYSERR -- SYStem ERRor message print and abort
   8: **
   9: **	Syserr acts like a printf with up to five arguments.
  10: **
  11: **	If the first argument to syserr is not zero,
  12: **	the message "SYSERR:" is prepended.
  13: **
  14: **	If the extern variable `Proc_name' is assigned to a
  15: **	string, that string is prepended to the message.
  16: **
  17: **	All arguments must be null-terminated.
  18: **
  19: **	The function pointed to by `ExitFn' is then called.
  20: **	It is initialized to be `exit'.
  21: */
  22: 
  23: char    *Proc_name;
  24: int Accerror;
  25: extern  exit(), abort();
  26: int (*ExitFn)()  = exit;
  27: 
  28: syserr(pv)
  29: char    *pv;
  30: {
  31:     int     pid;
  32:     register char   **p;
  33:     extern int  errno;
  34:     register int    usererr;
  35:     register int    exitvalue;
  36: 
  37:     p = &pv;
  38:     printf("\n");
  39:     usererr = pv == 0;
  40: 
  41:     if (!usererr)
  42:     {
  43:         if (Proc_name)
  44:             printf("%s ", Proc_name);
  45:         printf("\007SYSERR: ");
  46:     }
  47:     else
  48:         p++;
  49:     printf(p[0], p[1], p[2], p[3], p[4], p[5]);
  50:     printf("\007\n");
  51:     exitvalue = -1;
  52:     if (!usererr)
  53:     {
  54:         if (errno)
  55:         {
  56:             exitvalue = errno;
  57:             perror("UNIX error");
  58:         }
  59:         if (Accerror != 0)
  60:         {
  61:             printf("\taccess method error %d\n", Accerror);
  62:         }
  63:     }
  64:     fflush(stdout);
  65:     if (ExitFn == exit)
  66:         ExitFn = abort;
  67:     (*ExitFn)(exitvalue);
  68: }

Defined functions

Defined variables

Accerror defined in line 24; used 2 times
Proc_name defined in line 23; used 2 times
Last modified: 1986-04-17
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1064
Valid CSS Valid XHTML 1.0 Strict