From: Ben Pfaff Date: Tue, 25 Apr 2006 18:11:08 +0000 (+0000) Subject: Finish reforming error message support. In this phase, move message.c X-Git-Tag: v0.6.0~952 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4d86bb87eedc899cdfe0df8f9f2367080db8c7cc;p=pspp-builds.git Finish reforming error message support. In this phase, move message.c into libpspp. --- diff --git a/src/ChangeLog b/src/ChangeLog index e656b93a..e4e5014f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +Tue Apr 25 11:06:49 2006 Ben Pfaff + + Finish reforming error message support. In this phase, move + message.c into libpspp. + + * message.c: Move to libpspp. + Tue Apr 25 10:47:37 2006 Ben Pfaff Continue reforming error message support. In this phase, drop diff --git a/src/libpspp/ChangeLog b/src/libpspp/ChangeLog index ce4acf90..b3c5b065 100644 --- a/src/libpspp/ChangeLog +++ b/src/libpspp/ChangeLog @@ -1,3 +1,13 @@ +Tue Apr 25 11:07:19 2006 Ben Pfaff + + Finish reforming error message support. In this phase, move + message.c into libpspp. + + * message.c: Move here from src/. Also remove a few unneeded + headers. + + * automake.mk (src_libpspp_libpspp_a_SOURCES): Add message.c. + Tue Apr 25 10:54:44 2006 Ben Pfaff Continue reforming error message support. In this phase, drop diff --git a/src/libpspp/automake.mk b/src/libpspp/automake.mk index 4d796953..82fe0573 100644 --- a/src/libpspp/automake.mk +++ b/src/libpspp/automake.mk @@ -22,6 +22,7 @@ src_libpspp_libpspp_a_SOURCES = \ src/libpspp/misc.h \ src/libpspp/pool.c \ src/libpspp/pool.h \ + src/libpspp/message.c \ src/libpspp/message.h \ src/libpspp/start-date.c \ src/libpspp/start-date.h \ diff --git a/src/libpspp/message.c b/src/libpspp/message.c new file mode 100644 index 00000000..34ca65ce --- /dev/null +++ b/src/libpspp/message.c @@ -0,0 +1,155 @@ +/* PSPP - computes sample statistics. + Copyright (C) 1997-9, 2000 Free Software Foundation, Inc. + Written by Ben Pfaff . + + This program 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 of the + License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ + +#include + +#include + +#include +#include +#include + +#include +#include + +#include "progname.h" +#include "xvasprintf.h" + +/* Current command name as set by msg_set_command_name(). */ +static char *command_name; + +/* Message handler as set by msg_init(). */ +static void (*msg_handler) (const struct msg *); + +/* Public functions. */ + +/* Writes error message in CLASS, with text FORMAT, formatted with + printf, to the standard places. */ +void +msg (enum msg_class class, const char *format, ...) +{ + struct msg m; + va_list args; + + m.category = msg_class_to_category (class); + m.severity = msg_class_to_severity (class); + msg_location (&m.where); + va_start (args, format); + m.text = xvasprintf (format, args); + va_end (args); + + msg_emit (&m); +} + +void +msg_init (void (*handler) (const struct msg *)) +{ + msg_handler = handler; +} + +void +msg_done (void) +{ +} + +/* Emits M as an error message. + Frees allocated data in M. */ +void +msg_emit (struct msg *m) +{ + msg_handler (m); + free (m->text); +} + +/* Private functions. */ + +/* Sets COMMAND_NAME as the command name included in some kinds + of error messages. */ +void +msg_set_command_name (const char *command_name_) +{ + free (command_name); + command_name = command_name_ ? xstrdup (command_name_) : NULL; +} + +/* Returns the current command name, or NULL if none. */ +const char * +msg_get_command_name (void) +{ + return command_name; +} + +void +request_bug_report_and_abort(const char *msg ) +{ + fprintf(stderr, + "******************************************************************\n" + "You have discovered a bug in PSPP.\n\n" + " Please report this, by sending " + "an email to " PACKAGE_BUGREPORT ",\n" + "explaining what you were doing when this happened, and including\n" + "a sample of your input file which caused it.\n"); + + fprintf(stderr, + "Also, please copy the following lines into your bug report:\n\n" + "bare_version: %s\n" + "version: %s\n" + "stat_version: %s\n" + "host_system: %s\n" + "build_system: %s\n" + "default_config_path: %s\n" + "include_path: %s\n" + "groff_font_path: %s\n" + "locale_dir: %s\n" + "compiler version: %s\n" + , + + bare_version, + version, + stat_version, + host_system, + build_system, + default_config_path, + include_path, + groff_font_path, + locale_dir, +#ifdef __VERSION__ + __VERSION__ +#else + "Unknown" +#endif + ); + + if ( msg ) + fprintf(stderr,"Diagnosis: %s\n",msg); + + fprintf(stderr, + "******************************************************************\n"); + + abort(); +} + +void +msg_assert_fail(const char *expr, const char *file, int line) +{ + char msg[256]; + snprintf(msg,256,"Assertion failed: %s:%d; (%s)",file,line,expr); + request_bug_report_and_abort( msg ); +} + diff --git a/src/message.c b/src/message.c deleted file mode 100644 index 27fe62d3..00000000 --- a/src/message.c +++ /dev/null @@ -1,158 +0,0 @@ -/* PSPP - computes sample statistics. - Copyright (C) 1997-9, 2000 Free Software Foundation, Inc. - Written by Ben Pfaff . - - This program 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 of the - License, or (at your option) any later version. - - This program 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 this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. */ - -#include - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "progname.h" -#include "xvasprintf.h" - -/* Current command name as set by msg_set_command_name(). */ -static char *command_name; - -/* Message handler as set by msg_init(). */ -static void (*msg_handler) (const struct msg *); - -/* Public functions. */ - -/* Writes error message in CLASS, with text FORMAT, formatted with - printf, to the standard places. */ -void -msg (enum msg_class class, const char *format, ...) -{ - struct msg m; - va_list args; - - m.category = msg_class_to_category (class); - m.severity = msg_class_to_severity (class); - msg_location (&m.where); - va_start (args, format); - m.text = xvasprintf (format, args); - va_end (args); - - msg_emit (&m); -} - -void -msg_init (void (*handler) (const struct msg *)) -{ - msg_handler = handler; -} - -void -msg_done (void) -{ -} - -/* Emits M as an error message. - Frees allocated data in M. */ -void -msg_emit (struct msg *m) -{ - msg_handler (m); - free (m->text); -} - -/* Private functions. */ - -/* Sets COMMAND_NAME as the command name included in some kinds - of error messages. */ -void -msg_set_command_name (const char *command_name_) -{ - free (command_name); - command_name = command_name_ ? xstrdup (command_name_) : NULL; -} - -/* Returns the current command name, or NULL if none. */ -const char * -msg_get_command_name (void) -{ - return command_name; -} - -void -request_bug_report_and_abort(const char *msg ) -{ - fprintf(stderr, - "******************************************************************\n" - "You have discovered a bug in PSPP.\n\n" - " Please report this, by sending " - "an email to " PACKAGE_BUGREPORT ",\n" - "explaining what you were doing when this happened, and including\n" - "a sample of your input file which caused it.\n"); - - fprintf(stderr, - "Also, please copy the following lines into your bug report:\n\n" - "bare_version: %s\n" - "version: %s\n" - "stat_version: %s\n" - "host_system: %s\n" - "build_system: %s\n" - "default_config_path: %s\n" - "include_path: %s\n" - "groff_font_path: %s\n" - "locale_dir: %s\n" - "compiler version: %s\n" - , - - bare_version, - version, - stat_version, - host_system, - build_system, - default_config_path, - include_path, - groff_font_path, - locale_dir, -#ifdef __VERSION__ - __VERSION__ -#else - "Unknown" -#endif - ); - - if ( msg ) - fprintf(stderr,"Diagnosis: %s\n",msg); - - fprintf(stderr, - "******************************************************************\n"); - - abort(); -} - -void -msg_assert_fail(const char *expr, const char *file, int line) -{ - char msg[256]; - snprintf(msg,256,"Assertion failed: %s:%d; (%s)",file,line,expr); - request_bug_report_and_abort( msg ); -} - diff --git a/src/ui/gui/ChangeLog b/src/ui/gui/ChangeLog index f4d3b0d2..7f87bbda 100644 --- a/src/ui/gui/ChangeLog +++ b/src/ui/gui/ChangeLog @@ -1,3 +1,10 @@ +Tue Apr 25 11:08:04 2006 Ben Pfaff + + Finish reforming error message support. In this phase, move + message.c into libpspp. + + * automake.mk: (src_ui_gui_psppire_SOURCES) Remove src/message.c. + Tue Apr 25 10:56:53 2006 Ben Pfaff Continue reforming error message support. In this phase, drop diff --git a/src/ui/gui/automake.mk b/src/ui/gui/automake.mk index f1dea453..5365451c 100644 --- a/src/ui/gui/automake.mk +++ b/src/ui/gui/automake.mk @@ -55,5 +55,4 @@ src_ui_gui_psppire_SOURCES = \ src/ui/gui/var-sheet.c \ src/ui/gui/var-sheet.h \ src/ui/gui/var-type-dialog.c \ - src/ui/gui/var-type-dialog.h \ - src/message.c + src/ui/gui/var-type-dialog.h diff --git a/src/ui/terminal/ChangeLog b/src/ui/terminal/ChangeLog index fedd9e3f..a1efa112 100644 --- a/src/ui/terminal/ChangeLog +++ b/src/ui/terminal/ChangeLog @@ -1,3 +1,10 @@ +Tue Apr 25 11:08:17 2006 Ben Pfaff + + Finish reforming error message support. In this phase, move + message.c into libpspp. + + * automake.mk: Remove message.c from sources. + Tue Apr 25 10:58:19 2006 Ben Pfaff Continue reforming error message support. In this phase, drop diff --git a/src/ui/terminal/automake.mk b/src/ui/terminal/automake.mk index 805cd6c2..cc33e32b 100644 --- a/src/ui/terminal/automake.mk +++ b/src/ui/terminal/automake.mk @@ -14,7 +14,6 @@ src_ui_terminal_libui_a_SOURCES = \ bin_PROGRAMS += src/ui/terminal/pspp src_ui_terminal_pspp_SOURCES = \ - src/message.c \ src/procedure.c \ src/procedure.h