|
|
1.1 ! root 1: # include <stdio.h> ! 2: # include <ingres.h> ! 3: # include <aux.h> ! 4: # include <sccs.h> ! 5: ! 6: SCCSID(@(#)error.c 7.2 5/31/83) ! 7: ! 8: # define ERRDELIM '~' ! 9: ! 10: /* ! 11: ** PROCESS ERROR MESSAGE (Standalone override) ! 12: ** ! 13: ** This routine replaces the "error" routine for use in ! 14: ** standalone routines such as creatdb and printr. Its usage ! 15: ** is identical to that of normal "error". ! 16: ** ! 17: ** This routine is assumed to be called by process five; hence, ! 18: ** all error messages it produces have a 5000 offset. ! 19: ** ! 20: */ ! 21: ! 22: error(number, argvect) ! 23: int number; ! 24: char *argvect; ! 25: { ! 26: FILE *iop; ! 27: char **pv; ! 28: int i; ! 29: register char *p; ! 30: register int err; ! 31: char buf[10]; ! 32: register char c; ! 33: char *errfilen(); ! 34: ! 35: pv = &argvect; ! 36: err = number; ! 37: if ((iop = fopen(errfilen(5), "r")) == NULL) ! 38: syserr("error: open"); ! 39: ! 40: /* read in the code and check for correct */ ! 41: for (;;) ! 42: { ! 43: p = buf; ! 44: while ((c = getc(iop)) != '\t') ! 45: { ! 46: if (c <= 0) ! 47: { ! 48: /* no code exists, print the first parm */ ! 49: printf("%d: %s\n\n", err, pv[0]); ! 50: fclose(iop); ! 51: return (err); ! 52: } ! 53: *p++ = c; ! 54: } ! 55: *p = 0; ! 56: i = atoi(buf); ! 57: if (i != err) ! 58: { ! 59: while ((c = getc(iop)) != ERRDELIM) ! 60: if (c <= 0) ! 61: syserr("proc_error: format err %d", err); ! 62: getc(iop); /* throw out the newline */ ! 63: continue; ! 64: } ! 65: ! 66: /* got the correct line, print it doing parameter substitution */ ! 67: printf("%d: ", err); ! 68: c = '\n'; ! 69: for (;;) ! 70: { ! 71: c = getc(iop); ! 72: if (c == EOF || c == ERRDELIM) ! 73: { ! 74: printf("\n"); ! 75: fclose(iop); ! 76: return (err); ! 77: } ! 78: if (c == '%') ! 79: { ! 80: c = getc(iop); ! 81: for (p = pv[c - '0']; c = *p; p++) ! 82: { ! 83: putchar(c); ! 84: } ! 85: continue; ! 86: } ! 87: putchar(c); ! 88: } ! 89: } ! 90: } ! 91: ! 92: nferror(number, arg1, arg2, arg3, arg4, arg5, arg6) ! 93: int number; ! 94: { ! 95: error(number, arg1, arg2, arg3, arg4, arg5, arg6); ! 96: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.