diff options
author | Benoit Dejean <bdejean@gmail.com> | 2015-06-28 00:56:59 +0200 |
---|---|---|
committer | Benoit Dejean <bdejean@gmail.com> | 2015-07-15 18:39:06 +0200 |
commit | cd5649f3266886699949e6a58a7510bc971517dc (patch) | |
tree | 6e11462d9b2ec8669acc781de681a3edcdda1d6d | |
parent | d8a5e2162dcc3bf87c3449a50dc659c2d916770a (diff) | |
download | libgtop-cd5649f3266886699949e6a58a7510bc971517dc.tar.gz |
Print message to stderr at once, to avoid mixups.
-rw-r--r-- | sysdeps/common/error.c | 56 |
1 files changed, 29 insertions, 27 deletions
diff --git a/sysdeps/common/error.c b/sysdeps/common/error.c index 6ef238e6..05022711 100644 --- a/sysdeps/common/error.c +++ b/sysdeps/common/error.c @@ -37,10 +37,21 @@ enum MESSAGE_LEVEL { /* Prints error message and exits. */ static void -print_start (const glibtop *server, int message_level) +print_message (const glibtop *server, int message_level, const char *format, int error, va_list args) { const char *level; - char pids[32]; + GString* message; + + message = g_string_new(NULL); + + g_string_printf(message, "%s", (server && server->name ? server->name : DEFAULT_NAME)); + + if (server->pid) { + g_string_append_printf(message, "(c=%u/s=%u)", getpid(), server->pid); + } + else { + g_string_append_printf(message, "(c=%u)", getpid()); + } switch (message_level) { case MESSAGE_DEBUG: @@ -56,26 +67,25 @@ print_start (const glibtop *server, int message_level) level = "UNKNOWN"; } - if (server->pid) { - snprintf(pids, sizeof pids, "c=%u/s=%u", getpid(), server->pid); - } - else { - snprintf(pids, sizeof pids, "c=%u", getpid()); + g_string_append_printf(message, ": [%s] ", level); + + g_string_append_vprintf(message, format, args); + + if (error) { + g_string_append_printf(message, ": %s", g_strerror(error)); } - fprintf (stderr, "%s(%s): [%s] ", server && server->name - ? server->name - : DEFAULT_NAME, - pids, - level); + g_string_append_c(message, '\n'); + + fputs(message->str, stderr); + + g_string_free(message, TRUE); } void glibtop_error_vr (glibtop *server, const char *format, va_list args) { - print_start (server, MESSAGE_ERROR); - vfprintf (stderr, format, args); - fputc('\n', stderr); + print_message (server, MESSAGE_ERROR, format, 0, args); #ifdef LIBGTOP_ENABLE_DEBUG abort (); @@ -87,9 +97,7 @@ glibtop_error_vr (glibtop *server, const char *format, va_list args) void glibtop_error_io_vr (glibtop *server, const char *format, int error, va_list args) { - print_start (server, MESSAGE_ERROR); - vfprintf (stderr, format, args); - fprintf (stderr, ": %s\n", g_strerror (error)); + print_message (server, MESSAGE_ERROR, format, error, args); #ifdef LIBGTOP_ENABLE_DEBUG abort (); @@ -101,9 +109,7 @@ glibtop_error_io_vr (glibtop *server, const char *format, int error, va_list arg void glibtop_warn_vr (glibtop *server, const char *format, va_list args) { - print_start (server, MESSAGE_WARNING); - vfprintf (stderr, format, args); - fputc('\n', stderr); + print_message (server, MESSAGE_WARNING, format, 0, args); #ifdef LIBGTOP_FATAL_WARNINGS abort (); @@ -113,9 +119,7 @@ glibtop_warn_vr (glibtop *server, const char *format, va_list args) void glibtop_warn_io_vr (glibtop *server, const char *format, int error, va_list args) { - print_start (server, MESSAGE_WARNING); - vfprintf (stderr, format, args); - fprintf (stderr, ": %s\n", g_strerror (error)); + print_message (server, MESSAGE_WARNING, format, error, args); #ifdef LIBGTOP_FATAL_WARNINGS abort (); @@ -168,9 +172,7 @@ glibtop_warn_io_r (glibtop *server, const char *format, ...) void glibtop_debug_vr (glibtop *server, const char *format, va_list args) { - print_start (server, MESSAGE_DEBUG); - vfprintf (stderr, format, args); - fputc('\n', stderr); + print_message (server, MESSAGE_DEBUG, format, 0, args); } void |