changeset 222:a592507b3bad

[project @ 1993-11-14 10:54:16 by jwe] Initial revision
author jwe
date Sun, 14 Nov 1993 10:54:16 +0000
parents e2110730e556
children 82c050e70f7a
files libcruft/misc/lo-error.cc liboctave/lo-error.h
diffstat 2 files changed, 130 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
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 <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+#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: ***
+*/
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: ***
+*/