summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenoit Dejean <bdejean@gmail.com>2015-06-28 00:56:59 +0200
committerBenoit Dejean <bdejean@gmail.com>2015-07-15 18:39:06 +0200
commitcd5649f3266886699949e6a58a7510bc971517dc (patch)
tree6e11462d9b2ec8669acc781de681a3edcdda1d6d
parentd8a5e2162dcc3bf87c3449a50dc659c2d916770a (diff)
downloadlibgtop-cd5649f3266886699949e6a58a7510bc971517dc.tar.gz
Print message to stderr at once, to avoid mixups.
-rw-r--r--sysdeps/common/error.c56
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