Started with the big rewrite for GNOME 2.0:
2000-11-20 Martin Baulig <baulig@suse.de> Started with the big rewrite for GNOME 2.0: - split the `glibtop' structure into `glibtop_server' and `glibtop_client' and make `glibtop_client' a GObject. - cleanly separate the library and the backends. This stuff currently does not compile. * glibtop.h (glibtop_server_private, glibtop_server_info): Removed typedefs. (struct _glibtop, struct _glibtop_server_info): Removed. (glibtop_global_server, glibtop_server_features): Removed. (glibtop_server_ref, glibtop_server_unref): Removed. * glibtop.h (glibtop_init_s): First argument is now a `glibtop_server *'. * include/glibtop/*.h: Removed all #defines with the glibtop_global_server. (glibtop_get_*_l): First argument is now a `glibtop_client *'. (glibtop_get_*_s, glibtop_init_*_s): First argument is now a `glibtop_server *'. * lib/glibtop-client.c: New file. * sysdeps/common/xmalloc.c: Moved to lib/. * sysdeps/common/error.c: Moved to lib/. * lib/xmalloc.c: Moved here from sysdeps/common/. * lib/error.c: Moved here from sysdeps/common/. * include/glibtop/backend.h (glibtop_backend_open_func_t, glibtop_backend_close_func_t): First argument is now a `glibtop_server *'. (glibtop_backend_info): Added `glibtop_server *server'. (glibtop_open_backend_l): Returns `glibtop_backend *', first argument is `glibtop_client *' and added `GError **'. * include/glibtop/close.h (glibtop_close_s, glibtop_close_p): First argument is now a `glibtop_server *'. * include/glibtop/error.h (*): First argument is now a `glibtop_server *'. * include/glibtop/errors.h: Switched this to use GError.
This commit is contained in:
committed by
Martin Baulig
parent
c15ff3f342
commit
752d5b47d2
146
lib/errors.c
146
lib/errors.c
@@ -25,42 +25,132 @@
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/global.h>
|
||||
#include <glibtop/xmalloc.h>
|
||||
#include <glibtop/errors.h>
|
||||
|
||||
const char *glibtop_error_strings[GLIBTOP_MAX_ERROR] = {
|
||||
N_("No error"),
|
||||
N_("Unknown error"),
|
||||
N_("Invalid argument"),
|
||||
N_("No such parameter"),
|
||||
N_("Attempted to modify a read-only value"),
|
||||
N_("Parameter size mismatch"),
|
||||
N_("Communication with LibGTop server failed"),
|
||||
N_("No such process"),
|
||||
N_("No kernel support"),
|
||||
N_("Incompatible kernel version")
|
||||
};
|
||||
|
||||
char *
|
||||
glibtop_get_error_string_l (glibtop *server, unsigned error_number)
|
||||
/* Error quark */
|
||||
GQuark
|
||||
glibtop_error_quark (void)
|
||||
{
|
||||
if (error_number >= GLIBTOP_MAX_ERROR)
|
||||
error_number = GLIBTOP_ERROR_UNKNOWN;
|
||||
static GQuark q = 0;
|
||||
if (q == 0)
|
||||
q = g_quark_from_static_string ("glibtop-error-quark");
|
||||
|
||||
return glibtop_strdup_r (server, _(glibtop_error_strings [error_number]));
|
||||
return q;
|
||||
}
|
||||
|
||||
unsigned
|
||||
glibtop_get_errno_l (glibtop *server)
|
||||
void
|
||||
glibtop_error_vl (glibtop_client *client, glibtop_error code,
|
||||
const char *format, va_list args)
|
||||
{
|
||||
return server->glibtop_errno;
|
||||
gchar *message;
|
||||
GError *error;
|
||||
|
||||
g_return_if_fail (GLIBTOP_IS_CLIENT (client));
|
||||
message = g_strdup_vprintf (format, args);
|
||||
|
||||
error = g_error_new_literal (GLIBTOP_ERROR, code, message);
|
||||
glibtop_client_propagate_error (client, error);
|
||||
|
||||
g_error_free (error);
|
||||
g_free (message);
|
||||
}
|
||||
|
||||
unsigned
|
||||
glibtop_clear_errno_l (glibtop *server)
|
||||
void
|
||||
glibtop_error_io_vl (glibtop_client *client, glibtop_error code,
|
||||
int io_errno, const char *format, va_list args)
|
||||
{
|
||||
unsigned old_errno;
|
||||
gchar *message, *fullmessage;
|
||||
GError *error;
|
||||
|
||||
old_errno = server->glibtop_errno;
|
||||
server->glibtop_errno = 0;
|
||||
return old_errno;
|
||||
g_return_if_fail (GLIBTOP_IS_CLIENT (client));
|
||||
message = g_strdup_vprintf (format, args);
|
||||
fullmessage = g_strdup_printf ("%s: %s", message, strerror (io_errno));
|
||||
|
||||
error = g_error_new_literal (GLIBTOP_ERROR, code, message);
|
||||
glibtop_client_propagate_error (client, error);
|
||||
|
||||
g_error_free (error);
|
||||
g_free (fullmessage);
|
||||
g_free (message);
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_warn_vl (glibtop_client *client, glibtop_error code,
|
||||
const char *format, va_list args)
|
||||
{
|
||||
gchar *message;
|
||||
GError *error;
|
||||
|
||||
g_return_if_fail (GLIBTOP_IS_CLIENT (client));
|
||||
message = g_strdup_vprintf (format, args);
|
||||
|
||||
error = g_error_new_literal (GLIBTOP_ERROR, code, message);
|
||||
glibtop_client_propagate_warning (client, error);
|
||||
|
||||
g_error_free (error);
|
||||
g_free (message);
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_warn_io_vl (glibtop_client *client, glibtop_error code,
|
||||
int io_errno, const char *format, va_list args)
|
||||
{
|
||||
gchar *message, *fullmessage;
|
||||
GError *error;
|
||||
|
||||
g_return_if_fail (GLIBTOP_IS_CLIENT (client));
|
||||
message = g_strdup_vprintf (format, args);
|
||||
fullmessage = g_strdup_printf ("%s: %s", message, strerror (io_errno));
|
||||
|
||||
error = g_error_new_literal (GLIBTOP_ERROR, code, message);
|
||||
glibtop_client_propagate_warning (client, error);
|
||||
|
||||
g_error_free (error);
|
||||
g_free (fullmessage);
|
||||
g_free (message);
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_error_l (glibtop_client *client, glibtop_error code,
|
||||
char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start (args, format);
|
||||
glibtop_error_vl (client, code, format, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_warn_l (glibtop_client *client, glibtop_error code,
|
||||
char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start (args, format);
|
||||
glibtop_warn_vl (client, code, format, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_error_io_l (glibtop_client *client, glibtop_error code,
|
||||
char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start (args, format);
|
||||
glibtop_error_io_vl (client, code, errno, format, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_warn_io_l (glibtop_client *client, glibtop_error code,
|
||||
char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start (args, format);
|
||||
glibtop_warn_io_vl (client, code, errno, format, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user