This is slerr.c in view mode; [Download] [Up]
/* error handling common to all routines. */ /* Copyright (c) 1992, 1995 John E. Davis * All rights reserved. * * You may distribute under the terms of either the GNU General Public * License or the Perl Artistic License. */ #include "config.h" #include <stdio.h> #include <string.h> #include <stdarg.h> #ifdef HAVE_STDLIB_H # include <stdlib.h> #endif #include "slang.h" #include "_slang.h" void (*SLang_Error_Routine)(char *); void (*SLang_Exit_Error_Hook)(char *); volatile int SLang_Error = 0; char *SLang_Error_Message; static char *get_error_string (void) { char *str; if (!SLang_Error) SLang_Error = UNKNOWN_ERROR; if (SLang_Error_Message != NULL) str = SLang_Error_Message; else switch(SLang_Error) { case SL_INVALID_PARM: str = "Invalid Parameter"; break; case SL_MALLOC_ERROR : str = "Malloc Error."; break; case INTERNAL_ERROR: str = "Internal error"; break; case STACK_OVERFLOW: str = "Stack Overflow"; break; case STACK_UNDERFLOW: str = "Stack Underflow"; break; case INTRINSIC_ERROR: str = "Intrinsic Error"; break; case USER_BREAK: str = "User Break!"; break; case UNDEFINED_NAME: str = "Undefined Name"; break; case SYNTAX_ERROR: str = "Syntax Error"; break; case DUPLICATE_DEFINITION: str = "Duplicate Definition"; break; case TYPE_MISMATCH: str = "Type Mismatch"; break; case READONLY_ERROR: str = "Variable is read only."; break; case DIVIDE_ERROR: str = "Divide by zero."; break; case SL_OBJ_NOPEN: str = "Object not opened"; break; case SL_OBJ_UNKNOWN: str = "Object unknown"; break; case UNKNOWN_ERROR: default: str = "Unknown Error."; } SLang_Error_Message = NULL; return str; } void SLang_doerror (char *error) { char err [1024]; char *str = NULL; *err = 0; str = get_error_string (); sprintf(err, "S-Lang Error: %s: %s", ((error == NULL) ? "" : error), str); if (SLang_Error_Routine == NULL) { fputs (err, stderr); fputs("\r\n", stderr); } else (*SLang_Error_Routine)(err); } void _SLdo_error (char *fmt, ...) { va_list ap; char err [1024]; va_start(ap, fmt); (void) vsprintf (err, fmt, ap); va_end(ap); SLang_doerror (err); } void SLang_exit_error (char *s) { if (SLang_Exit_Error_Hook != NULL) { (*SLang_Exit_Error_Hook) (s); } if (s != NULL) fprintf (stderr, "%s\n", s); exit (-1); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.