diff options
| author | Steven Rostedt <srostedt@redhat.com> | 2010-06-11 14:59:17 -0400 |
|---|---|---|
| committer | Steven Rostedt <rostedt@goodmis.org> | 2010-06-11 14:59:17 -0400 |
| commit | 14451def6df920d72a7cfcb89791da285d89e85c (patch) | |
| tree | edd39ee76a9e945fe3fc67772bbfec319437853c | |
| parent | e5d57574f5c33207a58aba33773f05acca18c88e (diff) | |
kernelshark: Add trace_dialog_register_alt_warning()
Add trace_dialog_register_alt_warning() that will allow the tools to
override the warning messages. To hide warnings from poping up,
or to record them elsewhere, this allows to do so.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
| -rw-r--r-- | trace-dialog.c | 21 | ||||
| -rw-r--r-- | trace-gui.h | 1 |
2 files changed, 22 insertions, 0 deletions
diff --git a/trace-dialog.c b/trace-dialog.c index c220a52..3f5e1ea 100644 --- a/trace-dialog.c +++ b/trace-dialog.c | |||
| @@ -38,6 +38,8 @@ static GString *statusstr; | |||
| 38 | 38 | ||
| 39 | static GtkWidget *parent_window; | 39 | static GtkWidget *parent_window; |
| 40 | 40 | ||
| 41 | static void (*alt_warning)(const char *fmt, va_list ap); | ||
| 42 | |||
| 41 | void pr_stat(char *fmt, ...) | 43 | void pr_stat(char *fmt, ...) |
| 42 | { | 44 | { |
| 43 | GString *str; | 45 | GString *str; |
| @@ -79,11 +81,30 @@ void trace_dialog_register_window(GtkWidget *window) | |||
| 79 | parent_window = window; | 81 | parent_window = window; |
| 80 | } | 82 | } |
| 81 | 83 | ||
| 84 | /** | ||
| 85 | * trace_dialog_register_alt_warning - register an alternate function for warning() | ||
| 86 | * @alt: the function to be called instead of warning. | ||
| 87 | * | ||
| 88 | * Add an alternate warning function to be called instead of a popup. | ||
| 89 | * To go back to the popup, simply call this again with NULL. | ||
| 90 | */ | ||
| 91 | void trace_dialog_register_alt_warning(void (*alt)(const char *fmt, va_list ap)) | ||
| 92 | { | ||
| 93 | alt_warning = alt; | ||
| 94 | } | ||
| 95 | |||
| 82 | void warning(char *fmt, ...) | 96 | void warning(char *fmt, ...) |
| 83 | { | 97 | { |
| 84 | GString *str; | 98 | GString *str; |
| 85 | va_list ap; | 99 | va_list ap; |
| 86 | 100 | ||
| 101 | if (alt_warning) { | ||
| 102 | va_start(ap, fmt); | ||
| 103 | alt_warning(fmt, ap); | ||
| 104 | va_end(ap); | ||
| 105 | return; | ||
| 106 | } | ||
| 107 | |||
| 87 | if (!parent_window) { | 108 | if (!parent_window) { |
| 88 | va_start(ap, fmt); | 109 | va_start(ap, fmt); |
| 89 | __vwarning(fmt, ap); | 110 | __vwarning(fmt, ap); |
diff --git a/trace-gui.h b/trace-gui.h index a2d261f..bcf8737 100644 --- a/trace-gui.h +++ b/trace-gui.h | |||
| @@ -32,6 +32,7 @@ enum trace_dialog_type { | |||
| 32 | GtkWidget *trace_status_bar_new(void); | 32 | GtkWidget *trace_status_bar_new(void); |
| 33 | 33 | ||
| 34 | void trace_dialog_register_window(GtkWidget *window); | 34 | void trace_dialog_register_window(GtkWidget *window); |
| 35 | void trace_dialog_register_alt_warning(void (*alt)(const char *fmt, va_list ap)); | ||
| 35 | 36 | ||
| 36 | void trace_show_help(GtkWidget *window, const gchar *link, GError **error); | 37 | void trace_show_help(GtkWidget *window, const gchar *link, GError **error); |
| 37 | 38 | ||
