Tesseract
3.02
|
00001 /****************************************************************************** 00002 ** Filename: danerror.c 00003 ** Purpose: Routines for managing error trapping 00004 ** Author: Dan Johnson 00005 ** History: 3/17/89, DSJ, Created. 00006 ** 00007 ** (c) Copyright Hewlett-Packard Company, 1988. 00008 ** Licensed under the Apache License, Version 2.0 (the "License"); 00009 ** you may not use this file except in compliance with the License. 00010 ** You may obtain a copy of the License at 00011 ** http://www.apache.org/licenses/LICENSE-2.0 00012 ** Unless required by applicable law or agreed to in writing, software 00013 ** distributed under the License is distributed on an "AS IS" BASIS, 00014 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00015 ** See the License for the specific language governing permissions and 00016 ** limitations under the License. 00017 ******************************************************************************/ 00021 #include "host.h" 00022 #include "danerror.h" 00023 #include "tprintf.h" 00024 #include "globaloc.h" 00025 #ifdef __UNIX__ 00026 #include "assert.h" 00027 #endif 00028 00029 #include <stdio.h> 00030 00031 /*---------------------------------------------------------------------------*/ 00032 void DoError(int Error, const char *Message) { 00033 /* 00034 ** Parameters: 00035 ** Error error number which is to be trapped 00036 ** Message pointer to a string to be printed as an error message 00037 ** Globals: 00038 ** ErrorTrapStack stack of error traps 00039 ** CurrentTrapDepth number of traps on the stack 00040 ** Operation: 00041 ** This routine prints the specified error message to stderr. 00042 ** It then jumps to the current error trap. If the error trap 00043 ** stack is empty, the calling program is terminated with a 00044 ** fatal error message. 00045 ** Return: 00046 ** None - this routine does not return. 00047 ** Exceptions: 00048 ** Empty error trap stack terminates the calling program. 00049 ** History: 00050 ** 4/3/89, DSJ, Created. 00051 */ 00052 if (Message != NULL) { 00053 tprintf("\nError: %s!\n", Message); 00054 } 00055 00056 signal_termination_handler(Error); 00057 } /* DoError */