diff options
author | Gerald Combs <gerald@wireshark.org> | 2014-09-25 16:21:02 -0700 |
---|---|---|
committer | Gerald Combs <gerald@wireshark.org> | 2014-09-26 14:15:45 +0000 |
commit | 2d7c1135ed7bb93b6eb2fd0170443d3c990f1e1e (patch) | |
tree | c96b56b6aaf00a85609747af3a6bc887352fcb36 /ui/gtk/main.c | |
parent | ce36b20ca5d01490acd1fb6ca44a82dab85ba2a2 (diff) | |
download | wireshark-2d7c1135ed7bb93b6eb2fd0170443d3c990f1e1e.tar.gz |
Move the console log handling code to ui/console.[ch].
Change-Id: I8e554a8e17399d78b0ef29dfb68109a219cd9f1b
Reviewed-on: https://code.wireshark.org/review/4294
Petri-Dish: Gerald Combs <gerald@wireshark.org>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Gerald Combs <gerald@wireshark.org>
Diffstat (limited to 'ui/gtk/main.c')
-rw-r--r-- | ui/gtk/main.c | 133 |
1 files changed, 2 insertions, 131 deletions
diff --git a/ui/gtk/main.c b/ui/gtk/main.c index 510b85fc92..34ddb0b0f8 100644 --- a/ui/gtk/main.c +++ b/ui/gtk/main.c @@ -49,13 +49,6 @@ #include <zlib.h> /* to get the libz version number */ #endif -#ifdef _WIN32 /* Needed for console I/O */ - -#include <fcntl.h> -#include <conio.h> -#include <ui/win32/console_win32.h> -#endif - #ifdef HAVE_LIBPORTAUDIO #include <portaudio.h> #endif /* HAVE_LIBPORTAUDIO */ @@ -111,6 +104,7 @@ #include "gtk_iface_monitor.h" #include "ui/alert_box.h" +#include "ui/console.h" #include "ui/decode_as_utils.h" #include "ui/filters.h" #include "ui/main_statusbar.h" @@ -250,9 +244,6 @@ static gboolean have_capture_file = FALSE; /* XXX - is there an equivalent in cf static guint tap_update_timer_id; -static void console_log_handler(const char *log_domain, - GLogLevelFlags log_level, const char *message, gpointer user_data); - static void create_main_window(gint, gint, gint, e_prefs*); static void show_main_window(gboolean); static void main_save_window_geometry(GtkWidget *widget); @@ -2180,7 +2171,6 @@ main(int argc, char *argv[]) e_prefs *prefs_p; char badopt; GtkWidget *splash_win = NULL; - GLogLevelFlags log_flags; guint go_to_packet = 0; search_direction jump_backwards = SD_FORWARD; dfilter_t *jump_to_filter = NULL; @@ -2472,40 +2462,9 @@ main(int argc, char *argv[]) capture_callback_add(statusbar_capture_callback, NULL); #endif - /* Arrange that if we have no console window, and a GLib message logging - routine is called to log a message, we pop up a console window. - - We do that by inserting our own handler for all messages logged - to the default domain; that handler pops up a console if necessary, - and then calls the default handler. */ - - /* We might want to have component specific log levels later ... */ - - log_flags = (GLogLevelFlags) - (G_LOG_LEVEL_ERROR| - G_LOG_LEVEL_CRITICAL| - G_LOG_LEVEL_WARNING| - G_LOG_LEVEL_MESSAGE| - G_LOG_LEVEL_INFO| - G_LOG_LEVEL_DEBUG| - G_LOG_FLAG_FATAL| - G_LOG_FLAG_RECURSION); - - g_log_set_handler(NULL, - log_flags, - console_log_handler, NULL /* user_data */); - g_log_set_handler(LOG_DOMAIN_MAIN, - log_flags, - console_log_handler, NULL /* user_data */); + set_console_log_handler(); #ifdef HAVE_LIBPCAP - g_log_set_handler(LOG_DOMAIN_CAPTURE, - log_flags, - console_log_handler, NULL /* user_data */); - g_log_set_handler(LOG_DOMAIN_CAPTURE_CHILD, - log_flags, - console_log_handler, NULL /* user_data */); - /* Set the initial values in the capture options. This might be overwritten by preference settings and then again by the command line parameters. */ capture_opts_init(&global_capture_opts); @@ -3341,93 +3300,6 @@ WinMain (struct HINSTANCE__ *hInstance, #endif /* _WIN32 */ -static void -console_log_handler(const char *log_domain, GLogLevelFlags log_level, - const char *message, gpointer user_data _U_) -{ - time_t curr; - struct tm *today; - const char *level; - - - /* ignore log message, if log_level isn't interesting based - upon the console log preferences. - If the preferences haven't been loaded loaded yet, display the - message anyway. - - The default console_log_level preference value is such that only - ERROR, CRITICAL and WARNING level messages are processed; - MESSAGE, INFO and DEBUG level messages are ignored. */ - if((log_level & G_LOG_LEVEL_MASK & prefs.console_log_level) == 0 && - prefs.console_log_level != 0) { - return; - } - -#ifdef _WIN32 - if (prefs.gui_console_open != console_open_never || log_level & G_LOG_LEVEL_ERROR) { - /* the user wants a console or the application will terminate immediately */ - create_console(); - } - if (get_has_console()) { - /* For some unknown reason, the above doesn't appear to actually cause - anything to be sent to the standard output, so we'll just splat the - message out directly, just to make sure it gets out. */ -#endif - switch(log_level & G_LOG_LEVEL_MASK) { - case G_LOG_LEVEL_ERROR: - level = "Err "; - break; - case G_LOG_LEVEL_CRITICAL: - level = "Crit"; - break; - case G_LOG_LEVEL_WARNING: - level = "Warn"; - break; - case G_LOG_LEVEL_MESSAGE: - level = "Msg "; - break; - case G_LOG_LEVEL_INFO: - level = "Info"; - break; - case G_LOG_LEVEL_DEBUG: - level = "Dbg "; - break; - default: - fprintf(stderr, "unknown log_level %u\n", log_level); - level = NULL; - g_assert_not_reached(); - } - - /* create a "timestamp" */ - time(&curr); - today = localtime(&curr); - - fprintf(stderr, "%02u:%02u:%02u %8s %s %s\n", - today->tm_hour, today->tm_min, today->tm_sec, - log_domain != NULL ? log_domain : "", - level, message); -#ifdef _WIN32 - if(log_level & G_LOG_LEVEL_ERROR) { - /* wait for a key press before the following error handler will terminate the program - this way the user at least can read the error message */ - printf("\n\nPress any key to exit\n"); - _getch(); - } - } else { - /* XXX - on UN*X, should we just use g_log_default_handler()? - We want the error messages to go to the standard output; - on Mac OS X, that will cause them to show up in various - per-user logs accessible through Console (details depend - on whether you're running 10.0 through 10.4 or running - 10.5 and later), and, on other UN*X desktop environments, - if they don't show up in some form of console log, that's - a deficiency in that desktop environment. (Too bad - Windows doesn't set the standard output and error for - GUI apps to something that shows up in such a log.) */ - g_log_default_handler(log_domain, log_level, message, user_data); - } -#endif -} /* @@ -3454,7 +3326,6 @@ static GtkWidget *main_widget_layout(gint layout_content) } } - /* * Rearrange the main window widgets */ |