errors.c: (Matching .h file)


/* errors.c
 * © copyright 1999 by John Halleck
 * All rights reserved
 */
/* Version of August 24th, 1999 */

#include <stdio.h>

#include "errors.h"
/* Let us get the error codes */

/* Revision history
 * Version 0.6, August 24th, 1999
 *   Added the abort routine.
 * Version 0.5, August 12th, 1999
 *   Added error history.
 * Version 0.4, July 16th, 1999
 *   Added "false" error code.
 *   Added "notfound" error code.
 * Version 0.3, June 29th, 1999
 *   Added error codes.
 * Version 0.2, June 25th, 1999
 *   made routine name agree with .h file. *** ARGH ***
 * Version 0.1, June 5th, 1999
 *   Initial creation.
 */

/* visible error history */
error lasterror   = NoError;
char *lastfile    = 0;
int   lastline    = 0;
char *lastmessage = 0;

char *errormessages[] = {
  "(0)NoError: Everything OK",
  "(1)ERRfalse: Condition was false",
  "(2)ERRnotfound: Not found",
  "(3)ERRnil: pointers must be non nil",
  "(4)ERRsame: arrays must be distinct",
  "(5)ERRsize: arrays must have positive sizes",
  "(6)ERRrange: indices must be within array",
  "(7)ERRnumeric: result is not numericly significant",
  "(8)ERRconform: arguments don't conform correctly",
  "(9)ERRnomem: out of memory",
  "(10)ERRnodisk: out of disk",
  "(11)ERRsysIO: Some system I/O error",
  "(12)ERRnotimplemented: Execution of unimplemented code",
  "(13)ERRmeaning: Meaningless operation",
  "(14)ERRvalue: Value out of range",
  "(15)ERRuninitialized: Use of uninitialized value or package",
  "(16)ERRreinitialized: Attempt to initialize package twice",
  "(17)ERRbaddata: Data given was bad.",
  "(18)ERRempty: Empty list or omitted list",
  "(19)ERRnesting: Calls badly nested",
  "(20)ERRendoffile: No more characters left",
  "(21)ERRoverflow: No more data space available",
  "(22)ERRcorrupt: Internal error, possibly corrupt data????",
  "(23)ERRendofline: End of line seen while expecting more?"
};

/* Canned routine to dump error messages. */
error printerror (error whichone) {

   if (whichone < 0 || whichone > maxERR) {
      printf ("Unknown error code: (%d) ???\n", whichone);
      return ERRnotfound;
   }

   printf ("%s\n",errormessages[whichone]);
   return NoError;
}

/* internal dump routine */
static error mydumperror
      (error which, char *kind, char *text, char *file, int line)
{
  if (!kind)         printf ("***[]\a");
  else if (!*kind)   printf ("***\"\"\a");
  else               printf ("%s", kind);
  if (text && *text) printf (" %s", text);
                     printf ("\n");
  if (file && *file) printf ("In file \"%s\", ", file);
  if (line)          printf ("at line %d", line);
  return             printerror (which);
}

/* Output text of last error, if any.  (No print if NoError)  */
extern error dumperror() {
  if (lasterror) {
     return mydumperror (lasterror, "ERROR:", lastmessage, lastfile, lastline);
  } else return ERRnotfound;
}

/* Note where an error occurred */
error seterror (error Which, char *whichfile, int line, char *text) {
  lasterror = Which;
  lastfile  = whichfile;
  lastline  = line;
  lastmessage = text;
  return Which;
}

/* Clear an error status */
error clearerror() {
  lasterror   = NoError;
  lastfile    = 0;
  lastline    = 0;
  lastmessage = 0;
  return NoError;
}

extern error aborterror (error whichone, char *text) {
   mydumperror (whichone, "***\a ABORT:", text, 0, 0);
   exit (whichone);
}


Go to ...


This page is http://www.cc.utah.edu/~nahaj/cave/survey/code/c/errors.c.html
© Copyright 2000 by John Halleck, All Rights Reserved.
This snapshot was last modified on August 23rd, 2000
And the underlying file was last modified on May 11th, 2000