From 7a19b4cae931b70b47fc865972c8e6c04c157b02 Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Mon, 25 Dec 2000 22:07:01 +0000 Subject: [PATCH] Use a MessageBox for fatal messages. Collect eror message into a buffer, 2000-12-25 Tor Lillqvist * gmessages.c: (Win32) Use a MessageBox for fatal messages. Collect eror message into a buffer, and display that. * glib.def: Update. * glibconfig.h.win32.in: Update. Remove unused wchar and wctype macros, add G_MODULE_SUFFIX. --- ChangeLog | 10 ++++++++++ ChangeLog.pre-2-0 | 10 ++++++++++ ChangeLog.pre-2-10 | 10 ++++++++++ ChangeLog.pre-2-12 | 10 ++++++++++ ChangeLog.pre-2-2 | 10 ++++++++++ ChangeLog.pre-2-4 | 10 ++++++++++ ChangeLog.pre-2-6 | 10 ++++++++++ ChangeLog.pre-2-8 | 10 ++++++++++ glib.def | 26 +++++++++++++------------- glib/glib.def | 26 +++++++++++++------------- glib/gmessages.c | 23 +++++++++++++++++++++++ glibconfig.h.win32.in | 3 +-- gmessages.c | 23 +++++++++++++++++++++++ 13 files changed, 153 insertions(+), 28 deletions(-) diff --git a/ChangeLog b/ChangeLog index a7dfc16..0887081 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2000-12-25 Tor Lillqvist + + * gmessages.c: (Win32) Use a MessageBox for fatal + messages. Collect eror message into a buffer, and display that. + + * glib.def: Update. + + * glibconfig.h.win32.in: Update. Remove unused wchar and wctype + macros, add G_MODULE_SUFFIX. + 2000-12-24 Ali Abdin * Makefile.am, gcompat.h, glib.h: New gcompat.h header file diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index a7dfc16..0887081 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,13 @@ +2000-12-25 Tor Lillqvist + + * gmessages.c: (Win32) Use a MessageBox for fatal + messages. Collect eror message into a buffer, and display that. + + * glib.def: Update. + + * glibconfig.h.win32.in: Update. Remove unused wchar and wctype + macros, add G_MODULE_SUFFIX. + 2000-12-24 Ali Abdin * Makefile.am, gcompat.h, glib.h: New gcompat.h header file diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index a7dfc16..0887081 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,13 @@ +2000-12-25 Tor Lillqvist + + * gmessages.c: (Win32) Use a MessageBox for fatal + messages. Collect eror message into a buffer, and display that. + + * glib.def: Update. + + * glibconfig.h.win32.in: Update. Remove unused wchar and wctype + macros, add G_MODULE_SUFFIX. + 2000-12-24 Ali Abdin * Makefile.am, gcompat.h, glib.h: New gcompat.h header file diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index a7dfc16..0887081 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,13 @@ +2000-12-25 Tor Lillqvist + + * gmessages.c: (Win32) Use a MessageBox for fatal + messages. Collect eror message into a buffer, and display that. + + * glib.def: Update. + + * glibconfig.h.win32.in: Update. Remove unused wchar and wctype + macros, add G_MODULE_SUFFIX. + 2000-12-24 Ali Abdin * Makefile.am, gcompat.h, glib.h: New gcompat.h header file diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index a7dfc16..0887081 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,13 @@ +2000-12-25 Tor Lillqvist + + * gmessages.c: (Win32) Use a MessageBox for fatal + messages. Collect eror message into a buffer, and display that. + + * glib.def: Update. + + * glibconfig.h.win32.in: Update. Remove unused wchar and wctype + macros, add G_MODULE_SUFFIX. + 2000-12-24 Ali Abdin * Makefile.am, gcompat.h, glib.h: New gcompat.h header file diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index a7dfc16..0887081 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,13 @@ +2000-12-25 Tor Lillqvist + + * gmessages.c: (Win32) Use a MessageBox for fatal + messages. Collect eror message into a buffer, and display that. + + * glib.def: Update. + + * glibconfig.h.win32.in: Update. Remove unused wchar and wctype + macros, add G_MODULE_SUFFIX. + 2000-12-24 Ali Abdin * Makefile.am, gcompat.h, glib.h: New gcompat.h header file diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index a7dfc16..0887081 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,13 @@ +2000-12-25 Tor Lillqvist + + * gmessages.c: (Win32) Use a MessageBox for fatal + messages. Collect eror message into a buffer, and display that. + + * glib.def: Update. + + * glibconfig.h.win32.in: Update. Remove unused wchar and wctype + macros, add G_MODULE_SUFFIX. + 2000-12-24 Ali Abdin * Makefile.am, gcompat.h, glib.h: New gcompat.h header file diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index a7dfc16..0887081 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,13 @@ +2000-12-25 Tor Lillqvist + + * gmessages.c: (Win32) Use a MessageBox for fatal + messages. Collect eror message into a buffer, and display that. + + * glib.def: Update. + + * glibconfig.h.win32.in: Update. Remove unused wchar and wctype + macros, add G_MODULE_SUFFIX. + 2000-12-24 Ali Abdin * Makefile.am, gcompat.h, glib.h: New gcompat.h header file diff --git a/glib.def b/glib.def index ac55829..596db36 100644 --- a/glib.def +++ b/glib.def @@ -54,17 +54,21 @@ EXPORTS g_date_add_years g_date_clear g_date_compare - g_date_day - g_date_day_of_year - g_date_days_in_month g_date_free + g_date_get_day + g_date_get_day_of_year + g_date_get_days_in_month + g_date_get_julian + g_date_get_monday_week_of_year + g_date_get_monday_weeks_in_year + g_date_get_month + g_date_get_sunday_week_of_year + g_date_get_sunday_weeks_in_year + g_date_get_weekday + g_date_get_year g_date_is_first_of_month g_date_is_last_of_month g_date_is_leap_year - g_date_julian - g_date_monday_week_of_year - g_date_monday_weeks_in_year - g_date_month g_date_new g_date_new_dmy g_date_new_julian @@ -79,8 +83,6 @@ EXPORTS g_date_subtract_days g_date_subtract_months g_date_subtract_years - g_date_sunday_week_of_year - g_date_sunday_weeks_in_year g_date_to_struct_tm g_date_valid g_date_valid_day @@ -89,8 +91,6 @@ EXPORTS g_date_valid_month g_date_valid_weekday g_date_valid_year - g_date_weekday - g_date_year g_direct_equal g_direct_hash g_dirname @@ -102,8 +102,8 @@ EXPORTS g_file_error_from_errno g_file_error_quark g_file_get_contents - g_file_test g_file_open_tmp + g_file_test g_filename_from_utf8 g_filename_to_utf8 g_free @@ -456,9 +456,9 @@ EXPORTS g_strdelimit g_strdown g_strdup - g_strdupv g_strdup_printf g_strdup_vprintf + g_strdupv g_strerror g_strescape g_strfreev diff --git a/glib/glib.def b/glib/glib.def index ac55829..596db36 100644 --- a/glib/glib.def +++ b/glib/glib.def @@ -54,17 +54,21 @@ EXPORTS g_date_add_years g_date_clear g_date_compare - g_date_day - g_date_day_of_year - g_date_days_in_month g_date_free + g_date_get_day + g_date_get_day_of_year + g_date_get_days_in_month + g_date_get_julian + g_date_get_monday_week_of_year + g_date_get_monday_weeks_in_year + g_date_get_month + g_date_get_sunday_week_of_year + g_date_get_sunday_weeks_in_year + g_date_get_weekday + g_date_get_year g_date_is_first_of_month g_date_is_last_of_month g_date_is_leap_year - g_date_julian - g_date_monday_week_of_year - g_date_monday_weeks_in_year - g_date_month g_date_new g_date_new_dmy g_date_new_julian @@ -79,8 +83,6 @@ EXPORTS g_date_subtract_days g_date_subtract_months g_date_subtract_years - g_date_sunday_week_of_year - g_date_sunday_weeks_in_year g_date_to_struct_tm g_date_valid g_date_valid_day @@ -89,8 +91,6 @@ EXPORTS g_date_valid_month g_date_valid_weekday g_date_valid_year - g_date_weekday - g_date_year g_direct_equal g_direct_hash g_dirname @@ -102,8 +102,8 @@ EXPORTS g_file_error_from_errno g_file_error_quark g_file_get_contents - g_file_test g_file_open_tmp + g_file_test g_filename_from_utf8 g_filename_to_utf8 g_free @@ -456,9 +456,9 @@ EXPORTS g_strdelimit g_strdown g_strdup - g_strdupv g_strdup_printf g_strdup_vprintf + g_strdupv g_strerror g_strescape g_strfreev diff --git a/glib/gmessages.c b/glib/gmessages.c index 3116c2f..f637778 100644 --- a/glib/gmessages.c +++ b/glib/gmessages.c @@ -95,6 +95,14 @@ static GPrivate* g_log_depth = NULL; static gboolean alloc_console_called = FALSE; +static gboolean gonna_abort = FALSE; + +/* This default message will usually be overwritten. */ +/* Yes, a fixed size buffer is bad. So sue me. But g_error is never + * with huge strings, is it? */ +static char fatal_msg_buf[1000] = "Unspecified fatal error encountered, aborting."; +static char *fatal_msg_ptr = fatal_msg_buf; + /* Just use stdio. If we're out of memory, we're hosed anyway. */ #undef write static inline int @@ -102,6 +110,14 @@ dowrite (FILE *fd, const void *buf, unsigned int len) { + if (gonna_abort) + { + memcpy (fatal_msg_ptr, buf, len); + fatal_msg_ptr += len; + *fatal_msg_ptr = 0; + return len; + } + fwrite (buf, len, 1, fd); fflush (fd); @@ -115,6 +131,9 @@ ensure_stdout_valid (void) { HANDLE handle; + if (gonna_abort) + return; + if (!alloc_console_called) { handle = GetStdHandle (STD_OUTPUT_HANDLE); @@ -413,6 +432,9 @@ g_logv (const gchar *log_domain, else abort (); #else /* !G_ENABLE_DEBUG || !SIGTRAP */ +#ifdef G_OS_WIN32 + MessageBox (NULL, fatal_msg_buf, NULL, MB_OK); +#endif abort (); #endif /* !G_ENABLE_DEBUG || !SIGTRAP */ } @@ -473,6 +495,7 @@ g_log_default_handler (const gchar *log_domain, * DOS prompt. */ fd = stdout; + gonna_abort = is_fatal; #else fd = (log_level > G_LOG_LEVEL_MESSAGE) ? 1 : 2; #endif diff --git a/glibconfig.h.win32.in b/glibconfig.h.win32.in index 9b59c94..a20493a 100644 --- a/glibconfig.h.win32.in +++ b/glibconfig.h.win32.in @@ -193,8 +193,7 @@ union _GSystemThread #define GLIB_SYSDEF_POLLHUP = 16 #define GLIB_SYSDEF_POLLNVAL = 32 -#define G_HAVE_WCHAR_H 1 -#define G_HAVE_WCTYPE_H 1 +#define G_MODULE_SUFFIX "dll" G_END_DECLS diff --git a/gmessages.c b/gmessages.c index 3116c2f..f637778 100644 --- a/gmessages.c +++ b/gmessages.c @@ -95,6 +95,14 @@ static GPrivate* g_log_depth = NULL; static gboolean alloc_console_called = FALSE; +static gboolean gonna_abort = FALSE; + +/* This default message will usually be overwritten. */ +/* Yes, a fixed size buffer is bad. So sue me. But g_error is never + * with huge strings, is it? */ +static char fatal_msg_buf[1000] = "Unspecified fatal error encountered, aborting."; +static char *fatal_msg_ptr = fatal_msg_buf; + /* Just use stdio. If we're out of memory, we're hosed anyway. */ #undef write static inline int @@ -102,6 +110,14 @@ dowrite (FILE *fd, const void *buf, unsigned int len) { + if (gonna_abort) + { + memcpy (fatal_msg_ptr, buf, len); + fatal_msg_ptr += len; + *fatal_msg_ptr = 0; + return len; + } + fwrite (buf, len, 1, fd); fflush (fd); @@ -115,6 +131,9 @@ ensure_stdout_valid (void) { HANDLE handle; + if (gonna_abort) + return; + if (!alloc_console_called) { handle = GetStdHandle (STD_OUTPUT_HANDLE); @@ -413,6 +432,9 @@ g_logv (const gchar *log_domain, else abort (); #else /* !G_ENABLE_DEBUG || !SIGTRAP */ +#ifdef G_OS_WIN32 + MessageBox (NULL, fatal_msg_buf, NULL, MB_OK); +#endif abort (); #endif /* !G_ENABLE_DEBUG || !SIGTRAP */ } @@ -473,6 +495,7 @@ g_log_default_handler (const gchar *log_domain, * DOS prompt. */ fd = stdout; + gonna_abort = is_fatal; #else fd = (log_level > G_LOG_LEVEL_MESSAGE) ? 1 : 2; #endif -- 2.7.4