/****************************************************************************** ** Filename: danerror.c ** Purpose: Routines for managing error trapping ** Author: Dan Johnson ** History: 3/17/89, DSJ, Created. ** ** (c) Copyright Hewlett-Packard Company, 1988. ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** http://www.apache.org/licenses/LICENSE-2.0 ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. ******************************************************************************/ /**---------------------------------------------------------------------------- Include Files and Type Defines ----------------------------------------------------------------------------**/ #include "host.h" #include "danerror.h" #include "tprintf.h" #include "globaloc.h" #ifdef __UNIX__ #include "assert.h" #endif #include /*---------------------------------------------------------------------------*/ void DoError(int Error, const char *Message) { /* ** Parameters: ** Error error number which is to be trapped ** Message pointer to a string to be printed as an error message ** Globals: ** ErrorTrapStack stack of error traps ** CurrentTrapDepth number of traps on the stack ** Operation: ** This routine prints the specified error message to stderr. ** It then jumps to the current error trap. If the error trap ** stack is empty, the calling program is terminated with a ** fatal error message. ** Return: ** None - this routine does not return. ** Exceptions: ** Empty error trap stack terminates the calling program. ** History: ** 4/3/89, DSJ, Created. */ if (Message != NULL) { tprintf("\nError: %s!\n", Message); } signal_termination_handler(Error); } /* DoError */