diff --git a/ChangeLog b/ChangeLog index 75253ca4..703d8f2a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +1999-12-19 Martin Baulig + + * include/glibtop/glib-arrays.h: New file. + + * lib/glib-arrays.c: New file. + (glibtop_get_proclist_as_array_l): New function. + (glibtop_get_proc_args_as_array_l): New function. + (glibtop_get_proc_map_as_array_l): New function. + (glibtop_get_mountlist_as_array_l): New function. + 1999-12-19 Martin Baulig * glibtop-server-private.h: New file. This is a private header diff --git a/include/glibtop/Makefile.am b/include/glibtop/Makefile.am index 224b68f4..2e1fe413 100644 --- a/include/glibtop/Makefile.am +++ b/include/glibtop/Makefile.am @@ -9,4 +9,4 @@ glibtop_HEADERS = close.h loadavg.h prockernel.h procstate.h \ parameter.h mountlist.h fsusage.h procmap.h signal.h \ inodedb.h sysinfo.h ppp.h procargs.h netload.h \ netinfo.h interfaces.h limits.h array.h compat_10.h \ - errors.h + errors.h glib-arrays.h diff --git a/include/glibtop/glib-arrays.h b/include/glibtop/glib-arrays.h new file mode 100644 index 00000000..bb4b99bb --- /dev/null +++ b/include/glibtop/glib-arrays.h @@ -0,0 +1,59 @@ +/* -*- 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_GLIB_ARRAYS_H__ +#define __GLIBTOP_GLIB_ARRAYS_H__ + +#include +#include +#include +#include + +#include + +BEGIN_LIBGTOP_DECLS + +#define glibtop_get_proc_args_as_array(pid) glibtop_get_proc_args_as_array_l(glibtop_global_server, pid) + +GPtrArray * +glibtop_get_proc_args_as_array_l (glibtop *server, pid_t pid); + +#define glibtop_get_proclist_as_array(which,arg) glibtop_get_proclist_as_array_l(glibtop_global_server, which, arg) + +GArray * +glibtop_get_proclist_as_array_l (glibtop *server, int64_t which, int64_t arg); + +#define glibtop_get_proc_map_as_array(pid) glibtop_get_proc_map_as_array_l(glibtop_global_server, pid) + +GPtrArray * +glibtop_get_proc_map_as_array_l (glibtop *server, pid_t pid); + +#define glibtop_get_mountlist_as_array(all_fs) glibtop_get_mountlist_as_array_l(glibtop_global_server, all_fs) + +GPtrArray * +glibtop_get_mountlist_as_array_l (glibtop *server, int all_fs); + +END_LIBGTOP_DECLS +#endif diff --git a/lib/Makefile.am b/lib/Makefile.am index bf4d4186..3ae0ddea 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -6,7 +6,7 @@ lib_LTLIBRARIES = libgtop.la libgtop_la_SOURCES = init.c open.c close.c command.c read.c \ read_data.c write.c lib.c parameter.c \ - sysdeps.c errors.c + sysdeps.c errors.c glib-arrays.c libgtop_la_LDFLAGS = $(LT_VERSION_INFO) diff --git a/lib/glib-arrays.c b/lib/glib-arrays.c new file mode 100644 index 00000000..1f3324c2 --- /dev/null +++ b/lib/glib-arrays.c @@ -0,0 +1,117 @@ +/* $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 + +#include + +GArray * +glibtop_get_proclist_as_array_l (glibtop *server, int64_t which, int64_t arg) +{ + glibtop_array array; + GArray *retval; + unsigned *ptr; + int i; + + ptr = glibtop_get_proclist_l (server, &array, which, arg); + if (!ptr) return NULL; + + retval = g_array_new (FALSE, TRUE, sizeof (guint)); + retval = g_array_set_size (retval, array.number); + + for (i = 0; i < array.number; i++) + g_array_index (retval, guint, i) = ptr [i]; + + glibtop_free_r (server, ptr); + + return retval; +} + +GPtrArray * +glibtop_get_proc_args_as_array_l (glibtop *server, pid_t pid) +{ + glibtop_array array; + GPtrArray *retval; + char **ptr; + int i; + + ptr = glibtop_get_proc_args_l (server, &array, pid); + if (!ptr) return NULL; + + retval = g_ptr_array_new (); + g_ptr_array_set_size (retval, array.number); + + for (i = 0; i < array.number; i++) { + retval->pdata [i] = g_strdup (ptr [i]); + glibtop_free_r (server, ptr [i]); + } + + glibtop_free_r (server, ptr); + + return retval; +} + +GPtrArray * +glibtop_get_proc_map_as_array_l (glibtop *server, pid_t pid) +{ + glibtop_array array; + GPtrArray *retval; + glibtop_map_entry *ptr; + int i; + + ptr = glibtop_get_proc_map_l (server, &array, pid); + if (!ptr) return NULL; + + retval = g_ptr_array_new (); + g_ptr_array_set_size (retval, array.number); + + for (i = 0; i < array.number; i++) + retval->pdata [i] = g_memdup (ptr+i, sizeof (glibtop_map_entry)); + + glibtop_free_r (server, ptr); + + return retval; +} + +GPtrArray * +glibtop_get_mountlist_as_array_l (glibtop *server, int all_fs) +{ + glibtop_array array; + GPtrArray *retval; + glibtop_mountentry *ptr; + int i; + + ptr = glibtop_get_mountlist_l (server, &array, all_fs); + if (!ptr) return NULL; + + retval = g_ptr_array_new (); + g_ptr_array_set_size (retval, array.number); + + for (i = 0; i < array.number; i++) + retval->pdata [i] = g_memdup (ptr+i, sizeof (glibtop_mountentry)); + + glibtop_free_r (server, ptr); + + return retval; +}