X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Flibpspp%2Fmessage.h;h=e345ea655132858d34a4f708e5b9f737b00aee5d;hb=8e018d25310cb53e5339b46e95f0abe02db83782;hp=56ded21c5f3be1877c72ebd9f0ccb12732c052a0;hpb=9c8c1170e3b3cb59f9bf8fe6b27ecba7067b8cfa;p=pspp-builds.git diff --git a/src/libpspp/message.h b/src/libpspp/message.h index 56ded21c..e345ea65 100644 --- a/src/libpspp/message.h +++ b/src/libpspp/message.h @@ -1,5 +1,5 @@ /* PSPP - computes sample statistics. - Copyright (C) 1997-9, 2000 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc. Written by Ben Pfaff . This program is free software; you can redistribute it and/or @@ -17,21 +17,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#if !error_h -#define error_h 1 +#ifndef MESSAGE_H +#define MESSAGE_H 1 #include #include -#include "compiler.h" - -/* Message classes. */ -enum msg_class - { - ME, MW, MN, /* General error/warning/note. */ - SE, SW, SN, /* Script error/warning/note. */ - DE, DW, DN, /* Data-file error/note. */ - MSG_CLASS_CNT, - }; +#include /* What kind of message is this? */ enum msg_category @@ -49,6 +40,16 @@ enum msg_severity MSG_NOTE }; +/* Combination of a category and a severity for convenience. */ +enum msg_class + { + ME, MW, MN, /* General error/warning/note. */ + SE, SW, SN, /* Script error/warning/note. */ + DE, DW, DN, /* Data-file error/note. */ + MSG_CLASS_CNT, + }; + + static inline enum msg_category msg_class_to_category (enum msg_class class) { @@ -69,64 +70,47 @@ msg_class_from_category_and_severity (enum msg_category category, } /* A file location. */ -struct file_locator +struct msg_locator { const char *file_name; /* File name. */ int line_number; /* Line number. */ }; -/* An error message. */ -struct error +/* A message. */ +struct msg { enum msg_category category; /* Message category. */ enum msg_severity severity; /* Message severity. */ - struct file_locator where; /* File location, or (NULL, -1). */ + struct msg_locator where; /* File location, or (NULL, -1). */ char *text; /* Error text. */ }; -/* Number of errors, warnings reported. */ -extern int err_error_count; -extern int err_warning_count; +/* Initialization. */ +void msg_init ( void (*handler) (const struct msg *), + void (*location) (struct msg_locator *) ) ; -/* If number of allowable errors/warnings is exceeded, then a message - is displayed and this flag is set to suppress subsequent - messages. */ -extern int err_already_flagged; +void msg_done (void); -/* Nonnegative verbosity level. Higher value == more verbose. */ -extern int err_verbosity; +struct msg * msg_dup(const struct msg *m); +void msg_destroy(struct msg *m); /* Emitting messages. */ void msg (enum msg_class, const char *format, ...) PRINTF_FORMAT (2, 3); -void err_msg (const struct error *); - -void verbose_msg (int level, const char *format, ...) - PRINTF_FORMAT (2, 3); - -/* File-locator stack. */ -void err_push_file_locator (const struct file_locator *); -void err_pop_file_locator (const struct file_locator *); -void err_location (struct file_locator *); - -/* Obscure functions. */ -void err_set_command_name (const char *); -void err_done (void); -void err_check_count (void); - -/* Used in panic situations only */ -void request_bug_report_and_abort(const char *msg ); - -void err_assert_fail(const char *expr, const char *file, int line); +void msg_emit (struct msg *); -#undef __STRING -#define __STRING(x) #x -#undef assert +/* Enable and disable messages. */ +void msg_enable (void); +void msg_disable (void); - -#define assert(expr) ( (void) ( expr ? (void) 0 : \ - err_assert_fail(__STRING(expr), __FILE__, __LINE__)) ) +/* Error context. */ +void msg_set_command_name (const char *); +const char *msg_get_command_name (void); +void msg_push_msg_locator (const struct msg_locator *); +void msg_pop_msg_locator (const struct msg_locator *); +/* Used in panic situations only. */ +void request_bug_report_and_abort (const char *msg) NO_RETURN; -#endif /* error.h */ +#endif /* message.h */