diff options
Diffstat (limited to 'mdk-stage1/slang/slerr.c')
-rw-r--r-- | mdk-stage1/slang/slerr.c | 181 |
1 files changed, 0 insertions, 181 deletions
diff --git a/mdk-stage1/slang/slerr.c b/mdk-stage1/slang/slerr.c deleted file mode 100644 index 139b3859b..000000000 --- a/mdk-stage1/slang/slerr.c +++ /dev/null @@ -1,181 +0,0 @@ -/* error handling common to all routines. */ -/* Copyright (c) 1992, 1999, 2001 John E. Davis - * This file is part of the S-Lang library. - * - * You may distribute under the terms of either the GNU General Public - * License or the Perl Artistic License. - */ - -#include "slinclud.h" - -#include "slang.h" -#include "_slang.h" - -void (*SLang_VMessage_Hook) (char *, va_list); -void (*SLang_Error_Hook)(char *); -void (*SLang_Exit_Error_Hook)(char *, va_list); -volatile int SLang_Error = 0; -char *SLang_Error_Message; -volatile int SLKeyBoard_Quit = 0; - -static char *get_error_string (void) -{ - char *str; - - if (!SLang_Error) SLang_Error = SL_UNKNOWN_ERROR; - if (SLang_Error_Message != NULL) str = SLang_Error_Message; - else switch(SLang_Error) - { - case SL_NOT_IMPLEMENTED: str = "Not Implemented"; break; - case SL_APPLICATION_ERROR: str = "Application Error"; break; - case SL_VARIABLE_UNINITIALIZED: str = "Variable Uninitialized"; break; - case SL_MALLOC_ERROR : str = "Malloc Error"; break; - case SL_INTERNAL_ERROR: str = "Internal Error"; break; - case SL_STACK_OVERFLOW: str = "Stack Overflow"; break; - case SL_STACK_UNDERFLOW: str = "Stack Underflow"; break; - case SL_INTRINSIC_ERROR: str = "Intrinsic Error"; break; - case SL_USER_BREAK: str = "User Break"; break; - case SL_UNDEFINED_NAME: str = "Undefined Name"; break; - case SL_SYNTAX_ERROR: str = "Syntax Error"; break; - case SL_DUPLICATE_DEFINITION: str = "Duplicate Definition"; break; - case SL_TYPE_MISMATCH: str = "Type Mismatch"; break; - case SL_READONLY_ERROR: str = "Variable is read-only"; break; - case SL_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 SL_INVALID_PARM: str = "Invalid Parameter"; break; - case SL_TYPE_UNDEFINED_OP_ERROR: - str = "Operation not defined for datatype"; break; - case SL_USER_ERROR: - str = "User Error"; break; - case SL_USAGE_ERROR: - str = "Illegal usage of function"; - break; - case SL_FLOATING_EXCEPTION: - str = "Floating Point Exception"; - break; - case SL_UNKNOWN_ERROR: - default: str = "Unknown Error Code"; - } - - SLang_Error_Message = NULL; - return str; -} - -void SLang_doerror (char *error) -{ - char *str = NULL; - char *err; - char *malloced_err_buf; - char err_buf [1024]; - - malloced_err_buf = NULL; - - if (((SLang_Error == SL_USER_ERROR) - || (SLang_Error == SL_USAGE_ERROR)) - && (error != NULL) && (*error != 0)) - err = error; - else - { - char *sle = "S-Lang Error: "; - unsigned int len; - char *fmt; - - str = get_error_string (); - - fmt = "%s%s%s"; - if ((error == NULL) || (*error == 0)) - error = ""; - else if (SLang_Error == SL_UNKNOWN_ERROR) - /* Do not display an unknown error message if error is non-NULL */ - str = ""; - else - fmt = "%s%s: %s"; - - len = strlen (sle) + strlen (str) + strlen(error) + 1; - - err = err_buf; - if (len >= sizeof (err_buf)) - { - if (NULL == (malloced_err_buf = SLmalloc (len))) - err = NULL; - else - err = malloced_err_buf; - } - - if (err != NULL) sprintf (err, fmt, sle, str, error); - else err = "Out of memory"; - } - - if (SLang_Error_Hook == NULL) - { - fputs (err, stderr); - fputs("\r\n", stderr); - fflush (stderr); - } - else - (*SLang_Error_Hook)(err); - - SLfree (malloced_err_buf); -} - -void SLang_verror (int err_code, char *fmt, ...) -{ - va_list ap; - char err [1024]; - - if (err_code == 0) err_code = SL_INTRINSIC_ERROR; - if (SLang_Error == 0) SLang_Error = err_code; - - if (fmt != NULL) - { - va_start(ap, fmt); - (void) _SLvsnprintf (err, sizeof (err), fmt, ap); - fmt = err; - va_end(ap); - } - - SLang_doerror (fmt); -} - -void SLang_exit_error (char *fmt, ...) -{ - va_list ap; - - va_start (ap, fmt); - if (SLang_Exit_Error_Hook != NULL) - { - (*SLang_Exit_Error_Hook) (fmt, ap); - exit (1); - } - - if (fmt != NULL) - { - vfprintf (stderr, fmt, ap); - fputs ("\r\n", stderr); - fflush (stderr); - } - va_end (ap); - - exit (1); -} - -void SLang_vmessage (char *fmt, ...) -{ - va_list ap; - - if (fmt == NULL) - return; - - va_start (ap, fmt); - - if (SLang_VMessage_Hook != NULL) - (*SLang_VMessage_Hook) (fmt, ap); - else - { - vfprintf (stdout, fmt, ap); - fputs ("\r\n", stdout); - } - - va_end (ap); -} |