# HG changeset patch # User jwe # Date 753274456 0 # Node ID a592507b3badea913d9c4777196be1689e82f9ec # Parent e2110730e556e20002b307b7fcd46d6d85dc9408 [project @ 1993-11-14 10:54:16 by jwe] Initial revision diff --git a/libcruft/misc/lo-error.cc b/libcruft/misc/lo-error.cc new file mode 100644 --- /dev/null +++ b/libcruft/misc/lo-error.cc @@ -0,0 +1,76 @@ +// error.cc -*- C++ -*- +/* + +Copyright (C) 1992, 1993 John W. Eaton + +This file is part of Octave. + +Octave is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +Octave is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Octave; see the file COPYING. If not, write to the Free +Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#ifdef __GNUG__ +#pragma implementation +#endif + +#include +#include +#include + +#include "liboctave-error.h" + +static +liboctave_error_handler default_liboctave_error_handler = liboctave_fatal; + +static +liboctave_error_handler current_liboctave_error_handler = liboctave_fatal; + +static void +verror (const char *name, const char *fmt, va_list args) +{ + if (name != (char *) NULL) + fprintf (stderr, "%s: ", name); + + vfprintf (stderr, fmt, args); + fprintf (stderr, "\n"); + fflush (stderr); +} + +void +set_liboctave_error_handler (liboctave_error_handler f) +{ + if (f) + current_liboctave_error_handler = f; + else + current_liboctave_error_handler = default_liboctave_error_handler; +} + +void +liboctave_fatal (const char *fmt, ...) +{ + va_list args; + va_start (args, fmt); + verror ("fatal", fmt, args); + va_end (args); + + exit (1); +} + +/* +;;; Local Variables: *** +;;; mode: C++ *** +;;; page-delimiter: "^/\\*" *** +;;; End: *** +*/ diff --git a/liboctave/lo-error.h b/liboctave/lo-error.h new file mode 100644 --- /dev/null +++ b/liboctave/lo-error.h @@ -0,0 +1,54 @@ +// error.h -*- C++ -*- +/* + +Copyright (C) 1992, 1993 John W. Eaton + +This file is part of Octave. + +Octave is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +Octave is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Octave; see the file COPYING. If not, write to the Free +Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#if !defined (_error_h) +#define _error_h 1 + +#ifdef __GNUG__ +#pragma interface +#endif + +// Tell g++ that fatal doesn't return; + +#ifdef __GNUG__ +typedef void v_fcn_cpc_x (const char *, ...); +volatile v_fcn_cpc_x fatal; +#endif + +typedef void (*liboctave_error_handler) (const char *, ...); + +extern void set_liboctave_error_handler (liboctave_error_handler f); + +extern void liboctave_fatal (const char *fmt, ...); + +// Current error state. +extern int error_state; + +#endif + +/* +;;; Local Variables: *** +;;; mode: C++ *** +;;; page-delimiter: "^/\\*" *** +;;; End: *** +*/