From d86a386ad89d23405be8adc6a03fcb7dbbfad83c Mon Sep 17 00:00:00 2001 From: Martin Baulig Date: Wed, 22 Dec 1999 11:50:47 +0000 Subject: [PATCH] New global function. 1999-12-22 Martin Baulig * lib/errors.c (glibtop_get_errno_l): New global function. * lib/lib.pl: For functions with a `retval' return type, set `server->glibtop_errno' to the error code on error or to zero on success. --- ChangeLog | 8 ++++++++ include/glibtop/errors.h | 3 +++ lib/errors.c | 6 ++++++ lib/lib.pl | 8 ++++++++ 4 files changed, 25 insertions(+) diff --git a/ChangeLog b/ChangeLog index c0d11fbf..e3c0a239 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +1999-12-22 Martin Baulig + + * lib/errors.c (glibtop_get_errno_l): New global function. + + * lib/lib.pl: For functions with a `retval' return type, set + `server->glibtop_errno' to the error code on error or to zero + on success. + 1999-12-22 Martin Baulig * glibtop.h (glibtop): Added `glibtop_errno' field. diff --git a/include/glibtop/errors.h b/include/glibtop/errors.h index 048c6086..2b194539 100644 --- a/include/glibtop/errors.h +++ b/include/glibtop/errors.h @@ -46,6 +46,9 @@ BEGIN_LIBGTOP_DECLS char * glibtop_get_error_string_l (glibtop *server, unsigned error_number); +unsigned +glibtop_get_errno_l (glibtop *server); + END_LIBGTOP_DECLS #endif diff --git a/lib/errors.c b/lib/errors.c index ff4d420e..1472befc 100644 --- a/lib/errors.c +++ b/lib/errors.c @@ -44,3 +44,9 @@ glibtop_get_error_string_l (glibtop *server, unsigned error_number) return glibtop_strdup_r (server, _(glibtop_error_strings [error_number])); } + +unsigned +glibtop_get_errno_l (glibtop *server) +{ + return server->glibtop_errno; +} diff --git a/lib/lib.pl b/lib/lib.pl index 3f24b83e..54d69320 100755 --- a/lib/lib.pl +++ b/lib/lib.pl @@ -221,6 +221,14 @@ sub output { $sysdeps_code .= sprintf ("\t%sglibtop_get_%s_s (server, buf%s);\n", $prefix, $feature, $call_param); } + + if ($line_fields[1] eq 'retval') { + $sysdeps_code .= "\tif (retval < 0) {\n"; + $sysdeps_code .= "\t\tserver->glibtop_errno = -retval;\n"; + $sysdeps_code .= "\t\tgoto do_return;\n"; + $sysdeps_code .= "\t} else {\n\t\tserver->glibtop_errno = 0;\n\t}\n\n"; + } + $sysdeps_code .= "\tgoto check_missing;\n"; if ($orig !~ /^@/) {