|
|
1.1 root 1: # include <ingres.h>
2: # include <symbol.h>
3: # include "IIglobals.h"
4: # include <sccs.h>
5:
6: SCCSID(@(#)IIerror.c 8.1 12/31/84)
7:
8:
9: /*
10: ** IIerror -- std. equel error reporting routine.
11: **
12: ** IIerror is called either directly by a
13: ** routine detecting an error or by
14: ** IIrdpipe where INGRES returns an error.
15: **
16: ** In the case of an appropriate error, IIerrflag is set to
17: ** prevent the reading of the ovqp data pipe. This happens
18: ** on errors that happen during retrieves to C vars.
19: **
20: ** Errno is the error number: 1??? is an equel error
21: ** others are Ingres errors.
22: **
23: ** Argc and argv are structured as in Unix main program calls.
24: **
25: ** The error is printed if the call (*IIprint_err)()
26: ** returns > 0. Otherwise no error message is printed.
27: ** The error message that is printed is the one corresponding
28: ** to the number returned by (*IIprint_err)().
29: */
30:
31: extern IIret_err();
32: int (*IIprint_err)() = IIret_err;
33:
34:
35: IIerror(errno, argc, argv)
36: int errno, argc;
37: char *argv [];
38: {
39: register int i;
40:
41: # ifdef xETR1
42: if (IIdebug > 1)
43: printf("ent IIerror : errno %d, argc %d\n", errno, argc);
44: # endif
45:
46: IIerrflag = errno;
47: if (!(errno = (*IIprint_err)(errno)))
48: {
49: # ifdef xETR2
50: if (IIdebug > 1)
51: printf("IIerror : IIprint_err returned 0\n");
52: # endif
53: /* if must restore printing turned off in IIw_left()
54: * or IIw_right(), then do so.
55: */
56: if (IIo_print)
57: {
58: IIprint_err = IIo_print;
59: IIo_print = 0;
60: }
61: return;
62: }
63:
64: if (errno > 2000)
65: printf("INGRES ERROR: ");
66: else
67: printf("EQUEL ERROR: ");
68:
69: if (!IIp_err(errno, argc, argv))
70: {
71: /* couldn't process error in IIp_err() */
72: printf(" %d with parameters:",errno);
73: for (i = 0; i < argc; )
74: printf(" %s", argv [i++]);
75: printf("\n");
76: }
77: if (IIproc_name)
78: printf("On file %s line %d.\n", IIproc_name, IIline_no);
79: }
80:
81: /*
82: ** IIret_err -- returns its single argument for IIerror.
83: **
84: */
85:
86: IIret_err(err)
87: int err;
88: {
89: return (err);
90: }
91:
92: /*
93: ** IIno_err -- returns 0. Called from IIerror
94: ** (through (*IIprint_err)())
95: ** to supress error message printing.
96: */
97:
98: IIno_err(err)
99: int err;
100: {
101: return (0);
102: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.