Print message to stderr at once, to avoid mixups.

This commit is contained in:
Benoit Dejean
2015-06-28 00:56:59 +02:00
parent d8a5e2162d
commit cd5649f326

View File

@@ -37,10 +37,21 @@ enum MESSAGE_LEVEL {
/* Prints error message and exits. */ /* Prints error message and exits. */
static void 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; 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) { switch (message_level) {
case MESSAGE_DEBUG: case MESSAGE_DEBUG:
@@ -56,26 +67,25 @@ print_start (const glibtop *server, int message_level)
level = "UNKNOWN"; level = "UNKNOWN";
} }
if (server->pid) { g_string_append_printf(message, ": [%s] ", level);
snprintf(pids, sizeof pids, "c=%u/s=%u", getpid(), server->pid);
} g_string_append_vprintf(message, format, args);
else {
snprintf(pids, sizeof pids, "c=%u", getpid()); if (error) {
g_string_append_printf(message, ": %s", g_strerror(error));
} }
fprintf (stderr, "%s(%s): [%s] ", server && server->name g_string_append_c(message, '\n');
? server->name
: DEFAULT_NAME, fputs(message->str, stderr);
pids,
level); g_string_free(message, TRUE);
} }
void void
glibtop_error_vr (glibtop *server, const char *format, va_list args) glibtop_error_vr (glibtop *server, const char *format, va_list args)
{ {
print_start (server, MESSAGE_ERROR); print_message (server, MESSAGE_ERROR, format, 0, args);
vfprintf (stderr, format, args);
fputc('\n', stderr);
#ifdef LIBGTOP_ENABLE_DEBUG #ifdef LIBGTOP_ENABLE_DEBUG
abort (); abort ();
@@ -87,9 +97,7 @@ glibtop_error_vr (glibtop *server, const char *format, va_list args)
void void
glibtop_error_io_vr (glibtop *server, const char *format, int error, va_list args) glibtop_error_io_vr (glibtop *server, const char *format, int error, va_list args)
{ {
print_start (server, MESSAGE_ERROR); print_message (server, MESSAGE_ERROR, format, error, args);
vfprintf (stderr, format, args);
fprintf (stderr, ": %s\n", g_strerror (error));
#ifdef LIBGTOP_ENABLE_DEBUG #ifdef LIBGTOP_ENABLE_DEBUG
abort (); abort ();
@@ -101,9 +109,7 @@ glibtop_error_io_vr (glibtop *server, const char *format, int error, va_list arg
void void
glibtop_warn_vr (glibtop *server, const char *format, va_list args) glibtop_warn_vr (glibtop *server, const char *format, va_list args)
{ {
print_start (server, MESSAGE_WARNING); print_message (server, MESSAGE_WARNING, format, 0, args);
vfprintf (stderr, format, args);
fputc('\n', stderr);
#ifdef LIBGTOP_FATAL_WARNINGS #ifdef LIBGTOP_FATAL_WARNINGS
abort (); abort ();
@@ -113,9 +119,7 @@ glibtop_warn_vr (glibtop *server, const char *format, va_list args)
void void
glibtop_warn_io_vr (glibtop *server, const char *format, int error, va_list args) glibtop_warn_io_vr (glibtop *server, const char *format, int error, va_list args)
{ {
print_start (server, MESSAGE_WARNING); print_message (server, MESSAGE_WARNING, format, error, args);
vfprintf (stderr, format, args);
fprintf (stderr, ": %s\n", g_strerror (error));
#ifdef LIBGTOP_FATAL_WARNINGS #ifdef LIBGTOP_FATAL_WARNINGS
abort (); abort ();
@@ -168,9 +172,7 @@ glibtop_warn_io_r (glibtop *server, const char *format, ...)
void void
glibtop_debug_vr (glibtop *server, const char *format, va_list args) glibtop_debug_vr (glibtop *server, const char *format, va_list args)
{ {
print_start (server, MESSAGE_DEBUG); print_message (server, MESSAGE_DEBUG, format, 0, args);
vfprintf (stderr, format, args);
fputc('\n', stderr);
} }
void void