diff --git a/ChangeLog b/ChangeLog index 086140c9..8279b11a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2005-06-06 Benoît Dejean + + * backends/: Removed useless files. + 2005-06-06 Benoît Dejean * examples/smp.c: (main): Removed translation. diff --git a/backends/.cvsignore b/backends/.cvsignore deleted file mode 100644 index da7b4816..00000000 --- a/backends/.cvsignore +++ /dev/null @@ -1,5 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -*.lo diff --git a/backends/Makefile.am b/backends/Makefile.am deleted file mode 100644 index 606b115e..00000000 --- a/backends/Makefile.am +++ /dev/null @@ -1,15 +0,0 @@ -if NEED_LIBGTOP -server_dir = server -else -server_dir = -endif - -if HAVE_SYSDEPS -sysdeps_dir = sysdeps -else -sysdeps_dir = -endif - -SUBDIRS = $(server_dir) $(sysdeps_dir) common - -DIST_SUBDIRS = server sysdeps common diff --git a/backends/common/.cvsignore b/backends/common/.cvsignore deleted file mode 100644 index a081b16a..00000000 --- a/backends/common/.cvsignore +++ /dev/null @@ -1,7 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -*.lo -*.la -marshal.c diff --git a/backends/common/ChangeLog b/backends/common/ChangeLog deleted file mode 100644 index 0aa9b4fb..00000000 --- a/backends/common/ChangeLog +++ /dev/null @@ -1,50 +0,0 @@ -2003-10-20 Bastien Nocera - - * backend-common.c: (_open_common): s/u_int64_t/guint64/ - -2003-10-20 Bastien Nocera - - * backend-common.h: fixed compilation - -2000-11-26 Martin Baulig - - * glibtop-backend-private.h: Removed. - - * backend-common.h: New files. - - * backend-common.c (_open_common): Don't overwrite - `backend->_priv'. - -2000-11-22 Martin Baulig - - * Makefile.am: Link libgtop_backend_common.la against - $(top_builddir)/sysdeps/common/libgtop_common.la and - $(top_builddir)/lib/libgtop_server.la. - -2000-02-22 Martin Baulig - - * backend-sysdeps.c (LibGTopBackendInfo): Call this - `LibGTopBackendInfo_Common' when we don't use gmodule. - -2000-02-22 Martin Baulig - - * Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR) - when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise. - -2000-01-12 Martin Baulig - - * Makefile.am: Install everything in $(LIBGTOP_BACKEND_DIR). - - * libgtop-common.backend: New file. - - * backend-common.c (glibtop_backend_common): Renamed to - `LibGTopBackendInfo'. - -2000-01-12 Martin Baulig - - Initial version of the "glibtop-backend-common" backend. - - * backend-common.c: New file. - * glibtop-backend-private.h: New file. - * marshal.pl: New file. Automatically creates `marshal.c'. - diff --git a/backends/common/Makefile.am b/backends/common/Makefile.am deleted file mode 100644 index 4c2acae2..00000000 --- a/backends/common/Makefile.am +++ /dev/null @@ -1,47 +0,0 @@ -LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ - -INCLUDES = @INCLUDES@ - -backenddir = @LIBGTOP_BACKEND_DIR@ - -if LIBGTOP_USE_GMODULE -backendlibdir = $(backenddir) -else -backendlibdir = $(libdir) -endif - -dynamic_ldflags = @libgtop_dynamic_ldflags@ - -backend_DATA = \ - libgtop-common.backend - -noinst_HEADERS = \ - backend-common.h - -backendlib_LTLIBRARIES = \ - libgtop_backend_common.la - -libgtop_backend_common_la_SOURCES = \ - backend-common.c \ - marshal.c - -libgtop_backend_common_la_LDFLAGS = \ - $(LT_VERSION_INFO) $(dynamic_ldflags) - -libgtop_backend_common_la_LIBADD = \ - $(top_builddir)/sysdeps/common/libgtop_common.la \ - $(top_builddir)/lib/libgtop_server.la - -BUILT_SOURCES = \ - marshal.c - -EXTRA_DIST = \ - marshal.pl \ - libgtop-common.backend - -CLEANFILES = $(BUILT_SOURCES) - -marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl - $(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t - mv tmp-t marshal.c - diff --git a/backends/common/backend-common.c b/backends/common/backend-common.c deleted file mode 100644 index 4f1bb92c..00000000 --- a/backends/common/backend-common.c +++ /dev/null @@ -1,61 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ - -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include - -static int -_open_common (glibtop_server *, glibtop_backend *, guint64, const char **); - -static int -_close_common (glibtop_server *, glibtop_backend *, void *closure); - -extern glibtop_call_vector glibtop_backend_common_call_vector; - -#ifdef LIBGTOP_USE_GMODULE -glibtop_backend_info LibGTopBackendInfo = { - "glibtop-backend-common", _open_common, _close_common, - &glibtop_backend_common_call_vector -}; -#else -glibtop_backend_info LibGTopBackendInfo_Common = { - "glibtop-backend-common", _open_common, _close_common, - &glibtop_backend_common_call_vector -}; -#endif - -static int -_open_common (glibtop_server *server, glibtop_backend *backend, - guint64 features, const char **backend_args) -{ - return 0; -} - -static int -_close_common (glibtop_server *server, glibtop_backend *backend, - void *closure) -{ - return 0; -} - diff --git a/backends/common/backend-common.h b/backends/common/backend-common.h deleted file mode 100644 index 56b07b18..00000000 --- a/backends/common/backend-common.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ - -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#ifndef __GLIBTOP_BACKEND_COMMON_H__ -#define __GLIBTOP_BACKEND_COMMON_H__ - -#include -#include - -#include -#include -#include - -#endif diff --git a/backends/common/libgtop-common.backend b/backends/common/libgtop-common.backend deleted file mode 100644 index b4910d34..00000000 --- a/backends/common/libgtop-common.backend +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - glibtop-backend-common - - libgtop_backend_common.la - libgtop_backend_common.so - - - - diff --git a/backends/common/marshal.pl b/backends/common/marshal.pl deleted file mode 100644 index 54349023..00000000 --- a/backends/common/marshal.pl +++ /dev/null @@ -1,175 +0,0 @@ -#!/usr/bin/perl - -require 'c_types.pl'; - -$[ = 1; # set array base to 1 -$, = ' '; # set output field separator -$\ = "\n"; # set output record separator - -$always_use_temp_storage = 1; - -sub toupper { - local($_) = @_; - tr/a-z/A-Z/; - return $_; -} - -sub tolower { - local($_) = @_; - tr/A-Z/a-z/; - return $_; -} - -print '/* marshal.c */'; -print "/* This is a generated file. Please modify `marshal.pl' */"; -print ''; - -print '#include '; -print ''; -print '#include '; -print '#include '; -print ''; -print '#include '; -print ''; - -$feature_count = 0; - -while (<>) { - chop; # strip record separator - - if (/^[^#]/) { - &output($_); - } -} - -sub output { - local($line) = @_; - @line_fields = split(/\|/, $line, 9999); - $retval = $line_fields[1]; - $feature = $line_fields[2]; - $param_def = $line_fields[4]; - - $orig = $feature; - $feature =~ s/^@//; - $space = $feature; - $space =~ s/./ /g; - - $features{++$feature_count} = $orig; - - return unless $orig =~ /^@/; - - if ($retval eq 'retval') { - $retval_param = '&retval'; - $call_prefix = ''; - $call_prefix_space = ''; - $prefix = 'retval = '; - $prefix_space = ' '; - $retval = 'int'; - } - elsif ($retval !~ /^void$/) { - $retval_param = 'NULL'; - $prefix = 'retval = '; - $prefix_space = ' '; - $call_prefix = 'retval = '; - $call_prefix_space = ' '; - } - else { - $retval_param = 'NULL'; - $call_prefix = ''; - $call_prefix_space = ''; - $prefix = ''; - $prefix_space = ''; - } - - if ($retval =~ /^(array|pointer)\((.*)\)$/) { - $retval = ($2 eq 'string') ? 'char **' : "$2 *"; - } - - $need_temp_storage = $always_use_temp_storage; - $first_param_name = ''; - - $call_param = ''; - $param_decl = ''; - $need_temp_len = 0; - $nr_params = (@params = split(/:/, $param_def, 9999)); - for ($param = 1; $param <= $nr_params; $param++) { - $list = $params[$param]; - $type = $params[$param]; - $type =~ s/\(.*//; - $list =~ s/^.*\(//; - $list =~ s/\)$//; - $count = (@fields = split(/,/, $list, 9999)); - for ($field = 1; $field <= $count; $field++) { - my $c_type = $typeinfo->{$type}->[1]; - - if ($first_param_name eq '') { - $first_param_name = $fields[$field]; - } - - if ($typeinfo->{$type}->[2]) { - $need_temp_storage = 1; - } - - if ($param_decl eq '') { - $param_decl = ",\n " . $space . ' '; - } - else { - $param_decl = $param_decl . ', '; - } - $param_decl = $param_decl . $c_type . ' ' . $fields[$field]; - $call_param = $call_param . ', ' . $fields[$field]; - } - } - - if ($line_fields[3] eq '') { - $total_code = sprintf - ("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param); - } elsif ($line_fields[3] eq 'array') { - $total_code = sprintf - ("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param); - } elsif ($line_fields[3] =~ /^array/) { - $total_code = sprintf - ("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param); - } else { - $total_code = sprintf - ("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param); - } - - $func_decl = 'static '.$retval."\n"; - if ($line_fields[3] eq '') { - $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n", - $feature, $param_decl); - } elsif ($line_fields[3] eq 'array') { - $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n", - $feature, $param_decl); - } elsif ($line_fields[3] =~ /^array/) { - $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n", - $feature, 'glibtop_'.$feature, $param_decl); - } else { - $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n", - $feature, 'glibtop_'.$feature, $param_decl); - } - - $total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code); - - print $total_code; -} - -$call_vector_code = ''; -for ($nr = 1; $nr <= $feature_count; $nr++) { - $feature = $features{$nr}; - - if ($feature =~ /^@/) { - $feature =~ s/^@//; - - $call_vector_code .= sprintf (qq[\t_glibtop_get_%s_c,\n], $feature); - } else { - $call_vector_code .= sprintf (qq[\tNULL,\n]); - } -} - -print 'glibtop_call_vector glibtop_backend_common_call_vector = {'; -print $call_vector_code; -print '};'; -print ''; - diff --git a/backends/server/.cvsignore b/backends/server/.cvsignore deleted file mode 100644 index 97da6c0f..00000000 --- a/backends/server/.cvsignore +++ /dev/null @@ -1,10 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -*.lo -*.la -marshal.c -demarshal.c -libgtop_server -command.h diff --git a/backends/server/ChangeLog b/backends/server/ChangeLog deleted file mode 100644 index 6c14b53a..00000000 --- a/backends/server/ChangeLog +++ /dev/null @@ -1,125 +0,0 @@ -2004-08-22 Benoît Dejean - - * server.c: (handle_slave_connection): Replaced //comment by /*C89*/. - -2004-03-09 Bastien Nocera - - * command.c: (glibtop_call_i): - * demarshal.pl: - * marshal.pl: - * read_data.c: (glibtop_read_data_i): - * server.c: (handle_slave_connection): fix g_malloc usage on non-Linux - platforms (patch by Benoît Dejean ) - -2003-10-20 Bastien Nocera - - * backend-server.c: (_open_server): - * backend-server.h: - * command.h.in: s/u_int64_t/guint64/ - -2003-10-20 Bastien Nocera - - * backend-server.h: - * command.h.in: - * demarshal.pl: - * server.h: fixed compilation - -2003-10-20 Bastien Nocera - - * backend-server.c: (_open_server): - * command.c: (glibtop_call_i): - * demarshal.pl: - * marshal.pl: - * read_data.c: (glibtop_read_data_i): - * server.c: (main), (handle_slave_connection): - replace all the xmalloc crap by glib memory management functions - -2003-10-20 Bastien Nocera - - * Makefile.am: removed traces of guile, intllibs and libgnomesupport - -2000-11-27 Martin Baulig - - * backend-server.c (backend_server_quark): New global variable. - (_open_server, _close_server): Use the quark. - * commands.c: Likewise. - -2000-11-26 Martin Baulig - - * backend-server.h: New file. - (backend_server_private): New struct, formerly known - as glibtop_backend_private. - - * glibtop-backend-private.h: Removed. - - * backend-server.c: (_open_server): Use g_object_set_data() - to set add the backend_server_private data to the glibtop_backend, - don't override `backend->_priv'. - (_close_server): Use g_object_get_data() to get the data. - [FIXME: Use quarks directly.] - - * read.c: (glibtop_read_i): Replaced the glibtop_server and - glibtop_backend arguments with backend_server_private. - * read_data.c: (glibtop_read_data_i): Likewise. - * write.c: (glibtop_write_i): Likewise. - -2000-02-22 Martin Baulig - - * backend-sysdeps.c (LibGTopBackendInfo): Call this - `LibGTopBackendInfo_Server' when we don't use gmodule. - -2000-02-22 Martin Baulig - - * Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR) - when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise. - -2000-01-18 Martin Baulig - - * demarshal.pl: Only emit code for functions which are - really suid/sgid. - -2000-01-13 Martin Baulig - - * write.c (glibtop_write_i): The buffer which we write is - now a `const'. - -2000-01-12 Martin Baulig - - * Makefile.am: Install everything except the server binary - in $(LIBGTOP_BACKEND_DIR). - - * libgtop-server.backend: New file. - - * backend-server.c (glibtop_backend_server): Renamed to - `LibGTopBackendInfo'. - -2000-01-08 Martin Baulig - - * command.h.in (glibtop_response): New structure. - -2000-01-02 Martin Baulig - - * command.pl: New file. Creates `command.h' from `command.h.in'. - * command.h.in: New file. Template file for `command.h'. - - * io.c, version.c: New files. Copied here from `src/daemon'. - - * demarshal.pl: New file. Automatically creates `demarshal.c'. - * demarshal.c: This automatically created file handles the - demarshalling in the libgtop_server. - - * Makefile.am: Build the `libgtop_server' here. - * server.c, server.h: New files. Copied here from `src/daemon'. - -2000-01-01 Martin Baulig - - Initial version of the "glibtop-backend-server" backend. - - * command.c, read.c, read_data.c, write.c: New files. Moved here - from the `lib' directory. - - * backend-server.c: New file. - * glibtop-backend-private.h: New file. - - * marshal.pl: New file. Automatically creates `marshal.c'. - diff --git a/backends/server/Makefile.am b/backends/server/Makefile.am deleted file mode 100644 index ef446f45..00000000 --- a/backends/server/Makefile.am +++ /dev/null @@ -1,84 +0,0 @@ -LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ - -INCLUDES = @INCLUDES@ -D_BSD \ - -DLIBGTOP_COMPILE_SYSTEM=\"`uname -s`\" \ - -DLIBGTOP_COMPILE_RELEASE=\"`uname -r`\" \ - -DLIBGTOP_COMPILE_MACHINE=\"`uname -m`\" - -backenddir = @LIBGTOP_BACKEND_DIR@ - -if LIBGTOP_USE_GMODULE -backendlibdir = $(backenddir) -else -backendlibdir = $(libdir) -endif - -dynamic_ldflags = @libgtop_dynamic_ldflags@ - -backend_DATA = \ - libgtop-server.backend - -noinst_HEADERS = \ - backend-server.h - -backendlib_LTLIBRARIES = \ - libgtop_backend_server.la - -bin_PROGRAMS = \ - @server_programs@ - -EXTRA_PROGRAMS = \ - libgtop_server - -libgtop_backend_server_la_SOURCES = \ - backend-server.c \ - marshal.c \ - command.c \ - read.c \ - read_data.c \ - write.c - -libgtop_backend_server_la_LDFLAGS = \ - $(LT_VERSION_INFO) $(dynamic_ldflags) - -libgtop_server_SOURCES = \ - server.c \ - server.h \ - demarshal.c \ - version.c \ - io.c - -libgtop_server_LDADD = \ - $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid.la \ - $(top_builddir)/sysdeps/common/libgtop_suid_common.la - -if ENABLE_STATIC -libgtop_server_LDFLAGS = -static -endif - -BUILT_SOURCES = \ - marshal.c \ - demarshal.c \ - command.h - -EXTRA_DIST = \ - marshal.pl \ - demarshal.pl \ - command.pl \ - command.h.in \ - libgtop-server.backend - -CLEANFILES = $(BUILT_SOURCES) - -marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl - $(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t - mv tmp-t marshal.c - -demarshal.c: demarshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl - $(PERL) -I $(top_srcdir)/scripts $(srcdir)/demarshal.pl < $(top_srcdir)/features.def > tmp-t - mv tmp-t demarshal.c - -command.h: command.pl command.h.in $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl - $(PERL) -I $(top_srcdir)/scripts $(srcdir)/command.pl $(top_srcdir)/features.def $(srcdir)/command.h.in > tmp-t - mv tmp-t command.h - diff --git a/backends/server/backend-server.c b/backends/server/backend-server.c deleted file mode 100644 index 3b24abaf..00000000 --- a/backends/server/backend-server.c +++ /dev/null @@ -1,113 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ - -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include - -static int -_open_server (glibtop_server *, glibtop_backend *, guint64, const char **); - -static int -_close_server (glibtop_server *, glibtop_backend *, void *); - -extern glibtop_call_vector glibtop_backend_server_call_vector; - -#ifdef LIBGTOP_USE_GMODULE -glibtop_backend_info LibGTopBackendInfo = { - "glibtop-backend-server", _open_server, _close_server, - &glibtop_backend_server_call_vector -}; -#else -glibtop_backend_info LibGTopBackendInfo_Server = { - "glibtop-backend-server", _open_server, _close_server, - &glibtop_backend_server_call_vector -}; -#endif - -static int -_open_server (glibtop_server *server, glibtop_backend *backend, - guint64 features, const char **backend_args) -{ - backend_server_private *priv; - - priv = g_malloc (sizeof (backend_server_private)); - - glibtop_backend_set_closure_data (backend, priv); - -#ifdef DEBUG - fprintf (stderr, "open_server - %p, %p, %p\n", server, backend, priv); - - fprintf (stderr, "Opening pipe to server (%s).\n", LIBGTOP_SERVER); -#endif - - if (pipe (priv->input) || pipe (priv->output)) { - glibtop_warn_io_r (server, "cannot make a pipe"); - return -1; - } - - priv->pid = fork (); - - if (priv->pid < 0) { - glibtop_warn_io_r (server, "fork failed"); - return -1; - } else if (priv->pid == 0) { - close (0); close (1); - close (priv->input [0]); - close (priv->output [1]); - dup2 (priv->input [1], 1); - dup2 (priv->output [0], 0); - execl (LIBGTOP_SERVER, "libgtop-server", NULL); - glibtop_error_io_r (server, "execl (%s)", - LIBGTOP_SERVER); - _exit (2); - } - - close (priv->input [1]); - close (priv->output [0]); - - glibtop_server_ref (server); - priv->server = server; - - return 0; -} - -static int -_close_server (glibtop_server *server, glibtop_backend *backend, - void *closure) -{ - backend_server_private *priv = closure; - - kill (priv->pid, SIGKILL); - close (priv->input [0]); - close (priv->output [1]); - - glibtop_server_unref (priv->server); - - priv->pid = 0; - - g_free (priv); - - return 0; -} - diff --git a/backends/server/backend-server.h b/backends/server/backend-server.h deleted file mode 100644 index 74a15aea..00000000 --- a/backends/server/backend-server.h +++ /dev/null @@ -1,65 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ - -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#ifndef __GLIBTOP_BACKEND_COMMON_H__ -#define __GLIBTOP_BACKEND_COMMON_H__ - -#include -#include - -#include -#include -#include - -typedef struct _backend_server_private backend_server_private; - -struct _backend_server_private -{ - guint64 flags; - int input [2]; /* Pipe client <- server */ - int output [2]; /* Pipe client -> server */ - pid_t pid; /* PID of the server */ - - glibtop_server *server; -}; - -void * -glibtop_call_i (glibtop_server *server, backend_server_private *priv, - unsigned command, size_t send_size, const void *send_ptr, - size_t data_size, const void *data_ptr, - size_t recv_size, void *recv_ptr, - int *retval_ptr); - -void -glibtop_read_i (backend_server_private *priv, size_t size, void *buf); - -void * -glibtop_read_data_i (backend_server_private *priv); - -void -glibtop_write_i (backend_server_private *priv, size_t size, const void *buf); - -#endif - diff --git a/backends/server/command.c b/backends/server/command.c deleted file mode 100644 index 244f9098..00000000 --- a/backends/server/command.c +++ /dev/null @@ -1,94 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ - -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include - -#include "command.h" - -void * -glibtop_call_i (glibtop_server *server, backend_server_private *priv, - unsigned command, size_t send_size, const void *send_buf, - size_t data_size, const void *data_buf, - size_t recv_size, void *recv_ptr, - int *retval_ptr) -{ - glibtop_command cmnd = {0}; - glibtop_response resp = {0}; - - cmnd.command = command; - - /* If send_size is less than _GLIBTOP_PARAM_SIZE (normally 16 Bytes), we - * send it together with command, so we only need one system call instead - * of two. */ - - if (send_size <= _GLIBTOP_PARAM_SIZE) { - memcpy (cmnd.parameter, send_buf, send_size); - cmnd.param_size = send_size; - } else { - cmnd.send_size = send_size; - } - - cmnd.data_size = data_size; - - glibtop_write_i (priv, sizeof (glibtop_command), &cmnd); - - if (data_size) { -#ifdef SLAVE_DEBUG - fprintf (stderr, "SENDING %d bytes of DATA.\n", data_size); -#endif - glibtop_write_i (priv, data_size, data_buf); - } - - glibtop_read_i (priv, sizeof (glibtop_response), &resp); - -#ifdef SLAVE_DEBUG - fprintf (stderr, "RESPONSE: %d - %d - %ld - %ld - %p - %ld\n", - resp.retval, resp.glibtop_errno, - (long) resp.recv_size, (long) resp.data_size, - recv_ptr, (long) recv_size); -#endif - - if (retval_ptr) - *retval_ptr = resp.glibtop_errno; - - if (resp.recv_size != recv_size) { - glibtop_warn_r (server, "Expected %ld bytes, but got %ld.", - (long) recv_size, (long) resp.recv_size); - return NULL; - } - - if (recv_ptr) - glibtop_read_i (priv, recv_size, recv_ptr); - - if (resp.data_size) { - void *ptr = g_malloc (resp.data_size); - - glibtop_read_i (priv, resp.data_size, ptr); - - return ptr; - } - - return NULL; -} diff --git a/backends/server/command.h.in b/backends/server/command.h.in deleted file mode 100644 index 9c8ceeb1..00000000 --- a/backends/server/command.h.in +++ /dev/null @@ -1,59 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ - -/* $Id$ */ - -@@AUTOGEN_COMMENT@@ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#ifndef __GLIBTOP_COMMAND_H__ -#define __GLIBTOP_COMMAND_H__ - -#include -#include - -G_BEGIN_DECLS - -@@GLIBTOP_COMMAND_CONSTANTS@@ - -#define _GLIBTOP_PARAM_SIZE 16 - -typedef struct _glibtop_command glibtop_command; -typedef struct _glibtop_response glibtop_response; - -struct _glibtop_command -{ - guint64 command; - guint64 param_size, send_size, data_size; - char parameter [_GLIBTOP_PARAM_SIZE]; -}; - -struct _glibtop_response -{ - int retval; - int glibtop_errno; - guint64 recv_size, data_size; -}; - -G_END_DECLS - -#endif diff --git a/backends/server/command.pl b/backends/server/command.pl deleted file mode 100644 index f1e6429b..00000000 --- a/backends/server/command.pl +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/perl - -require 'c_types.pl'; - -die "Usage: $0 features.def command.h.in" unless $#ARGV == 1; - -$[ = 1; # set array base to 1 -$, = ' '; # set output field separator -$\ = "\n"; # set output record separator - -sub toupper { - local($_) = @_; - tr/a-z/A-Z/; - return $_; -} - -sub tolower { - local($_) = @_; - tr/A-Z/a-z/; - return $_; -} - -$constants_decl_code = ''; - -open FEATURESDEF, $ARGV[1] or - die "open ($ARGV[1]): $!"; - -while () { - chop; # strip record separator - - if (/^[^\#]/) { - &parse_features_def ($_); - } -} - -close FEATURESDEF; - -sub parse_features_def { - local($line) = @_; - @line_fields = split(/\|/, $line, 9999); - $retval = $line_fields[1]; - $element_def = $line_fields[3]; - $feature = $line_fields[2]; - $param_def = $line_fields[4]; - - $orig = $feature; - $feature =~ s/^@//; - $space = $feature; - $space =~ s/./ /g; - - $constants_decl_code .= sprintf - (qq[\#define %-40s %d\n], 'GLIBTOP_CMND_'.&toupper($feature), - ++$feature_count); - - $features{$feature_count} = $feature; -} - -chop $constants_decl_code; - -$auto_gen_comment = sprintf - (qq[/*\n * This file is automatically generated.\n * Please modify `command.pl' and `command.h.in'.\n */]); - -open COMMAND, $ARGV[2] or - die "open ($ARGV[2]): $!"; - -while () { - chop; - - s/^\s*\@\@GLIBTOP_COMMAND_CONSTANTS\@\@\s*$/$constants_decl_code/; - - s/^\s*\@\@AUTOGEN_COMMENT\@\@\s*$/$auto_gen_comment/; -} continue { - print $_; -} - -close COMMAND; diff --git a/backends/server/demarshal.pl b/backends/server/demarshal.pl deleted file mode 100644 index 6410f04e..00000000 --- a/backends/server/demarshal.pl +++ /dev/null @@ -1,385 +0,0 @@ -#!/usr/bin/perl - -require 'c_types.pl'; - -$[ = 1; # set array base to 1 -$, = ' '; # set output field separator -$\ = "\n"; # set output record separator - -$always_use_temp_storage = 0; - -sub toupper { - local($_) = @_; - tr/a-z/A-Z/; - return $_; -} - -sub tolower { - local($_) = @_; - tr/A-Z/a-z/; - return $_; -} - -print '/* demarshal.c */'; -print "/* This is a generated file. Please modify `demarshal.pl' */"; -print ''; - -print '#include '; -print '#include '; -print ''; -print '#include '; -print '#include '; -print ''; -print '#include '; -print ''; -print '#include '; -print '#include "server.h"'; -print ''; - -$feature_count = 0; - -while (<>) { - chop; # strip record separator - - if (/^[^\#]/) { - &output($_); - } -} - -sub output { - local($line) = @_; - @line_fields = split(/\|/, $line, 9999); - $retval = $line_fields[1]; - $element_def = $line_fields[3]; - $feature = $line_fields[2]; - $param_def = $line_fields[4]; - - return if $feature =~ /^@/; - $name = 'glibtop_'.$feature; - - $orig = $feature; - $feature =~ s/^@//; - $space = $feature; - $space =~ s/./ /g; - - $features{++$feature_count} = $feature; - - $orig_retval = $retval; - - if ($retval eq 'retval') { - $retval_param = '&retval'; - $call_prefix = ''; - $call_prefix_space = ''; - $prefix = 'retval = '; - $prefix_space = ' '; - $retval = 'int'; - } elsif ($retval !~ /^void$/) { - $retval_param = 'NULL'; - $prefix = 'retval = '; - $prefix_space = ' '; - $call_prefix = 'retval = '; - $call_prefix_space = ' '; - } else { - $retval_param = 'NULL'; - $call_prefix = ''; - $call_prefix_space = ''; - $prefix = ''; - $prefix_space = ''; - } - - if ($retval =~ /^(array|pointer)\((.*)\)$/) { - $retval = ($2 eq 'string') ? 'char **' : "$2 *"; - } - - $need_temp_storage = $always_use_temp_storage; - $first_param_name = ''; - $size_code = "\t/* send size */\n"; - $size_code .= "\t_LIBGTOP_SEND_len = 0;\n"; - - $local_var_decl_code = ''; - $local_var_decl_code .= "\tsize_t _LIBGTOP_SEND_len, _LIBGTOP_RECV_len;\n"; - $local_var_decl_code .= "\toff_t _LIBGTOP_SEND_offset;\n"; - $local_var_decl_code .= "\tchar *_LIBGTOP_RECV_buf, *_LIBGTOP_RECV_ptr;\n"; - $local_var_decl_code .= "\tconst char *_LIBGTOP_SEND_ptr;\n"; - $local_var_decl_code .= sprintf - (qq[\tglibtop_%s %s;\n], $feature, $feature); - if ($retval !~ /^void$/) { - $local_var_decl_code .= sprintf ("\t%s retval = (%s) 0;\n", - $retval, $retval); - } - - $init_local_var_code = "\t/* variable initialization */\n"; - $init_local_var_code .= sprintf - (qq[\tmemset (&%s, 0, sizeof (glibtop_%s));\n], $feature, $feature); - $init_local_var_code .= "\t_LIBGTOP_SEND_offset = 0;\n"; - $init_local_var_code .= "\t_LIBGTOP_SEND_ptr = ". - "(char *) send_ptr;\n"; - - $demarshal_code = ''; - - $call_param = ''; - $param_decl = ''; - $need_temp_len = 0; - $nr_params = (@params = split(/:/, $param_def, 9999)); - for ($param = 1; $param <= $nr_params; $param++) { - $list = $params[$param]; - $type = $params[$param]; - $type =~ s/\(.*//; - $list =~ s/^.*\(//; - $list =~ s/\)$//; - $count = (@fields = split(/,/, $list, 9999)); - for ($field = 1; $field <= $count; $field++) { - my $c_type = $typeinfo->{$type}->[1]; - - if ($first_param_name eq '') { - $first_param_name = $fields[$field]; - } - - if ($typeinfo->{$type}->[2]) { - $need_temp_storage = 1; - } - - if ($param_decl eq '') { - $param_decl = ",\n " . $space . ' '; - } else { - $param_decl = $param_decl . ', '; - } - $param_decl = $param_decl . $c_type . ' ' . $fields[$field]; - $call_param = $call_param . ', _LIBGTOP_demarshal_' . $fields[$field]; - - $size_code .= "\t_LIBGTOP_SEND_len += "; - if ($typeinfo->{$type}->[2]) { - $size_code .= sprintf ("sizeof (size_t)"); - } else { - $size_code .= sprintf ("sizeof (%s)", $c_type); - } - $size_code .= ";\n"; - - $local_var_decl_code .= sprintf - (qq[\t%s _LIBGTOP_demarshal_%s;\n], $c_type, $fields[$field]); - $init_local_var_code .= sprintf - (qq[\tmemset (&_LIBGTOP_demarshal_%s, 0, sizeof (%s));\n], - $fields[$field], $c_type); - - $demarshal_code .= "\t_LIBGTOP_SEND_ptr = ". - "(char *) send_ptr + _LIBGTOP_SEND_offset;\n"; - - if ($typeinfo->{$type}->[2]) { - $demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_TEMP_len, _LIBGTOP_SEND_ptr, sizeof (size_t));\n"); - $demarshal_code .= sprintf - (qq[\t_LIBGTOP_DATA_len += _LIBGTOP_TEMP_len;\n]); - $demarshal_code .= sprintf - (qq[\tif (_LIBGTOP_DATA_len > data_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n]); - $demarshal_code .= sprintf - (qq[\t_LIBGTOP_DATA_offset += _LIBGTOP_TEMP_len;\n]); - } - - if (defined $demarshal_funcs->{$type}) { - $demarshal_code .= $demarshal_funcs->{$type}->($c_type, $fields[$field], "\t"); - } else { - $demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_demarshal_%s, _LIBGTOP_SEND_ptr, %s);\n", - $fields[$field], "sizeof ($c_type)"); - } - - $demarshal_code .= "\t_LIBGTOP_SEND_offset += "; - if ($typeinfo->{$type}->[2]) { - $demarshal_code .= sprintf ("sizeof (size_t)"); - } else { - $demarshal_code .= sprintf ("sizeof (%s)", $c_type); - } - $demarshal_code .= ";\n"; - } - } - - if (!($demarshal_code eq '')) { - $demarshal_code = sprintf (qq[\t/* demarshal start */\n%s\n], - $demarshal_code); - } - - if ($line_fields[3] eq '') { - $call_code = sprintf - ("\tretval = glibtop_get_%s_p (server%s);\n", - $feature, $call_param); - } elsif ($line_fields[3] eq 'array') { - $call_code = sprintf - ("\tretval = glibtop_get_%s_p (server, &array%s);\n", - $feature, $call_param); - $local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]); - } elsif ($line_fields[3] =~ /^array/) { - $call_code = sprintf - ("\tretval = glibtop_get_%s_p (server, &array, &%s%s);\n", - $feature, $feature, $call_param); - $local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]); - } else { - $call_code = sprintf - ("\tretval = glibtop_get_%s_p (server, &%s%s);\n", - $feature, $feature, $call_param); - } - - if ($orig_retval eq 'retval') { - $call_code .= sprintf - (qq[\tif (retval_ptr)\n\t\t*retval_ptr = retval;\n]); - } else { - $call_code .= sprintf - (qq[\tif (retval_ptr)\n\t\t*retval_ptr = server->glibtop_errno;\n]); - } - - $size_code .= sprintf - (qq[\tif (_LIBGTOP_SEND_len != send_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n\n]); - - $size_code .= "\t/* recv size */\n"; - $size_code .= "\t_LIBGTOP_RECV_len = 0;\n"; - if ($line_fields[3] eq '') { - } elsif ($line_fields[3] eq 'array') { - $size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n"; - } elsif ($line_fields[3] =~ /^array/) { - $size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n"; - $size_code .= sprintf - (qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature); - } else { - $size_code .= sprintf - (qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature); - } - $size_code .= "\n"; - - $size_code .= "\t/* recv buffer */\n"; - if ($line_fields[3] eq '') { - $size_code .= "\t_LIBGTOP_RECV_buf = NULL;\n"; - } else { - $size_code .= "\t_LIBGTOP_RECV_buf = g_malloc (_LIBGTOP_RECV_len);\n"; - } - $size_code .= "\t_LIBGTOP_RECV_ptr = _LIBGTOP_RECV_buf;\n\n"; - - $recv_buf_code = ''; - if ($line_fields[3] eq '') { - } elsif ($line_fields[3] eq 'array') { - $recv_buf_code = "\t/* write recv buffer */\n"; - $recv_buf_code .= sprintf - (qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]); - $recv_buf_code .= sprintf - (qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]); - } elsif ($line_fields[3] =~ /^array/) { - $recv_buf_code = "\t/* write recv buffer */\n"; - $recv_buf_code .= sprintf - (qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]); - $recv_buf_code .= sprintf - (qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]); - $recv_buf_code .= sprintf - (qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n], - $feature, $feature); - $recv_buf_code .= sprintf - (qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature); - } else { - $recv_buf_code = "\t/* write recv buffer */\n"; - $recv_buf_code .= sprintf - (qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n], - $feature, $feature); - $recv_buf_code .= sprintf - (qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature); - } - - $recv_buf_code .= "\n"; - $recv_buf_code .= "\t*recv_buf_ptr = _LIBGTOP_RECV_buf;\n"; - $recv_buf_code .= "\t*recv_size_ptr = _LIBGTOP_RECV_len;\n"; - - if ($orig_retval eq 'pointer(string)') { - $need_temp_storage = 1; - $local_var_decl_code .= "\tchar **_LIBGTOP_TEMP_ptr;\n"; - $local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_ptr;\n"; - $local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_base;\n"; - $local_var_decl_code .= "\toff_t _LIBGTOP_ARRAY_offset;\n"; - $local_var_decl_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n"; - - $recv_buf_code .= "\n"; - $recv_buf_code .= "\t_LIBGTOP_TEMP_len = 0;\n"; - $recv_buf_code .= "\t_LIBGTOP_TEMP_ptr = retval;\n"; - $recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++)\n"; - $recv_buf_code .= "\t\t_LIBGTOP_TEMP_len += strlen (*_LIBGTOP_TEMP_ptr)+1;\n"; - $recv_buf_code .= "\n"; - $recv_buf_code .= "\t_LIBGTOP_TEMP_len += sizeof (off_t) + 1;\n"; - $recv_buf_code .= "\t_LIBGTOP_TEMP_len += array.number * sizeof (off_t);\n"; - $recv_buf_code .= "\t_LIBGTOP_ARRAY_base = g_malloc (_LIBGTOP_TEMP_len);"; - $recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = _LIBGTOP_ARRAY_base;\n"; - $recv_buf_code .= "\t_LIBGTOP_ARRAY_offset = array.number * sizeof (off_t);\n"; - $recv_buf_code .= "\t_LIBGTOP_ARRAY_offset += sizeof (off_t);\n"; - $recv_buf_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) _LIBGTOP_ARRAY_ptr;\n"; - $recv_buf_code .= "\n"; - $recv_buf_code .= "\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n"; - $recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n"; - $recv_buf_code .= "\t\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n"; - $recv_buf_code .= "\t\t_LIBGTOP_ARRAY_offset += strlen (*_LIBGTOP_TEMP_ptr)+1;\n"; - $recv_buf_code .= "\t}\n\n"; - $recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) _LIBGTOP_ARRAY_off_ptr;\n"; - $recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n"; - $recv_buf_code .= "\t\tstrcpy (_LIBGTOP_ARRAY_ptr, *_LIBGTOP_TEMP_ptr);\n"; - $recv_buf_code .= "\t\t_LIBGTOP_ARRAY_ptr += strlen (*_LIBGTOP_TEMP_ptr)+1;\n"; - $recv_buf_code .= "\t}\n\n"; - $recv_buf_code .= "\tif (recv_data_ptr) {\n"; - $recv_buf_code .= "\t\t*recv_data_ptr = _LIBGTOP_ARRAY_base;\n"; - $recv_buf_code .= "\t\t*recv_data_size_ptr = _LIBGTOP_TEMP_len;\n"; - $recv_buf_code .= "\t}\n"; - - } elsif ($line_fields[3] =~ /^array/) { - $recv_buf_code .= "\n"; - $recv_buf_code .= "\tif (recv_data_ptr) {\n"; - $recv_buf_code .= "\t\t*recv_data_ptr = retval;\n"; - $recv_buf_code .= "\t\t*recv_data_size_ptr = array.total;\n"; - $recv_buf_code .= "\t}\n"; - } - - if ($need_temp_storage) { - $local_var_decl_code .= "\tsize_t _LIBGTOP_TEMP_len;\n"; - $local_var_decl_code .= "\tsize_t _LIBGTOP_DATA_len;\n"; - $local_var_decl_code .= "\toff_t _LIBGTOP_DATA_offset;\n"; - $local_var_decl_code .= "\tchar *_LIBGTOP_DATA_ptr;\n"; - - $init_local_var_code .= "\t_LIBGTOP_DATA_len = 0;\n"; - $init_local_var_code .= "\t_LIBGTOP_DATA_offset = 0;\n"; - $init_local_var_code .= "\t_LIBGTOP_DATA_ptr = ". - "(char *) data_ptr;\n"; - } - - $func_decl_code = sprintf - (qq[static int\n_glibtop_demarshal_%s_i (glibtop *server, glibtop_backend *backend, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)\n], $feature); - - if (!($call_code eq '')) { - $call_code .= "\n"; - } - - $func_body_code = sprintf - (qq[%s%s%s%s], $size_code, $demarshal_code, $call_code, $recv_buf_code); - - $total_code = sprintf - (qq[%s{\n%s\n%s\n%s\n\treturn 0;\n}\n], - $func_decl_code, $local_var_decl_code, $init_local_var_code, - $func_body_code); - - $total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n", - &toupper($feature), $total_code, - &toupper($feature)); - - print $total_code; -} - -$func_decl_code = sprintf - (qq[int\nglibtop_demarshal_func_i (glibtop *server, glibtop_backend *backend, unsigned command, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)]); - -$switch_body_code = ''; - -for ($nr = 1; $nr <= $feature_count; $nr++) { - $feature = $features{$nr}; - - $switch_body_code .= sprintf - (qq[#if GLIBTOP_SUID_%s\n\tcase GLIBTOP_CMND_%s:\n\t\treturn _glibtop_demarshal_%s_i\n\t\t\t(server, backend, send_ptr, send_size,\n\t\t\t data_ptr, data_size,\n\t\t\t recv_buf_ptr, recv_size_ptr,\n\t\t\t recv_data_ptr, recv_data_size_ptr, retval_ptr);\n#endif /* GLIBTOP_SUID_%s */\n], - &toupper ($feature), &toupper ($feature), $feature, &toupper ($feature)); -} - -$switch_code = sprintf - (qq[\tswitch (command) {\n%s\tdefault:\n\t\treturn -GLIBTOP_ERROR_INVALID_ARGUMENT;\n\t}\n], $switch_body_code); - -$total_code = sprintf - (qq[%s\n{\n%s}\n\n], $func_decl_code, $switch_code); - -print $total_code; - -1; diff --git a/backends/server/io.c b/backends/server/io.c deleted file mode 100644 index c5ff5cbc..00000000 --- a/backends/server/io.c +++ /dev/null @@ -1,114 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ - -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include "server.h" - -void -do_output (int s, glibtop_response *resp, const void *recv_ptr, - const void *data_ptr) -{ -#ifdef DEBUG - fprintf (stderr, "Really writing %d bytes.\n", - sizeof (glibtop_response)); -#endif - - if (s == 0) { - if (write (1, (const void *) resp, sizeof (glibtop_response)) < 0) - glibtop_warn_io ("write"); - } else { - if (send (s, (const void *) resp, sizeof (glibtop_response), 0) < 0) - glibtop_warn_io ("send"); - } - - if (resp->recv_size) { -#ifdef DEBUG - fprintf (stderr, "Writing %ld bytes of data.\n", - (long) resp->recv_size); -#endif - - if (s == 0) { - if (write (1, recv_ptr, resp->recv_size) < 0) - glibtop_warn_io ("write"); - } else { - if (send (s, recv_ptr, resp->recv_size, 0) < 0) - glibtop_warn_io ("send"); - } - } - - if (resp->data_size) { -#ifdef DEBUG - fprintf (stderr, "Writing %ld bytes of extra data.\n", - (long) resp->data_size); -#endif - - if (s == 0) { - if (write (1, data_ptr, resp->data_size) < 0) - glibtop_warn_io ("write"); - } else { - if (send (s, data_ptr, resp->data_size, 0) < 0) - glibtop_warn_io ("send"); - } - } - -} - -int -do_read (int s, void *ptr, size_t total_size) -{ - int nread; - char *tmp_ptr; - size_t already_read = 0, remaining = total_size; - - while (already_read < total_size) { - if (s) - nread = recv (s, ptr, remaining, 0); - else - nread = read (0, ptr, remaining); - - if ((already_read == 0) && (nread == 0)) { - glibtop_warn ("pid %d received eof.", getpid ()); - return 0; - } - - if (nread <= 0) { - glibtop_warn_io ("recv"); - return 0; - } - - already_read += nread; - remaining -= nread; - /* (char *) ptr += nread; */ - tmp_ptr = ptr; - tmp_ptr += nread; - ptr = tmp_ptr; - -#ifdef DEBUG - fprintf (stderr, "READ (%d): %d - %d - %d\n", - nread, already_read, remaining, total_size); -#endif - } - - return already_read; -} diff --git a/backends/server/libgtop-server.backend b/backends/server/libgtop-server.backend deleted file mode 100644 index df5134c7..00000000 --- a/backends/server/libgtop-server.backend +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - glibtop-backend-server - - libgtop_backend_server.la - libgtop_backend_server.so - - - - diff --git a/backends/server/marshal.pl b/backends/server/marshal.pl deleted file mode 100644 index 0b82138f..00000000 --- a/backends/server/marshal.pl +++ /dev/null @@ -1,305 +0,0 @@ -#!/usr/bin/perl - -require 'c_types.pl'; - -$[ = 1; # set array base to 1 -$, = ' '; # set output field separator -$\ = "\n"; # set output record separator - -$always_use_temp_storage = 1; - -sub toupper { - local($_) = @_; - tr/a-z/A-Z/; - return $_; -} - -sub tolower { - local($_) = @_; - tr/A-Z/a-z/; - return $_; -} - -print '/* marshal.c */'; -print "/* This is a generated file. Please modify `marshal.pl' */"; -print ''; - -print '#include '; -print ''; -print '#include '; -print '#include '; -print ''; -print '#include "command.h"'; -print '#include '; -print ''; - -$feature_count = 0; - -while (<>) { - chop; # strip record separator - - if (/^[^#]/) { - &output($_); - } -} - -sub output { - local($line) = @_; - @line_fields = split(/\|/, $line, 9999); - $retval = $line_fields[1]; - $feature = $line_fields[2]; - $param_def = $line_fields[4]; - - $orig = $feature; - $feature =~ s/^@//; - $space = $feature; - $space =~ s/./ /g; - - $features{++$feature_count} = $orig; - return if $orig =~ /^@/; - - $orig_retval = $retval; - if ($retval eq 'retval') { - $retval_param = '&retval'; - $call_prefix = ''; - $call_prefix_space = ''; - $prefix = 'retval = '; - $prefix_space = ' '; - $retval = 'int'; - } - elsif ($retval !~ /^void$/) { - $retval_param = 'NULL'; - $prefix = 'retval = '; - $prefix_space = ' '; - $call_prefix = 'retval = '; - $call_prefix_space = ' '; - } - else { - $retval_param = 'NULL'; - $call_prefix = ''; - $call_prefix_space = ''; - $prefix = ''; - $prefix_space = ''; - } - - if ($retval =~ /^(array|pointer)\((.*)\)$/) { - $retval = ($2 eq 'string') ? 'char **' : "$2 *"; - } - - $need_temp_storage = $always_use_temp_storage; - $local_var_init_code = "\t/* variable initialization */\n"; - $local_var_init_code .= "\t_LIBGTOP_SEND_len = 0;\n"; - $local_var_init_code .= "\t_LIBGTOP_DATA_len = 0;\n"; - $local_var_init_code .= "\t_LIBGTOP_SEND_offset = 0;\n"; - $local_var_init_code .= "\t_LIBGTOP_SEND_ptr = ". - "(char *) _LIBGTOP_SEND_buf;\n"; - $marshal_code = "\t/* marshal start */\n"; - $marshal_code .= "\tmemset (_LIBGTOP_SEND_buf, 0, _LIBGTOP_SEND_len);\n"; - $first_param_name = ''; - $size_code = ''; - - $call_param = ''; - $param_decl = ''; - $need_temp_len = 0; - $nr_params = (@params = split(/:/, $param_def, 9999)); - for ($param = 1; $param <= $nr_params; $param++) { - $list = $params[$param]; - $type = $params[$param]; - $type =~ s/\(.*//; - $list =~ s/^.*\(//; - $list =~ s/\)$//; - $count = (@fields = split(/,/, $list, 9999)); - for ($field = 1; $field <= $count; $field++) { - my $c_type = $typeinfo->{$type}->[1]; - - if ($first_param_name eq '') { - $first_param_name = $fields[$field]; - } - - if ($typeinfo->{$type}->[2]) { - $need_temp_storage = 1; - } - - if ($param_decl eq '') { - $param_decl = ",\n " . $space . ' '; - } - else { - $param_decl = $param_decl . ', '; - } - $param_decl = $param_decl . $c_type . ' ' . $fields[$field]; - $call_param = $call_param . ', ' . $fields[$field]; - - $size_code .= "\t_LIBGTOP_SEND_len += "; - if ($typeinfo->{$type}->[2]) { - $size_code .= sprintf ("sizeof (size_t)"); - } else { - $size_code .= sprintf ("sizeof (%s)", $c_type); - } - $size_code .= ";\n"; - - if (defined $sizeof_funcs->{$type}) { - $size_code .= "\t_LIBGTOP_DATA_len += "; - $size_code .= $sizeof_funcs->{$type}->($fields[$field]); - $size_code .= ";\n"; - } - - $marshal_code .= "\t_LIBGTOP_SEND_ptr = ". - "(char *) _LIBGTOP_SEND_buf + _LIBGTOP_SEND_offset;\n"; - - if (defined $marshal_funcs->{$type}) { - $marshal_code .= $marshal_funcs->{$type}->($c_type, $fields[$field], "\t"); - } else { - $marshal_code .= sprintf ("\tmemcpy (_LIBGTOP_SEND_ptr, %s, %s);\n", - '&'.$fields[$field], "sizeof ($c_type)"); - } - - $marshal_code .= "\t_LIBGTOP_SEND_offset += "; - if ($typeinfo->{$type}->[2]) { - $marshal_code .= sprintf ("sizeof (size_t)"); - } else { - $marshal_code .= sprintf ("sizeof (%s)", $c_type); - } - $marshal_code .= ";\n"; - } - } - - $local_var_code = ""; - $local_var_code .= "\tunsigned _LIBGTOP_SEND_offset, _LIBGTOP_SEND_len;\n"; - $local_var_code .= "\tunsigned _LIBGTOP_DATA_len;\n"; - if ($need_temp_len) { - $local_var_code .= "\tunsigned _LIBGTOP_SEND_temp_len;\n"; - } - $local_var_code .= "\tvoid *_LIBGTOP_SEND_buf, *_LIBGTOP_DATA_buf;\n"; - $local_var_code .= "\tchar *_LIBGTOP_SEND_ptr, *_LIBGTOP_DATA_ptr;\n"; - if ($retval !~ /^void$/) { - $local_var_code .= sprintf ("\t%s retval = (%s) 0;\n", - $retval, $retval); - } - - $total_code = ''; - - $send_buf_code = "\t/* send buffer */\n"; - $send_buf_code .= "\t_LIBGTOP_SEND_buf = "; - if ($need_temp_storage) { - $send_buf_code .= "g_malloc (_LIBGTOP_SEND_len+1)"; - } else { - $send_buf_code .= '(void *) &'.$first_param_name; - } - $send_buf_code .= ";\n\n"; - - $send_buf_code .= "\t/* data buffer */\n"; - $send_buf_code .= "\t_LIBGTOP_DATA_buf = "; - if ($need_temp_storage) { - $send_buf_code .= "g_malloc (_LIBGTOP_DATA_len+1)"; - } else { - $send_buf_code .= 'NULL'; - } - $send_buf_code .= ";\n"; - $send_buf_code .= "\t_LIBGTOP_DATA_ptr = _LIBGTOP_DATA_buf;\n"; - - $call_code = ''; - $call_code .= sprintf ("\t%sglibtop_call_i (server, closure, GLIBTOP_CMND_%s,\n", - $call_prefix, &toupper($feature)); - $call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space, - "_LIBGTOP_SEND_len", "_LIBGTOP_SEND_buf"); - $call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space, - "_LIBGTOP_DATA_len", "_LIBGTOP_DATA_buf"); - if ($line_fields[3] eq '') { - $call_code .= sprintf ("\t\t\t%s0, NULL,\n", $call_prefix_space); - } elsif ($line_fields[3] eq 'array') { - $call_code .= sprintf ("\t\t\t%ssizeof (glibtop_array), array,\n", - $call_prefix_space); - } else { - $call_code .= sprintf ("\t\t\t%ssizeof (glibtop_%s), buf,\n", - $call_prefix_space, $feature); - } - $call_code .= sprintf ("\t\t\t%s%s);\n", $call_prefix_space, $retval_param); - - if ($need_temp_storage) { - $send_buf_free_code = "\tg_free (_LIBGTOP_SEND_buf);\n"; - $send_buf_free_code .= "\tg_free (_LIBGTOP_DATA_buf);\n"; - } else { - $send_buf_free_code = ""; - } - - if (!($size_code eq '')) { - $size_code = sprintf (qq[\t/* send size */\n%s\n], $size_code); - } - - if ($orig_retval eq 'pointer(string)') { - $call_code .= "\n"; - $local_var_code .= "\tchar *_LIBGTOP_ARRAY_ptr, **ptrlist;\n"; - $local_var_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n"; - $local_var_code .= "\tint i;\n"; - $call_code .= "\tptrlist = g_malloc (array->number+1 * sizeof (char *));\n"; - $call_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) retval;\n"; - $call_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) retval;\n"; - $call_code .= "\t_LIBGTOP_ARRAY_off_ptr++;\n\n"; - $call_code .= "\tfor (i = 0; i < array->number; i++)\n"; - $call_code .= "\t\tptrlist [i] = g_strdup (_LIBGTOP_ARRAY_ptr + *_LIBGTOP_ARRAY_off_ptr++);\n"; - $call_code .= "\tptrlist [array->number] = NULL;\n\n"; - $call_code .= "\tg_free (retval);\n"; - $call_code .= "\tretval = ptrlist;\n"; - } - - $total_code .= sprintf ("%s%s\n%s\n%s\n%s\n", - $size_code, $send_buf_code, $marshal_code, - $call_code, $send_buf_free_code); - - $return_code = ''; - if ($retval !~ /^void$/) { - $return_code .= "\treturn retval;\n"; - } else { - $return_code .= "\treturn;\n"; - } - - $total_code .= $return_code; - - $func_decl = 'static '.$retval."\n"; - if ($line_fields[3] eq '') { - $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n", - $feature, $param_decl); - } elsif ($line_fields[3] eq 'array') { - $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n", - $feature, $param_decl); - } elsif ($line_fields[3] =~ /^array/) { - $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n", - $feature, 'glibtop_'.$feature, $param_decl); - } else { - $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n", - $feature, 'glibtop_'.$feature, $param_decl); - } - - $total_code = sprintf ("%s{\n%s\n%s\n%s\n%s}\n", $func_decl, - $local_var_code, $local_var_init_code, - $total_code); - - - $total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n", - &toupper($feature), $total_code, - &toupper($feature)); - - print $total_code; -} - -$call_vector_code = ''; -for ($nr = 1; $nr <= $feature_count; $nr++) { - $feature = $features{$nr}; - - $orig = $feature; - $feature =~ s/^@//; - - if ($orig =~ /^@/) { - $call_vector_code .= sprintf (qq[\tNULL,\n]); - } else { - $call_vector_code .= sprintf - (qq[\#if GLIBTOP_SUID_%s\n\t_glibtop_get_%s_c,\n\#else\n\tNULL,\n\#endif\n], - &toupper($feature), $feature); - } -} - -print 'glibtop_call_vector glibtop_backend_server_call_vector = {'; -print $call_vector_code; -print '};'; -print ''; - diff --git a/backends/server/read.c b/backends/server/read.c deleted file mode 100644 index 2443f8ee..00000000 --- a/backends/server/read.c +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ - -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include - -void -glibtop_read_i (backend_server_private *priv, size_t size, void *buf) -{ - int ret = 0; - -#ifdef DEBUG - fprintf (stderr, "LIBRARY: really reading %d bytes from %d.\n", - size, priv->input [0]); -#endif - - ret = read (priv->input [0], buf, size); - -#ifdef DEBUG - fprintf (stderr, "LIBRARY: read %d bytes.\n", ret); -#endif - - if (ret < 0) - glibtop_error_io_r (priv->server, "read %d bytes", size); -} diff --git a/backends/server/read_data.c b/backends/server/read_data.c deleted file mode 100644 index b37fe2ab..00000000 --- a/backends/server/read_data.c +++ /dev/null @@ -1,58 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ - -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include - -void * -glibtop_read_data_i (backend_server_private *priv) -{ - size_t size; - void *ptr; - int ret; - -#ifdef DEBUG - fprintf (stderr, "LIBRARY: reading %d data bytes.\n", sizeof (size_t)); -#endif - - ret = read (priv->input [0], (void *)&size, sizeof (size_t)); - - if (ret < 0) - glibtop_error_io_r (priv->server, "read data size"); - -#ifdef DEBUG - fprintf (stderr, "LIBRARY: really reading %d data bytes (ret = %d).\n", size, ret); -#endif - - if (!size) return NULL; - - ptr = g_malloc (size); - - ret = read (priv->input [0], ptr, size); - - if (ret < 0) - glibtop_error_io_r (priv->server, "read data %d bytes"); - - return ptr; -} diff --git a/backends/server/server.c b/backends/server/server.c deleted file mode 100644 index 497c1596..00000000 --- a/backends/server/server.c +++ /dev/null @@ -1,189 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ - -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include "server.h" - -static glibtop _glibtop_global_server; -glibtop *glibtop_global_server = &_glibtop_global_server; - -#include -#include -#include - -#include - -const unsigned long glibtop_server_features = -GLIBTOP_SUID_CPU + -GLIBTOP_SUID_MEM + -GLIBTOP_SUID_SWAP + -GLIBTOP_SUID_UPTIME + -GLIBTOP_SUID_LOADAVG + -GLIBTOP_SUID_SHM_LIMITS + -GLIBTOP_SUID_MSG_LIMITS + -GLIBTOP_SUID_SEM_LIMITS + -GLIBTOP_SUID_PROCLIST + -GLIBTOP_SUID_PROC_STATE + -GLIBTOP_SUID_PROC_UID + -GLIBTOP_SUID_PROC_MEM + -GLIBTOP_SUID_PROC_TIME + -GLIBTOP_SUID_PROC_SIGNAL + -GLIBTOP_SUID_PROC_KERNEL + -GLIBTOP_SUID_PROC_SEGMENT + -GLIBTOP_SUID_PROC_ARGS + -GLIBTOP_SUID_PROC_MAP + -GLIBTOP_SUID_NETINFO + -GLIBTOP_SUID_NETLOAD + -GLIBTOP_SUID_INTERFACE_NAMES + -GLIBTOP_SUID_PPP; - -#include -#include - -int -main(int argc, char *argv[]) -{ - struct utsname uts; - int uid, euid, gid, egid; - glibtop *server; - - /* !!! WE ARE ROOT HERE - CHANGE WITH CAUTION !!! */ - - uid = getuid (); euid = geteuid (); - gid = getgid (); egid = getegid (); - - if (uname (&uts) < 0) _exit (1); - - if (strcmp (uts.sysname, LIBGTOP_COMPILE_SYSTEM) || - strcmp (uts.release, LIBGTOP_COMPILE_RELEASE) || - strcmp (uts.machine, LIBGTOP_COMPILE_MACHINE)) { - fprintf (stderr, "Can only run on %s %s %s\n", - LIBGTOP_COMPILE_SYSTEM, - LIBGTOP_COMPILE_RELEASE, - LIBGTOP_COMPILE_MACHINE); - _exit (1); - } - - server = glibtop_global_server; - - if (!server->_priv) - server->_priv = g_malloc (sizeof (glibtop_server_private)); - - glibtop_init_p (server, 0, 0); - - if (setreuid (euid, uid)) _exit (1); - - if (setregid (egid, gid)) _exit (1); - - /* !!! END OF SUID ROOT PART !!! */ - - handle_slave_connection (0, 0); - - _exit (0); -} - -void -handle_slave_connection (int input, int output) -{ - glibtop_command _cmnd, *cmnd = &_cmnd; - glibtop *server = glibtop_global_server; - - /* glibtop_send_version_i (glibtop_global_server, output); */ - - while (do_read (input, cmnd, sizeof (glibtop_command))) { - size_t recv_size = 0, send_size = 0, recv_data_size = 0; - void *recv_ptr = NULL, *recv_data_ptr = NULL, *data_ptr = NULL; - char parameter [BUFSIZ]; - int retval, func_retval; - glibtop_response resp; - -#ifdef DEBUG - fprintf (stderr, "Slave %d received command " - "%ld from client.\n", getpid (), (long) cmnd->command); -#endif - - if (cmnd->send_size >= BUFSIZ) - glibtop_error ("Client sent %d bytes, but buffer is %d", - cmnd->send_size, BUFSIZ); - else if (cmnd->param_size >= BUFSIZ) - glibtop_error ("Client sent %d bytes, but buffer is %d", - cmnd->param_size, BUFSIZ); - - memset (parameter, 0, sizeof (parameter)); - - if (cmnd->send_size) { -#ifdef DEBUG - fprintf (stderr, "Client has %d bytes of data.\n", - cmnd->send_size); -#endif - - send_size = cmnd->send_size; - do_read (input, parameter, send_size); - } else if (cmnd->param_size) { -#ifdef DEBUG - fprintf (stderr, "Client has %d bytes of parameter data.\n", - cmnd->param_size); -#endif - send_size = cmnd->param_size; - memcpy (parameter, cmnd->parameter, send_size); - } - - if (cmnd->data_size) { -#ifdef DEBUG - fprintf (stderr, "CLIENT has %d bytes of extra data for us.\n", - cmnd->data_size); -#endif - - data_ptr = g_malloc (cmnd->data_size); - do_read (input, data_ptr, cmnd->data_size); - } - - retval = glibtop_demarshal_func_i (server, NULL, - cmnd->command, - parameter, send_size, - data_ptr, cmnd->data_size, - &recv_ptr, &recv_size, - &recv_data_ptr, &recv_data_size, - &func_retval); - -#ifdef DEBUG - fprintf (stderr, "Retval %d / %d - %p - %d\n", - retval, func_retval, recv_ptr, recv_size); - - if (recv_data_size) { - fprintf (stderr, "Returning %d bytes of data from %p.\n", - recv_data_size, recv_data_ptr); - } -#endif - - memset (&resp, 0, sizeof (glibtop_response)); - - resp.retval = retval; - resp.glibtop_errno = func_retval; - resp.recv_size = recv_size; - resp.data_size = recv_data_size; - - do_output (output, &resp, recv_ptr, recv_data_ptr); - } -} diff --git a/backends/server/server.h b/backends/server/server.h deleted file mode 100644 index 419ca349..00000000 --- a/backends/server/server.h +++ /dev/null @@ -1,83 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ - -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#ifndef __GLIBTOP_DAEMON_H__ -#define __GLIBTOP_DAEMON_H__ - -#include - -#include -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include "command.h" - -G_BEGIN_DECLS - -/* Some don't have LOG_PERROR */ -#ifndef LOG_PERROR -#define LOG_PERROR 0 -#endif - -#define LIBGTOP_VERSION_STRING "Libgtop %s server version %s (%u,%u,%u,%u)." - -#if defined(HAVE_GETDTABLESIZE) -#define GET_MAX_FDS() getdtablesize() -#else -/* Fallthrough case - please add other #elif cases above - for different OS's as necessary */ -#define GET_MAX_FDS() 256 -#endif - -void -do_output (int s, glibtop_response *resp, const void *recv_ptr, - const void *data_ptr); - -int -do_read (int s, void *ptr, size_t total_size); - -void -handle_slave_connection (int input, int output); - -int -glibtop_demarshal_func_i (glibtop *server, glibtop_backend *backend, unsigned command, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr); - -void -glibtop_send_version_i (glibtop *server, int fd); - -extern int enable_debug; -extern int verbose_output; - -G_END_DECLS - -#endif diff --git a/backends/server/version.c b/backends/server/version.c deleted file mode 100644 index 62c8fd2b..00000000 --- a/backends/server/version.c +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ - -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include "server.h" - -void -glibtop_send_version_i (glibtop *server, int fd) -{ - char buffer [BUFSIZ]; - size_t size; - - sprintf (buffer, LIBGTOP_VERSION_STRING, - LIBGTOP_VERSION, LIBGTOP_SERVER_VERSION, - sizeof (glibtop_command), - sizeof (glibtop_response), - sizeof (glibtop_union), - sizeof (glibtop_sysdeps)); - - size = strlen (buffer) + 1; - -#ifdef DEBUG - fprintf (stderr, "SERVER ID: |%s|\n", buffer); -#endif - - if (fd == 0) { - if (write (1, (const void *) &size, sizeof (size)) < 0) - glibtop_warn_io_r (server, "write"); - } else { - if (send (fd, (const void *) &size, sizeof (size), 0) < 0) - glibtop_warn_io_r (server, "send"); - } - - if (fd == 0) { - if (write (1, (const void *) buffer, size) < 0) - glibtop_warn_io_r (server, "write"); - } else { - if (send (fd, (const void *) buffer, size, 0) < 0) - glibtop_warn_io_r (server, "send"); - } -} diff --git a/backends/server/write.c b/backends/server/write.c deleted file mode 100644 index c3577548..00000000 --- a/backends/server/write.c +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ - -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include - -void -glibtop_write_i (backend_server_private *priv, size_t size, const void *buf) -{ - int ret; - - if (size == 0) return; - -#ifdef DEBUG - fprintf (stderr, "LIBRARY: really writing %d bytes.\n", size); -#endif - - ret = write (priv->output [1], buf, size); - - if (ret < 0) - glibtop_error_io_r (priv->server, "write %d bytes", size); -} diff --git a/backends/sysdeps/.cvsignore b/backends/sysdeps/.cvsignore deleted file mode 100644 index a081b16a..00000000 --- a/backends/sysdeps/.cvsignore +++ /dev/null @@ -1,7 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -*.lo -*.la -marshal.c diff --git a/backends/sysdeps/ChangeLog b/backends/sysdeps/ChangeLog deleted file mode 100644 index 5c714ec5..00000000 --- a/backends/sysdeps/ChangeLog +++ /dev/null @@ -1,68 +0,0 @@ -2003-10-20 Bastien Nocera - - * backend-sysdeps.c: (_open_sysdeps): s/u_int64_t/guint64/ - -2003-10-20 Bastien Nocera - - * backend-sysdeps.h: fixed compilation - -2000-11-26 Martin Baulig - - * glibtop-backend-private.h: Removed. - - * backend-sysdeps.h: New files. - - * backend-sysdeps.c (_open_sysdeps): Don't overwrite - `backend->_priv'. - -2000-11-22 Martin Baulig - - * Makefile.am: Link libgtop_backend_sysdeps.la against - $(top_builddir)/sysdeps/$(sysdeps_dir)/libgtop_sysdeps.la and - $(top_builddir)/lib/libgtop_server.la. - - * libgtop-sysdeps.backend: Removed the ExtraLibs section. - -2000-02-22 Martin Baulig - - * backend-sysdeps.c (LibGTopBackendInfo): Call this - `LibGTopBackendInfo_Sysdeps' when we don't use gmodule. - -2000-02-22 Martin Baulig - - * Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR) - when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise. - -2000-01-22 Martin Baulig - - * libgtop-sysdeps.backend: Added "ExtraLibs" section to - load `-lgtop_sysdeps'. - -2000-01-12 Martin Baulig - - * Makefile.am: Install everything in $(LIBGTOP_BACKEND_DIR). - - * libgtop-sysdeps.backend: New file. - - * backend-sysdeps.c (glibtop_backend_sysdeps): Renamed to - `LibGTopBackendInfo'. - -2000-01-12 Martin Baulig - - * marshal.pl: Create the `_glibtop_init_hook_s' as well. - - * marshal.pl: Don't create code for things which are now - in the new `glibtop-backend-common' backend. - -2000-01-02 Martin Baulig - - * marshal.pl: New file. Automatically creates `marshal.c'. - * call-vector.c: Removed. - -2000-01-01 Martin Baulig - - Initial version of the "glibtop-backend-sysdeps" backend. - - * backend-sysdeps.c: New file. - * glibtop-backend-private.h: New file. - diff --git a/backends/sysdeps/Makefile.am b/backends/sysdeps/Makefile.am deleted file mode 100644 index b5d399e6..00000000 --- a/backends/sysdeps/Makefile.am +++ /dev/null @@ -1,47 +0,0 @@ -LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ - -INCLUDES = @INCLUDES@ - -backenddir = @LIBGTOP_BACKEND_DIR@ - -if LIBGTOP_USE_GMODULE -backendlibdir = $(backenddir) -else -backendlibdir = $(libdir) -endif - -dynamic_ldflags = @libgtop_dynamic_ldflags@ - -backend_DATA = \ - libgtop-sysdeps.backend - -noinst_HEADERS = \ - backend-sysdeps.h - -backendlib_LTLIBRARIES = \ - libgtop_backend_sysdeps.la - -libgtop_backend_sysdeps_la_SOURCES = \ - backend-sysdeps.c \ - marshal.c - -libgtop_backend_sysdeps_la_LDFLAGS = \ - $(LT_VERSION_INFO) $(dynamic_ldflags) - -libgtop_backend_sysdeps_la_LIBADD = \ - $(top_builddir)/sysdeps/$(sysdeps_dir)/libgtop_sysdeps.la - $(top_builddir)/lib/libgtop_server.la - -BUILT_SOURCES = \ - marshal.c - -EXTRA_DIST = \ - marshal.pl \ - libgtop-sysdeps.backend - -CLEANFILES = $(BUILT_SOURCES) - -marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl - $(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t - mv tmp-t marshal.c - diff --git a/backends/sysdeps/backend-sysdeps.c b/backends/sysdeps/backend-sysdeps.c deleted file mode 100644 index 168cd34f..00000000 --- a/backends/sysdeps/backend-sysdeps.c +++ /dev/null @@ -1,76 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ - -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include - -static int -_open_sysdeps (glibtop_server *, glibtop_backend *, guint64, const char **); - -static int -_close_sysdeps (glibtop_server *, glibtop_backend *, void *); - -extern glibtop_call_vector glibtop_backend_sysdeps_call_vector; - -#ifdef LIBGTOP_USE_GMODULE -glibtop_backend_info LibGTopBackendInfo = { - "glibtop-backend-sysdeps", _open_sysdeps, _close_sysdeps, - &glibtop_backend_sysdeps_call_vector -}; -#else -glibtop_backend_info LibGTopBackendInfo_Sysdeps = { - "glibtop-backend-sysdeps", _open_sysdeps, _close_sysdeps, - &glibtop_backend_sysdeps_call_vector -}; -#endif - -static int -_open_sysdeps (glibtop_server *server, glibtop_backend *backend, - guint64 features, const char **backend_args) -{ - glibtop_init_func_t *init_fkt; - - /* Do the initialization, but only if not already initialized. */ - - if ((server->flags & _GLIBTOP_INIT_STATE_SYSDEPS) == 0) { - glibtop_open_s (server, "glibtop", features, 0); - - for (init_fkt = _glibtop_init_hook_s; *init_fkt; init_fkt++) - (*init_fkt) (server); - - server->info->sysdeps.pointer_size = sizeof (void*)*8; - - server->flags |= _GLIBTOP_INIT_STATE_SYSDEPS; - } - - return 0; -} - -static int -_close_sysdeps (glibtop_server *server, glibtop_backend *backend, - void *closure) -{ - return 0; -} - diff --git a/backends/sysdeps/backend-sysdeps.h b/backends/sysdeps/backend-sysdeps.h deleted file mode 100644 index db2bff06..00000000 --- a/backends/sysdeps/backend-sysdeps.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ - -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#ifndef __GLIBTOP_BACKEND_SYSDEPS_H__ -#define __GLIBTOP_BACKEND_SYSDEPS_H__ - -#include -#include - -#include -#include -#include - -#endif diff --git a/backends/sysdeps/libgtop-sysdeps.backend b/backends/sysdeps/libgtop-sysdeps.backend deleted file mode 100644 index 3b199c31..00000000 --- a/backends/sysdeps/libgtop-sysdeps.backend +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - glibtop-backend-sysdeps - - libgtop_backend_sysdeps.la - libgtop_backend_sysdeps.so - - - - diff --git a/backends/sysdeps/marshal.pl b/backends/sysdeps/marshal.pl deleted file mode 100644 index 4ccf94f5..00000000 --- a/backends/sysdeps/marshal.pl +++ /dev/null @@ -1,195 +0,0 @@ -#!/usr/bin/perl - -require 'c_types.pl'; - -$[ = 1; # set array base to 1 -$, = ' '; # set output field separator -$\ = "\n"; # set output record separator - -$always_use_temp_storage = 1; - -sub toupper { - local($_) = @_; - tr/a-z/A-Z/; - return $_; -} - -sub tolower { - local($_) = @_; - tr/A-Z/a-z/; - return $_; -} - -print '/* marshal.c */'; -print "/* This is a generated file. Please modify `marshal.pl' */"; -print ''; - -print '#include '; -print ''; -print '#include '; -print '#include '; -print ''; -print '#include '; -print ''; - -$feature_count = 0; - -while (<>) { - chop; # strip record separator - - if (/^[^#]/) { - &output($_); - } -} - -sub output { - local($line) = @_; - @line_fields = split(/\|/, $line, 9999); - $retval = $line_fields[1]; - $feature = $line_fields[2]; - $param_def = $line_fields[4]; - - $orig = $feature; - $feature =~ s/^@//; - $space = $feature; - $space =~ s/./ /g; - - $features{++$feature_count} = $orig; - - return if $orig =~ /^@/; - - if ($retval eq 'retval') { - $retval_param = '&retval'; - $call_prefix = ''; - $call_prefix_space = ''; - $prefix = 'retval = '; - $prefix_space = ' '; - $retval = 'int'; - } - elsif ($retval !~ /^void$/) { - $retval_param = 'NULL'; - $prefix = 'retval = '; - $prefix_space = ' '; - $call_prefix = 'retval = '; - $call_prefix_space = ' '; - } - else { - $retval_param = 'NULL'; - $call_prefix = ''; - $call_prefix_space = ''; - $prefix = ''; - $prefix_space = ''; - } - - if ($retval =~ /^(array|pointer)\((.*)\)$/) { - $retval = ($2 eq 'string') ? 'char **' : "$2 *"; - } - - $need_temp_storage = $always_use_temp_storage; - $first_param_name = ''; - - $call_param = ''; - $param_decl = ''; - $need_temp_len = 0; - $nr_params = (@params = split(/:/, $param_def, 9999)); - for ($param = 1; $param <= $nr_params; $param++) { - $list = $params[$param]; - $type = $params[$param]; - $type =~ s/\(.*//; - $list =~ s/^.*\(//; - $list =~ s/\)$//; - $count = (@fields = split(/,/, $list, 9999)); - for ($field = 1; $field <= $count; $field++) { - my $c_type = $typeinfo->{$type}->[1]; - - if ($first_param_name eq '') { - $first_param_name = $fields[$field]; - } - - if ($typeinfo->{$type}->[2]) { - $need_temp_storage = 1; - } - - if ($param_decl eq '') { - $param_decl = ",\n " . $space . ' '; - } - else { - $param_decl = $param_decl . ', '; - } - $param_decl = $param_decl . $c_type . ' ' . $fields[$field]; - $call_param = $call_param . ', ' . $fields[$field]; - } - } - - if ($line_fields[3] eq '') { - $total_code = sprintf - ("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param); - } elsif ($line_fields[3] eq 'array') { - $total_code = sprintf - ("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param); - } elsif ($line_fields[3] =~ /^array/) { - $total_code = sprintf - ("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param); - } else { - $total_code = sprintf - ("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param); - } - - $func_decl = 'static '.$retval."\n"; - if ($line_fields[3] eq '') { - $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n", - $feature, $param_decl); - } elsif ($line_fields[3] eq 'array') { - $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n", - $feature, $param_decl); - } elsif ($line_fields[3] =~ /^array/) { - $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n", - $feature, 'glibtop_'.$feature, $param_decl); - } else { - $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n", - $feature, 'glibtop_'.$feature, $param_decl); - } - - $total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code); - - $total_code = sprintf ("#if (!GLIBTOP_SUID_%s)\n\n%s\n#endif /* not GLIBTOP_SUID_%s */\n\n", - &toupper($feature), $total_code, - &toupper($feature)); - - print $total_code; -} - -$init_hook_code = ''; -$call_vector_code = ''; -for ($nr = 1; $nr <= $feature_count; $nr++) { - $feature = $features{$nr}; - - if ($feature =~ /^@/) { - $call_vector_code .= sprintf (qq[\tNULL,\n]); - } else { - $call_vector_code .= sprintf - (qq[\#if GLIBTOP_SUID_%s\n\tNULL,\n\#else\n\t_glibtop_get_%s_c,\n\#endif\n], - &toupper($feature), $feature); - } - - if (!($feature =~ /^@/)) { - $init_hook_code .= sprintf - (qq[\#if !GLIBTOP_SUID_%s\n\tglibtop_init_%s_s,\n\#endif\n], - &toupper($feature), $feature); - } -} -$init_hook_code .= sprintf (qq[\tNULL\n]); - -chop $init_hook_code; -chop $call_vector_code; - -print 'glibtop_call_vector glibtop_backend_sysdeps_call_vector = {'; -print $call_vector_code; -print '};'; -print ''; - -print 'glibtop_init_func_t _glibtop_init_hook_s [] = {'; -print $init_hook_code; -print '};'; -print ''; -