home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / ingres04.lzh / source / libq / IIerror.c < prev    next >
Encoding:
C/C++ Source or Header  |  1985-01-23  |  2.0 KB  |  103 lines

  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. }
  103.