Blame sysdeps/common/error.c

Packit d37888
/* Copyright (C) 1998-99 Martin Baulig
Packit d37888
   This file is part of LibGTop 1.0.
Packit d37888
Packit d37888
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
Packit d37888
Packit d37888
   LibGTop is free software; you can redistribute it and/or modify it
Packit d37888
   under the terms of the GNU General Public License as published by
Packit d37888
   the Free Software Foundation; either version 2 of the License,
Packit d37888
   or (at your option) any later version.
Packit d37888
Packit d37888
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
Packit d37888
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
Packit d37888
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
Packit d37888
   for more details.
Packit d37888
Packit d37888
   You should have received a copy of the GNU General Public License
Packit d37888
   along with LibGTop; see the file COPYING. If not, write to the
Packit d37888
   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Packit d37888
   Boston, MA 02110-1301, USA.
Packit d37888
*/
Packit d37888
Packit d37888
#include <config.h>
Packit d37888
Packit d37888
#include <glib.h>
Packit d37888
#include <errno.h>
Packit d37888
Packit d37888
#include <glibtop/error.h>
Packit d37888
Packit d37888
enum MESSAGE_LEVEL {
Packit d37888
	MESSAGE_DEBUG,
Packit d37888
	MESSAGE_WARNING,
Packit d37888
	MESSAGE_ERROR
Packit d37888
};
Packit d37888
Packit d37888
#define DEFAULT_NAME	"LibGTop-Server"
Packit d37888
Packit d37888
/* Prints error message and exits. */
Packit d37888
Packit d37888
static void
Packit d37888
print_message (const glibtop *server, int message_level, const char *format, int error, va_list args)
Packit d37888
{
Packit d37888
	const char *level;
Packit d37888
	GString* message;
Packit d37888
Packit d37888
	message = g_string_new(NULL);
Packit d37888
Packit d37888
	g_string_printf(message, "%s", (server && server->name ? server->name : DEFAULT_NAME));
Packit d37888
Packit d37888
	if (server && server->pid) {
Packit d37888
		g_string_append_printf(message, "(c=%u/s=%u)", getpid(), server->pid);
Packit d37888
	}
Packit d37888
	else {
Packit d37888
		g_string_append_printf(message, "(c=%u)", getpid());
Packit d37888
	}
Packit d37888
Packit d37888
	switch (message_level) {
Packit d37888
	case MESSAGE_DEBUG:
Packit d37888
		level = "DEBUG";
Packit d37888
		break;
Packit d37888
	case MESSAGE_WARNING:
Packit d37888
		level = "WARNING";
Packit d37888
		break;
Packit d37888
	case MESSAGE_ERROR:
Packit d37888
		level = "ERROR";
Packit d37888
		break;
Packit d37888
	default:
Packit d37888
		level = "UNKNOWN";
Packit d37888
	}
Packit d37888
Packit d37888
	g_string_append_printf(message, ": [%s] ", level);
Packit d37888
Packit d37888
	g_string_append_vprintf(message, format, args);
Packit d37888
Packit d37888
	if (error) {
Packit d37888
		g_string_append_printf(message, ": %s", g_strerror(error));
Packit d37888
	}
Packit d37888
Packit d37888
	g_string_append_c(message, '\n');
Packit d37888
Packit d37888
	fputs(message->str, stderr);
Packit d37888
Packit d37888
	g_string_free(message, TRUE);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_error_vr (glibtop *server, const char *format, va_list args)
Packit d37888
{
Packit d37888
	print_message (server, MESSAGE_ERROR, format, 0, args);
Packit d37888
Packit d37888
#ifdef LIBGTOP_ENABLE_DEBUG
Packit d37888
	abort ();
Packit d37888
#else
Packit d37888
	exit (1);
Packit d37888
#endif
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_error_io_vr (glibtop *server, const char *format, int error, va_list args)
Packit d37888
{
Packit d37888
	print_message (server, MESSAGE_ERROR, format, error, args);
Packit d37888
Packit d37888
#ifdef LIBGTOP_ENABLE_DEBUG
Packit d37888
	abort ();
Packit d37888
#else
Packit d37888
	exit (1);
Packit d37888
#endif
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_warn_vr (glibtop *server, const char *format, va_list args)
Packit d37888
{
Packit d37888
	print_message (server, MESSAGE_WARNING, format, 0, args);
Packit d37888
Packit d37888
#ifdef LIBGTOP_FATAL_WARNINGS
Packit d37888
	abort ();
Packit d37888
#endif
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_warn_io_vr (glibtop *server, const char *format, int error, va_list args)
Packit d37888
{
Packit d37888
	print_message (server, MESSAGE_WARNING, format, error, args);
Packit d37888
Packit d37888
#ifdef LIBGTOP_FATAL_WARNINGS
Packit d37888
	abort ();
Packit d37888
#endif
Packit d37888
}
Packit d37888
Packit d37888
Packit d37888
void
Packit d37888
glibtop_error_r (glibtop *server, const char *format, ...)
Packit d37888
{
Packit d37888
	va_list args;
Packit d37888
Packit d37888
	va_start (args, format);
Packit d37888
	glibtop_error_vr (server, format, args);
Packit d37888
	va_end (args);
Packit d37888
}
Packit d37888
Packit d37888
Packit d37888
void
Packit d37888
glibtop_warn_r (glibtop *server, const char *format, ...)
Packit d37888
{
Packit d37888
	va_list args;
Packit d37888
Packit d37888
	va_start (args, format);
Packit d37888
	glibtop_warn_vr (server, format, args);
Packit d37888
	va_end (args);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_error_io_r (glibtop *server, const char *format, ...)
Packit d37888
{
Packit d37888
	va_list args;
Packit d37888
Packit d37888
	va_start (args, format);
Packit d37888
	glibtop_error_io_vr (server, format, errno, args);
Packit d37888
	va_end (args);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_warn_io_r (glibtop *server, const char *format, ...)
Packit d37888
{
Packit d37888
	va_list args;
Packit d37888
Packit d37888
	va_start (args, format);
Packit d37888
	glibtop_warn_io_vr (server, format, errno, args);
Packit d37888
	va_end (args);
Packit d37888
}
Packit d37888
Packit d37888
Packit d37888
void
Packit d37888
glibtop_debug_vr (glibtop *server, const char *format, va_list args)
Packit d37888
{
Packit d37888
	print_message (server, MESSAGE_DEBUG, format, 0, args);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_debug_r_real (glibtop *server, const char *format, ...)
Packit d37888
{
Packit d37888
	va_list args;
Packit d37888
Packit d37888
	va_start (args, format);
Packit d37888
	glibtop_debug_vr (server, format, args);
Packit d37888
	va_end (args);
Packit d37888
}
Packit d37888
Packit d37888
Packit d37888
void
Packit d37888
glibtop_error (const char *format, ...)
Packit d37888
{
Packit d37888
	va_list args;
Packit d37888
	va_start (args, format);
Packit d37888
	glibtop_error_vr (glibtop_global_server, format, args);
Packit d37888
	va_end (args);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_warn (const char *format, ...)
Packit d37888
{
Packit d37888
	va_list args;
Packit d37888
	va_start (args, format);
Packit d37888
	glibtop_warn_vr (glibtop_global_server, format, args);
Packit d37888
	va_end (args);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_error_io (const char *format, ...)
Packit d37888
{
Packit d37888
	va_list args;
Packit d37888
	va_start (args, format);
Packit d37888
	glibtop_error_io_vr (glibtop_global_server, format, errno, args);
Packit d37888
	va_end (args);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_warn_io (const char *format, ...)
Packit d37888
{
Packit d37888
	va_list args;
Packit d37888
	va_start (args, format);
Packit d37888
	glibtop_warn_io_vr (glibtop_global_server, format, errno, args);
Packit d37888
	va_end (args);
Packit d37888
}