Compare commits
	
		
			49 Commits
		
	
	
		
			GNOME_2_10
			...
			LIBGTOP_2_
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 2930c9f092 | ||
|  | fe6a33a5fd | ||
|  | 30ebfb45d0 | ||
|  | b43a1e01c0 | ||
|  | 88d606d814 | ||
|  | dd0d06898a | ||
|  | 3e77f3cf13 | ||
|  | 22a1120348 | ||
|  | da4dc46b7a | ||
|  | 03bcc48da6 | ||
|  | 708285f0d2 | ||
|  | a0493a0ff1 | ||
|  | 9f7d505d20 | ||
|  | 78cb7832c5 | ||
|  | b3979e6942 | ||
|  | 92d3176303 | ||
|  | e5c7f87f50 | ||
|  | 7e506a6c83 | ||
|  | 1645027004 | ||
|  | 8e656af060 | ||
|  | 4efcfb2cb3 | ||
|  | 59da1618b0 | ||
|  | e9ce3ccc1c | ||
|  | 84e45a6519 | ||
|  | 96fe554afd | ||
|  | 16e0c943b2 | ||
|  | f409c553f5 | ||
|  | b6a10fd8f7 | ||
|  | efeca4a865 | ||
|  | 5e70932b66 | ||
|  | d499bd3761 | ||
|  | 48e3d5b2ec | ||
|  | 55270e618e | ||
|  | a5c897b846 | ||
|  | b0093954b3 | ||
|  | c81e055427 | ||
|  | 06fb19b5c6 | ||
|  | f8d9557257 | ||
|  | ef2ed50bf7 | ||
|  | c19ba1af03 | ||
|  | c1e5bdfb16 | ||
|  | be7dabf75d | ||
|  | d37b1b9a2e | ||
|  | 6f755a5ca7 | ||
|  | 4cd022b315 | ||
|  | 69873a143d | ||
|  | f5655f12d3 | ||
|  | a71839c0a7 | ||
|  | 74d9b24132 | 
							
								
								
									
										178
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										178
									
								
								ChangeLog
									
									
									
									
									
								
							| @@ -1,3 +1,181 @@ | ||||
| 2005-09-04  Benoît Dejean  <benoit@placenet.org> | ||||
|  | ||||
| 	* NEWS: | ||||
| 	* configure.in: | ||||
|  | ||||
| 	Released 2.12.0. | ||||
|  | ||||
| 2005-08-22  Benoît Dejean  <benoit@placenet.org> | ||||
|  | ||||
| 	* configure.in: | ||||
|  | ||||
| 	Hum hum, it's better if release number is 2.11.92 too. | ||||
|  | ||||
| 2005-08-22  Benoît Dejean  <benoit@placenet.org> | ||||
|  | ||||
| 	* NEWS: | ||||
|  | ||||
| 	Released 2.11.92. | ||||
|  | ||||
| 2005-08-08  Benoît Dejean  <benoit@placenet.org> | ||||
|  | ||||
| 	* NEWS: | ||||
| 	 | ||||
| 	Released 2.11.91. | ||||
|  | ||||
| 2005-08-04  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* configure.in: | ||||
| 	* examples/Makefile.am: | ||||
|  | ||||
| 	Removed static examples. | ||||
|  | ||||
| 2005-08-02  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* configure.in: | ||||
| 	* include/glibtop/Makefile.am: | ||||
| 	* include/glibtop/glibtop-server.h: | ||||
| 	* include/glibtop/init_hooks.h: | ||||
| 	* include/glibtop/sysdeps.h: | ||||
| 	* lib/init.c: (glibtop_init_s): | ||||
| 	* lib/sysdeps.c: | ||||
| 	* sysdeps/aix/open.c: (glibtop_init_p): | ||||
| 	* sysdeps/common/sysdeps_suid.c: | ||||
| 	* sysdeps/freebsd/open.c: (glibtop_init_p): | ||||
| 	* sysdeps/osf1/open_suid.c: (glibtop_init_p): | ||||
| 	* sysdeps/solaris/open_suid.c: (glibtop_init_p): | ||||
| 	* sysdeps/stub_suid/open.c: (glibtop_init_p): | ||||
|  | ||||
| 	Moved _glibtop_init_hook_[sp] declaration to private | ||||
| 	glibtop/init_hooks.h. Marked them const. | ||||
|  | ||||
| 	Fixed GLIBTOP_SUID_NETLIST issues. | ||||
|  | ||||
| 2005-07-24  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* NEWS: | ||||
| 	* configure.in: Released 2.11.90. | ||||
|  | ||||
| 2005-07-22  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* configure.in: 2.11.3 post release version bump. | ||||
|  | ||||
| 2005-07-13  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* NEWS: Released 2.11.2. | ||||
|  | ||||
| 2005-07-06  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* configure.in: 2.11.2 post release version bump. | ||||
|  | ||||
| 2005-07-03  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* NEWS: Released 2.11.1. | ||||
|  | ||||
| 2005-06-15  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* sysdeps/common/Makefile.am: | ||||
| 	* sysdeps/linux/Makefile.am: Removed LT_VERSION_INFO from LDFLAGS | ||||
| 	when unused. | ||||
|  | ||||
| 2005-06-08  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* configure.in: 2.11.1 post release version bump. | ||||
|  | ||||
| 2005-06-08  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* NEWS: Released 2.11.0. | ||||
|  | ||||
| 2005-06-07  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* configure.in: | ||||
| 	* glibtop.h: | ||||
| 	* include/glibtop/close.h: | ||||
| 	* include/glibtop/cpu.h: | ||||
| 	* include/glibtop/fsusage.h: | ||||
| 	* include/glibtop/loadavg.h: | ||||
| 	* include/glibtop/mem.h: | ||||
| 	* include/glibtop/mountlist.h: | ||||
| 	* include/glibtop/msg_limits.h: | ||||
| 	* include/glibtop/netlist.h: | ||||
| 	* include/glibtop/netload.h: | ||||
| 	* include/glibtop/ppp.h: | ||||
| 	* include/glibtop/procargs.h: | ||||
| 	* include/glibtop/prockernel.h: | ||||
| 	* include/glibtop/proclist.h: | ||||
| 	* include/glibtop/procmap.h: | ||||
| 	* include/glibtop/procmem.h: | ||||
| 	* include/glibtop/procopenfiles.h: | ||||
| 	* include/glibtop/procsegment.h: | ||||
| 	* include/glibtop/procsignal.h: | ||||
| 	* include/glibtop/procstate.h: | ||||
| 	* include/glibtop/proctime.h: | ||||
| 	* include/glibtop/procuid.h: | ||||
| 	* include/glibtop/sem_limits.h: | ||||
| 	* include/glibtop/shm_limits.h: | ||||
| 	* include/glibtop/swap.h: | ||||
| 	* include/glibtop/sysdeps.h: | ||||
| 	* include/glibtop/sysinfo.h: | ||||
| 	* include/glibtop/uptime.h: | ||||
| 	* sysdeps/common/Makefile.am: | ||||
| 	* sysdeps/common/default.c: (glibtop_close), (glibtop_init), | ||||
| 	(glibtop_get_cpu), (glibtop_get_fsusage), (glibtop_get_uptime), | ||||
| 	(glibtop_get_sysinfo), (glibtop_get_swap), (glibtop_get_proc_uid), | ||||
| 	(glibtop_get_proc_time), (glibtop_get_proc_state), | ||||
| 	(glibtop_get_proc_signal), (glibtop_get_proc_segment), | ||||
| 	(glibtop_get_proc_open_files), (glibtop_get_proc_mem), | ||||
| 	(glibtop_get_proc_map), (glibtop_get_proc_args), | ||||
| 	(glibtop_get_proc_argv), (glibtop_get_proclist), | ||||
| 	(glibtop_get_proc_kernel), (glibtop_get_ppp), | ||||
| 	(glibtop_get_netlist), (glibtop_get_netload), | ||||
| 	(glibtop_get_mountlist), (glibtop_get_mem), (glibtop_get_loadavg), | ||||
| 	(glibtop_get_msg_limits), (glibtop_get_sem_limits), | ||||
| 	(glibtop_get_shm_limits), (glibtop_get_sysdeps): | ||||
| 	 | ||||
| 	Added a lot of new functions to replace dirty macros. | ||||
| 	Every macro glibtop_get_*(buf[, args]) has been turned to a function. | ||||
|  | ||||
| 2005-06-06  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* dtd/: Bye bye. | ||||
|  | ||||
| 2005-06-06  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* backends/: Removed useless files. | ||||
|  | ||||
| 2005-06-06  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* examples/smp.c: (main): Removed translation. | ||||
|  | ||||
| 	* lib/lib.pl: | ||||
| 	* lib/read.c: | ||||
| 	* lib/read_data.c: | ||||
| 	* lib/write.c: | ||||
| 	* src/daemon/gnuserv.c: s/gi18n.h/gi18n-lib.h. | ||||
|  | ||||
| 2005-06-06  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* acinclude.m4: bye bye support. | ||||
|  | ||||
| 2005-06-06  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* support/ : Removed unused files. | ||||
| 	 | ||||
| 2005-06-06  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* examples/smp.c: | ||||
| 	* include/Makefile.am: | ||||
| 	* include/libgtop-i18n.h: | ||||
| 	* lib/lib.pl: | ||||
| 	* lib/read.c: | ||||
| 	* lib/read_data.c: | ||||
| 	* lib/write.c: | ||||
| 	* src/daemon/gnuserv.c: Got rid of include/libgtop-i18n.h. | ||||
|  | ||||
| 2005-06-06  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* configure.in: version bump. | ||||
|  | ||||
| 2005-06-05  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* README: Updated so people can find the ChangeLogs. | ||||
|   | ||||
							
								
								
									
										39
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								NEWS
									
									
									
									
									
								
							| @@ -1,3 +1,42 @@ | ||||
| September 4, 2005: Overview of changes from 2.11.92 to 2.12.0 | ||||
| ============================================================= | ||||
| * Updated translations. | ||||
|  | ||||
| August 22, 2005: Overview of changes from 2.11.91 to 2.11.92 | ||||
| ============================================================ | ||||
| * Linux: | ||||
|   - fixed for 2.6 without /sys | ||||
|   - glibtop_get_cpu() : Do not add irq, softirq and iowait to idle. | ||||
|  | ||||
| August 9, 2005: Overview of changes from 2.11.90 to 2.11.91 | ||||
| =========================================================== | ||||
| * All: | ||||
|   - cleaned some headers. | ||||
|   - removed static examples. | ||||
| * Linux: | ||||
|   - fixed some issues with 2.6 without /sys | ||||
|  | ||||
| July 24, 2005: Overview of changes from 2.11.2 to 2.11.90 | ||||
| ========================================================= | ||||
| * Linux: | ||||
|   - fixed glibtop_uptime .flags. | ||||
|  | ||||
| July &3, 2005: Overview of changes from 2.11.1 to 2.11.2 | ||||
| ======================================================== | ||||
| * Linux: | ||||
|   - little improvements for 2.6. | ||||
|  | ||||
| July 3, 2005: Overview of changes from 2.11.0 to 2.11.1 | ||||
| ======================================================= | ||||
| * Linux: | ||||
|   - glibtop_get_swap : added page(in|out) for linux 2.6. | ||||
|  | ||||
| June 8, 2005: Overview of changes from 2.10.x to 2.11.0 | ||||
| ======================================================= | ||||
| * Replaced a lot of macros by functions | ||||
| * Got rid of dozens of useless files. | ||||
| * libgtop 2.11.x are and will stay API and ABI compatible with 2.10.x, i swear. | ||||
|  | ||||
| April 10, 2005: Overview of changes from 2.10.0 to 2.10.1 | ||||
| ========================================================= | ||||
| * Updated i18n. | ||||
|   | ||||
							
								
								
									
										70
									
								
								acinclude.m4
									
									
									
									
									
								
							
							
						
						
									
										70
									
								
								acinclude.m4
									
									
									
									
									
								
							| @@ -503,76 +503,6 @@ AC_CHECKING(for AFS) | ||||
| test -d /afs && AC_DEFINE(AFS) | ||||
| ]) | ||||
|  | ||||
| dnl GNOME_SUPPORT_CHECKS | ||||
| dnl    Check for various support functions needed by the standard | ||||
| dnl    Gnome libraries.  Sets LIBOBJS, might define some macros. | ||||
| dnl    This should only be used when building the Gnome libs;  | ||||
| dnl    Gnome clients should not need this macro. | ||||
| AC_DEFUN([GNOME_SUPPORT_CHECKS],[ | ||||
|   # we need an `awk' to build `gnomesupport.h' | ||||
|   AC_REQUIRE([AC_PROG_AWK]) | ||||
|  | ||||
|   # this should go away soon | ||||
|   need_gnome_support=yes | ||||
|  | ||||
|   AC_CHECK_FUNCS(getopt_long,, | ||||
|    [AC_LIBOBJ(getopt) | ||||
|     AC_LIBOBJ(getopt1)]) | ||||
|  | ||||
|   # for `scandir' | ||||
|   AC_HEADER_DIRENT | ||||
|  | ||||
|   # copied from `configure.in' of `libiberty' | ||||
|   vars="program_invocation_short_name program_invocation_name sys_errlist" | ||||
|   for v in $vars; do | ||||
|     AC_MSG_CHECKING([for $v]) | ||||
|     AC_CACHE_VAL(gnome_cv_var_$v, | ||||
|       [AC_TRY_LINK([int *p;], [extern int $v; p = &$v;], | ||||
| 		   [eval "gnome_cv_var_$v=yes"], | ||||
| 		   [eval "gnome_cv_var_$v=no"])]) | ||||
|     if eval "test \"`echo '$gnome_cv_var_'$v`\" = yes"; then | ||||
|       AC_MSG_RESULT(yes) | ||||
|       n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` | ||||
|       AC_DEFINE_UNQUOTED($n) | ||||
|     else | ||||
|       AC_MSG_RESULT(no) | ||||
|     fi | ||||
|   done | ||||
|  | ||||
|   AC_REPLACE_FUNCS(memmove mkstemp scandir strcasecmp strerror strndup strnlen) | ||||
|   AC_REPLACE_FUNCS(strtok_r strtod strtol strtoul vasprintf vsnprintf) | ||||
|  | ||||
|   AC_CHECK_FUNCS(realpath,,AC_LIBOBJ(canonicalize)) | ||||
|  | ||||
|   # to include `error.c' error.c has some HAVE_* checks | ||||
|   AC_CHECK_FUNCS(vprintf doprnt strerror_r) | ||||
|   # stolen from am_func_error_at_line | ||||
|   AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line, | ||||
|   [AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");], | ||||
|               am_cv_lib_error_at_line=yes, | ||||
|               am_cv_lib_error_at_line=no)]) | ||||
|   if test $am_cv_lib_error_at_line = no; then | ||||
|     AC_LIBOBJ(error) | ||||
|   fi | ||||
|    | ||||
|   # This is required if we declare setreuid () and setregid (). | ||||
|   AC_TYPE_UID_T | ||||
|  | ||||
|   # see if we need to declare some functions.  Solaris is notorious for | ||||
|   # putting functions into the `libc' but not listing them in the headers | ||||
|   AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h dirent.h) | ||||
|   GCC_NEED_DECLARATIONS(gethostname setreuid setregid getpagesize) | ||||
|   GCC_NEED_DECLARATION(scandir,[ | ||||
| #ifdef HAVE_DIRENT_H | ||||
| #include <dirent.h> | ||||
| #endif | ||||
| ]) | ||||
|  | ||||
|   AC_SUBST(need_gnome_support) | ||||
|  | ||||
|   AM_CONDITIONAL(BUILD_GNOME_SUPPORT, test "$need_gnome_support" = yes) | ||||
| ]) | ||||
|  | ||||
|  | ||||
| dnl This file is intended for use both internally in libgtop and in every program | ||||
| dnl that wants to use it. | ||||
|   | ||||
| @@ -1,5 +0,0 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| @@ -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 | ||||
| @@ -1,7 +0,0 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| *.la | ||||
| marshal.c | ||||
| @@ -1,50 +0,0 @@ | ||||
| 2003-10-20  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	* backend-common.c: (_open_common): s/u_int64_t/guint64/ | ||||
|  | ||||
| 2003-10-20  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	* backend-common.h: fixed compilation | ||||
|  | ||||
| 2000-11-26  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* 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  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* 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  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* backend-sysdeps.c (LibGTopBackendInfo): Call this | ||||
| 	`LibGTopBackendInfo_Common' when we don't use gmodule. | ||||
|  | ||||
| 2000-02-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR) | ||||
| 	when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise. | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* 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  <martin@home-of-linux.org> | ||||
|  | ||||
| 	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'. | ||||
|  | ||||
| @@ -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 | ||||
|  | ||||
| @@ -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 <martin@home-of-linux.org>, 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 <backend-common.h> | ||||
|  | ||||
| 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; | ||||
| } | ||||
|  | ||||
| @@ -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 <martin@home-of-linux.org>, 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 <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/glibtop-backend.h> | ||||
| #include <glibtop/glibtop-backend-info.h> | ||||
|  | ||||
| #endif | ||||
| @@ -1,13 +0,0 @@ | ||||
| <?xml version="1.0"?> <!-- -*-xml-*- --> | ||||
| <!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'> | ||||
| <libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1"> | ||||
|  | ||||
|   <libgtop:Backend> | ||||
|     <libgtop:Name>glibtop-backend-common</libgtop:Name> | ||||
|     <libgtop:Location> | ||||
|       <libgtop:LibtoolName>libgtop_backend_common.la</libgtop:LibtoolName> | ||||
|       <libgtop:ShlibName>libgtop_backend_common.so</libgtop:ShlibName> | ||||
|     </libgtop:Location> | ||||
|   </libgtop:Backend> | ||||
|  | ||||
| </libgtop:Backends> | ||||
| @@ -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 <backend-common.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/sysdeps.h>'; | ||||
| print '#include <glibtop/union.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/call-vector.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]; | ||||
|     $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 ''; | ||||
|  | ||||
| @@ -1,10 +0,0 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| *.la | ||||
| marshal.c | ||||
| demarshal.c | ||||
| libgtop_server | ||||
| command.h | ||||
| @@ -1,125 +0,0 @@ | ||||
| 2004-08-22  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* server.c: (handle_slave_connection): Replaced //comment by /*C89*/.  | ||||
|  | ||||
| 2004-03-09  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	* 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 <bnet@ifrance.com>) | ||||
|  | ||||
| 2003-10-20  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	* backend-server.c: (_open_server): | ||||
| 	* backend-server.h: | ||||
| 	* command.h.in: s/u_int64_t/guint64/ | ||||
|  | ||||
| 2003-10-20  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	* backend-server.h: | ||||
| 	* command.h.in: | ||||
| 	* demarshal.pl: | ||||
| 	* server.h: fixed compilation | ||||
|  | ||||
| 2003-10-20  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	* 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  <hadess@hadess.net> | ||||
|  | ||||
| 	* Makefile.am: removed traces of guile, intllibs and libgnomesupport | ||||
|  | ||||
| 2000-11-27  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* backend-server.c (backend_server_quark): New global variable. | ||||
| 	(_open_server, _close_server): Use the quark. | ||||
| 	* commands.c: Likewise. | ||||
|  | ||||
| 2000-11-26  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* 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  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* backend-sysdeps.c (LibGTopBackendInfo): Call this | ||||
| 	`LibGTopBackendInfo_Server' when we don't use gmodule. | ||||
|  | ||||
| 2000-02-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR) | ||||
| 	when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise. | ||||
|  | ||||
| 2000-01-18  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* demarshal.pl: Only emit code for functions which are | ||||
| 	really suid/sgid. | ||||
|  | ||||
| 2000-01-13  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* write.c (glibtop_write_i): The buffer which we write is | ||||
| 	now a `const'. | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* 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  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* command.h.in (glibtop_response): New structure. | ||||
|  | ||||
| 2000-01-02  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* 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  <martin@home-of-linux.org> | ||||
|  | ||||
| 	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'. | ||||
|  | ||||
| @@ -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 | ||||
|  | ||||
| @@ -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 <martin@home-of-linux.org>, 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 <backend-server.h> | ||||
|  | ||||
| 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; | ||||
| } | ||||
|  | ||||
| @@ -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 <martin@home-of-linux.org>, 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 <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/glibtop-backend.h> | ||||
| #include <glibtop/glibtop-backend-info.h> | ||||
|  | ||||
| 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 | ||||
|  | ||||
| @@ -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 <martin@home-of-linux.org>, 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 <backend-server.h> | ||||
|  | ||||
| #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; | ||||
| } | ||||
| @@ -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 <martin@home-of-linux.org>, 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 <glibtop.h> | ||||
| #include <glibtop/union.h> | ||||
|  | ||||
| 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 | ||||
| @@ -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 (<FEATURESDEF>) { | ||||
|   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 (<COMMAND>) { | ||||
|   chop; | ||||
|  | ||||
|   s/^\s*\@\@GLIBTOP_COMMAND_CONSTANTS\@\@\s*$/$constants_decl_code/; | ||||
|  | ||||
|   s/^\s*\@\@AUTOGEN_COMMENT\@\@\s*$/$auto_gen_comment/; | ||||
| } continue { | ||||
|   print $_; | ||||
| } | ||||
|  | ||||
| close COMMAND; | ||||
| @@ -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 <glibtop.h>'; | ||||
| print '#include <glibtop/open.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/sysdeps.h>'; | ||||
| print '#include <glibtop/union.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/backend.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop-backend-private.h>'; | ||||
| 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; | ||||
| @@ -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 <martin@home-of-linux.org>, 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; | ||||
| } | ||||
| @@ -1,13 +0,0 @@ | ||||
| <?xml version="1.0"?> <!-- -*-xml-*- --> | ||||
| <!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'> | ||||
| <libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1"> | ||||
|  | ||||
|   <libgtop:Backend> | ||||
|     <libgtop:Name>glibtop-backend-server</libgtop:Name> | ||||
|     <libgtop:Location> | ||||
|       <libgtop:LibtoolName>libgtop_backend_server.la</libgtop:LibtoolName> | ||||
|       <libgtop:ShlibName>libgtop_backend_server.so</libgtop:ShlibName> | ||||
|     </libgtop:Location> | ||||
|   </libgtop:Backend> | ||||
|  | ||||
| </libgtop:Backends> | ||||
| @@ -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 <backend-server.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/sysdeps.h>'; | ||||
| print '#include <glibtop/union.h>'; | ||||
| print ''; | ||||
| print '#include "command.h"'; | ||||
| print '#include <glibtop/call-vector.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]; | ||||
|     $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 ''; | ||||
|  | ||||
| @@ -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 <martin@home-of-linux.org>, 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 <backend-server.h> | ||||
|  | ||||
| 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); | ||||
| } | ||||
| @@ -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 <martin@home-of-linux.org>, 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 <backend-server.h> | ||||
|  | ||||
| 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; | ||||
| } | ||||
| @@ -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 <martin@home-of-linux.org>, 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 <glibtop.h> | ||||
| #include <glibtop/union.h> | ||||
| #include <glibtop/sysdeps.h> | ||||
|  | ||||
| #include <sys/utsname.h> | ||||
|  | ||||
| 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 <fcntl.h> | ||||
| #include <locale.h> | ||||
|  | ||||
| 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); | ||||
|     } | ||||
| } | ||||
| @@ -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 <martin@home-of-linux.org>, 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 <glibtop.h> | ||||
|  | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/union.h> | ||||
| #include <glibtop/parameter.h> | ||||
|  | ||||
| #include <fcntl.h> | ||||
| #include <sys/wait.h> | ||||
| #include <sys/socket.h> | ||||
| #include <syslog.h> | ||||
|  | ||||
| #include <glibtop/backend.h> | ||||
| #include <glibtop-backend-private.h> | ||||
|  | ||||
| #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 | ||||
| @@ -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 <martin@home-of-linux.org>, 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"); | ||||
|     } | ||||
| } | ||||
| @@ -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 <martin@home-of-linux.org>, 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 <backend-server.h> | ||||
|  | ||||
| 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); | ||||
| } | ||||
| @@ -1,7 +0,0 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| *.la | ||||
| marshal.c | ||||
| @@ -1,68 +0,0 @@ | ||||
| 2003-10-20  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	* backend-sysdeps.c: (_open_sysdeps): s/u_int64_t/guint64/ | ||||
|  | ||||
| 2003-10-20  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	* backend-sysdeps.h: fixed compilation | ||||
|  | ||||
| 2000-11-26  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* 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  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* 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  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* backend-sysdeps.c (LibGTopBackendInfo): Call this | ||||
| 	`LibGTopBackendInfo_Sysdeps' when we don't use gmodule. | ||||
|  | ||||
| 2000-02-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR) | ||||
| 	when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise. | ||||
|  | ||||
| 2000-01-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* libgtop-sysdeps.backend: Added "ExtraLibs" section to | ||||
| 	load `-lgtop_sysdeps'. | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* 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  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* 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  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* marshal.pl: New file. Automatically creates `marshal.c'. | ||||
| 	* call-vector.c: Removed. | ||||
|  | ||||
| 2000-01-01  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Initial version of the "glibtop-backend-sysdeps" backend. | ||||
|  | ||||
| 	* backend-sysdeps.c: New file. | ||||
| 	* glibtop-backend-private.h: New file. | ||||
|  | ||||
| @@ -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 | ||||
|  | ||||
| @@ -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 <martin@home-of-linux.org>, 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 <backend-sysdeps.h> | ||||
|  | ||||
| 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; | ||||
| } | ||||
|  | ||||
| @@ -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 <martin@home-of-linux.org>, 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 <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/glibtop-backend.h> | ||||
| #include <glibtop/glibtop-backend-info.h> | ||||
|  | ||||
| #endif | ||||
| @@ -1,13 +0,0 @@ | ||||
| <?xml version="1.0"?> <!-- -*-xml-*- --> | ||||
| <!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'> | ||||
| <libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1"> | ||||
|  | ||||
|   <libgtop:Backend> | ||||
|     <libgtop:Name>glibtop-backend-sysdeps</libgtop:Name> | ||||
|     <libgtop:Location> | ||||
|       <libgtop:LibtoolName>libgtop_backend_sysdeps.la</libgtop:LibtoolName> | ||||
|       <libgtop:ShlibName>libgtop_backend_sysdeps.so</libgtop:ShlibName> | ||||
|     </libgtop:Location> | ||||
|   </libgtop:Backend> | ||||
|  | ||||
| </libgtop:Backends> | ||||
| @@ -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 <backend-sysdeps.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/sysdeps.h>'; | ||||
| print '#include <glibtop/union.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/call-vector.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]; | ||||
|     $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 ''; | ||||
|  | ||||
							
								
								
									
										76
									
								
								configure.in
									
									
									
									
									
								
							
							
						
						
									
										76
									
								
								configure.in
									
									
									
									
									
								
							| @@ -7,13 +7,13 @@ AM_CONFIG_HEADER(config.h) | ||||
| AC_CANONICAL_SYSTEM | ||||
|  | ||||
| LIBGTOP_MAJOR_VERSION=2 | ||||
| LIBGTOP_MINOR_VERSION=10 | ||||
| LIBGTOP_MICRO_VERSION=2 | ||||
| LIBGTOP_MINOR_VERSION=12 | ||||
| LIBGTOP_MICRO_VERSION=0 | ||||
| LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION | ||||
| AM_INIT_AUTOMAKE(libgtop, $LIBGTOP_VERSION) | ||||
|  | ||||
| dnl  increment if the interface has additions, changes, removals. | ||||
| LIBGTOP_CURRENT=5 | ||||
| LIBGTOP_CURRENT=6 | ||||
|  | ||||
| dnl  increment any time the source changes; set to | ||||
| dnl  0 if you increment CURRENT | ||||
| @@ -22,7 +22,7 @@ LIBGTOP_REVISION=0 | ||||
| dnl  increment if any interfaces have been added; set to 0 | ||||
| dnl  if any interfaces have been removed. removal has | ||||
| dnl  precedence over adding, so set to 0 if both happened. | ||||
| LIBGTOP_AGE=0 | ||||
| LIBGTOP_AGE=1 | ||||
|  | ||||
| # you can set this to `-snap' for instance to create | ||||
| # a `libgtop-1.x.y-snap.tar.gz' tarball. | ||||
| @@ -112,27 +112,6 @@ if test x$build_inodedb = xyes ; then | ||||
|   AC_DEFINE(GLIBTOP_INODEDB) | ||||
| fi | ||||
|  | ||||
|  | ||||
| if test x$libgtop_smp = xyes ; then | ||||
|   smp_examples='smp' | ||||
|   smp_static_examples='smp_static' | ||||
| else | ||||
|   smp_examples= | ||||
|   smp_static_examples= | ||||
| fi | ||||
|  | ||||
| if test "x$enable_static" != xno; then | ||||
|   static_targets="first_static second_static mountlist_static procmap_static netload_static sysdeps_static timings_static $smp_static_examples pprint_static procargs_static df_static netlist netlist_static openfiles_static" | ||||
| else | ||||
|   static_targets="" | ||||
| fi | ||||
|  | ||||
| AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes) | ||||
| AM_CONDITIONAL(ENABLE_SHARED, test x$enable_static = xyes) | ||||
|  | ||||
| AC_SUBST(static_targets) | ||||
| AC_SUBST(smp_examples) | ||||
|  | ||||
| GLIB_REQUIRED=2.6.0 | ||||
|  | ||||
| PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED) | ||||
| @@ -195,28 +174,33 @@ AH_TEMPLATE(HAVE_VMGETINFO, [Define to 1 if you have the 'vmgetinfo' function in | ||||
| AC_CHECK_LIB(perfstat, vmgetinfo, AC_DEFINE(HAVE_VMGETINFO)) | ||||
|  | ||||
| dnl Solaris | ||||
| AC_CHECK_LIB(kstat, kstat_open) | ||||
| AC_CHECK_FUNCS(getloadavg swapctl) | ||||
| AC_CHECK_HEADERS(procfs.h sys/procfs.h, break) | ||||
| case "$host_os" in | ||||
|      solaris*) | ||||
|      AC_CHECK_LIB(kstat, kstat_open) | ||||
|      AC_CHECK_FUNCS(getloadavg swapctl) | ||||
|      AC_CHECK_HEADERS(procfs.h sys/procfs.h, break) | ||||
|  | ||||
| dnl Some versions of Solaris require -lelf for -lkvm | ||||
| AC_CHECK_LIB(kvm, kvm_open,[ | ||||
|   LIBS="-lkvm $LIBS" | ||||
| ],[AC_MSG_CHECKING(for kvm_open in -lkvm with -lelf) | ||||
|    AC_CACHE_VAL(ac_cv_lib_kvm_with_elf, | ||||
|    [ac_save_LIBS="$LIBS" | ||||
|     LIBS="-lkvm -lelf $LIBS" | ||||
|     AC_TRY_LINK([char kvm_open();], [kvm_open()], | ||||
|                 ac_cv_lib_kvm_with_elf=yes, ac_cv_lib_kvm_with_elf=no) | ||||
|     LIBS="$ac_save_LIBS" | ||||
|    ]) | ||||
|    if test "$ac_cv_lib_kvm_with_elf" = "yes"; then | ||||
|      AC_MSG_RESULT(yes) | ||||
|      LIBS="-lkvm -lelf $LIBS" | ||||
|    else | ||||
|      AC_MSG_RESULT(no) | ||||
|    fi | ||||
| ]) | ||||
|  | ||||
|     dnl Some versions of Solaris require -lelf for -lkvm | ||||
|     AC_CHECK_LIB(kvm, kvm_open,[ | ||||
|       LIBS="-lkvm $LIBS" | ||||
|     ],[AC_MSG_CHECKING(for kvm_open in -lkvm with -lelf) | ||||
|        AC_CACHE_VAL(ac_cv_lib_kvm_with_elf, | ||||
|        [ac_save_LIBS="$LIBS" | ||||
|         LIBS="-lkvm -lelf $LIBS" | ||||
|         AC_TRY_LINK([char kvm_open();], [kvm_open()], | ||||
|                     ac_cv_lib_kvm_with_elf=yes, ac_cv_lib_kvm_with_elf=no) | ||||
|         LIBS="$ac_save_LIBS" | ||||
|        ]) | ||||
|        if test "$ac_cv_lib_kvm_with_elf" = "yes"; then | ||||
|          AC_MSG_RESULT(yes) | ||||
|          LIBS="-lkvm -lelf $LIBS" | ||||
|        else | ||||
|          AC_MSG_RESULT(no) | ||||
|        fi | ||||
|     ]) | ||||
|      ;; | ||||
| esac | ||||
|  | ||||
| dnl For DEC OSF1 | ||||
| AC_CHECK_LIB(mach, vm_statistics) | ||||
|   | ||||
| @@ -1,2 +0,0 @@ | ||||
| Makefile.in | ||||
| Makefile | ||||
| @@ -1,9 +0,0 @@ | ||||
| backenddir	= @LIBGTOP_BACKEND_DIR@ | ||||
|  | ||||
| backend_DATA	= \ | ||||
| 	libgtop-backends.dtd	\ | ||||
| 	libgtop-backend-info.dtd | ||||
|  | ||||
| EXTRA_DIST	= | | ||||
| 	$(backend_DATA) | ||||
|  | ||||
| @@ -1,23 +0,0 @@ | ||||
| <!ELEMENT BackendInfo (name,description?,comments?,authors,legalnotice)> | ||||
| <!ELEMENT name (short_name,long_name?)> | ||||
| <!ELEMENT short_name (#PCDATA)> | ||||
| <!ELEMENT long_name (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT description (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT authors (author)+> | ||||
| <!ELEMENT author (author_name,author_email?)> | ||||
| <!ELEMENT author_name (#PCDATA)> | ||||
| <!ELEMENT author_email (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT legalnotice (license,copyright?)> | ||||
| <!ELEMENT license (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT copyright (holder)+> | ||||
| <!ELEMENT holder (holder_year?,holder_name,holder_email?)> | ||||
| <!ELEMENT holder_year (#PCDATA)> | ||||
| <!ELEMENT holder_name (#PCDATA)> | ||||
| <!ELEMENT holder_email (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT comments (comment)+> | ||||
| <!ELEMENT comment (#PCDATA)> | ||||
| @@ -1,11 +0,0 @@ | ||||
| <!ELEMENT Backends (Backend)+> | ||||
|  | ||||
| <!ELEMENT Backend (Name,Location)> | ||||
| <!ELEMENT Name (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT Location (LibtoolName?,ShlibName,ExtraLibs?)> | ||||
| <!ELEMENT LibtoolName (#PCDATA)> | ||||
| <!ELEMENT ShlibName (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT ExtraLibs (ExtraLib)+> | ||||
| <!ELEMENT ExtraLib (LibtoolName?,ShlibName)> | ||||
| @@ -1,3 +1,13 @@ | ||||
| 2005-08-02  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* pprint.c: (pprint_get_cpu), (pprint_get_loadavg), | ||||
| 	(pprint_get_mem), (pprint_get_msg_limits), (pprint_get_netlist), | ||||
| 	(pprint_get_swap), (pprint_get_uptime), (pprint_get_proc_kernel), | ||||
| 	(main): | ||||
|  | ||||
| 	Added pprint_get_proc_kernel(pid). | ||||
| 	Fixed prototypes. | ||||
|  | ||||
| 2005-01-22  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* openfiles.c: (show_open_files): Updated. | ||||
|   | ||||
| @@ -8,112 +8,43 @@ DEFS			= @DEFS@ | ||||
|  | ||||
| noinst_PROGRAMS	= 	first second pprint procargs df netlist \ | ||||
| 			  mountlist procmap netload sysdeps timings \ | ||||
| 			  openfiles \ | ||||
| 			  @static_targets@ @smp_examples@ | ||||
|  | ||||
| EXTRA_PROGRAMS		= first_static second_static \ | ||||
| 			  mountlist_static procmap_static \ | ||||
| 			  smp smp_static openfiles_static \ | ||||
| 			  netload_static sysdeps_static \ | ||||
| 			  timings_static pprint_static procargs_static \ | ||||
| 			  df_static netlist_static | ||||
| 			  openfiles smp | ||||
|  | ||||
| first_SOURCES		= first.c | ||||
| first_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| first_static_SOURCES	= $(first_SOURCES) | ||||
| first_static_LDADD	= $(first_LDADD) | ||||
| first_static_LDFLAGS	= -static | ||||
|  | ||||
| second_SOURCES		= second.c | ||||
| second_LDADD		= $(top_builddir)/lib/libgtop-2.0.la -lm | ||||
|  | ||||
| second_static_SOURCES	= $(second_SOURCES) | ||||
| second_static_LDADD	= $(second_LDADD) | ||||
| second_static_LDFLAGS	= -static | ||||
|  | ||||
| procmap_SOURCES		= procmap.c | ||||
| procmap_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| procmap_static_SOURCES	= $(procmap_SOURCES) | ||||
| procmap_static_LDADD	= $(procmap_LDADD) | ||||
| procmap_static_LDFLAGS	= -static | ||||
|  | ||||
| netload_SOURCES		= netload.c | ||||
| netload_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| netload_static_SOURCES	= $(netload_SOURCES) | ||||
| netload_static_LDADD	= $(netload_LDADD) | ||||
| netload_static_LDFLAGS	= -static | ||||
|  | ||||
| sysdeps_SOURCES		= sysdeps.c | ||||
| sysdeps_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| sysdeps_static_SOURCES	= $(sysdeps_SOURCES) | ||||
| sysdeps_static_LDADD	= $(sysdeps_LDADD) | ||||
| sysdeps_static_LDFLAGS	= -static | ||||
|  | ||||
|  | ||||
| mountlist_SOURCES	= mountlist.c | ||||
| mountlist_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| mountlist_static_SOURCES= $(mountlist_SOURCES) | ||||
| mountlist_static_LDADD	= $(mountlist_LDADD) | ||||
| mountlist_static_LDFLAGS= -static | ||||
|  | ||||
|  | ||||
| smp_SOURCES		= smp.c | ||||
| smp_LDADD		= $(top_builddir)/lib/libgtop-2.0.la -lm | ||||
|  | ||||
| smp_static_SOURCES	= $(smp_SOURCES) | ||||
| smp_static_LDADD	= $(smp_LDADD) | ||||
| smp_static_LDFLAGS	= -static | ||||
|  | ||||
| timings_SOURCES		= timings.c | ||||
| timings_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| timings_static_SOURCES	= $(timings_SOURCES) | ||||
| timings_static_LDADD	= $(timings_LDADD) | ||||
| timings_static_LDFLAGS	= -static | ||||
|  | ||||
|  | ||||
| pprint_SOURCES	        = pprint.c | ||||
| pprint_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| pprint_static_SOURCES   = $(pprint_SOURCES) | ||||
| pprint_static_LDADD	= $(pprint_LDADD) | ||||
| pprint_static_LDFLAGS   = -static | ||||
|  | ||||
|  | ||||
| procargs_SOURCES	  = procargs.c | ||||
| procargs_LDADD		  = $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| procargs_static_SOURCES   = $(procargs_SOURCES) | ||||
| procargs_static_LDADD	  = $(procargs_LDADD) | ||||
| procargs_static_LDFLAGS   = -static | ||||
|  | ||||
|  | ||||
| df_SOURCES	  = df.c | ||||
| df_LDADD		  = $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| df_static_SOURCES   = $(df_SOURCES) | ||||
| df_static_LDADD	  = $(df_LDADD) | ||||
| df_static_LDFLAGS   = -static | ||||
|  | ||||
|  | ||||
| netlist_SOURCES		= netlist.c | ||||
| netlist_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| netlist_static_SOURCES	= $(netlist_SOURCES) | ||||
| netlist_static_LDADD	= $(netlist_LDADD) | ||||
| netlist_static_LDFLAGS	= -static | ||||
|  | ||||
|  | ||||
| openfiles_SOURCES	= openfiles.c | ||||
| openfiles_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| openfiles_static_SOURCES	= $(openfiles_SOURCES) | ||||
| openfiles_static_LDADD		= $(openfiles_LDADD) | ||||
| openfiles_static_LDFLAGS	= -static | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -2,6 +2,7 @@ | ||||
|  | ||||
| #include <glibtop/union.h> | ||||
|  | ||||
| #include <unistd.h> | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <stddef.h> | ||||
| @@ -28,7 +29,7 @@ printf(".%u = " FORMAT " }\n", SIZE - 1 , buf.ARRAY[SIZE - 1]); \ | ||||
|  | ||||
|  | ||||
|  | ||||
| static void pprint_get_cpu() | ||||
| static void pprint_get_cpu(void) | ||||
| { | ||||
|   glibtop_cpu buf; | ||||
|  | ||||
| @@ -81,7 +82,7 @@ static void pprint_get_fsusage(const char *mountpoint) | ||||
|  | ||||
|  | ||||
|  | ||||
| static void pprint_get_loadavg() | ||||
| static void pprint_get_loadavg(void) | ||||
| { | ||||
|   glibtop_loadavg buf; | ||||
|  | ||||
| @@ -98,7 +99,7 @@ static void pprint_get_loadavg() | ||||
|  | ||||
|  | ||||
|  | ||||
| static void pprint_get_mem() | ||||
| static void pprint_get_mem(void) | ||||
| { | ||||
|   glibtop_mem buf; | ||||
|  | ||||
| @@ -156,7 +157,7 @@ static void pprint_get_mountlist(gboolean allfs) | ||||
|  | ||||
|  | ||||
|  | ||||
| static void pprint_get_msg_limits() | ||||
| static void pprint_get_msg_limits(void) | ||||
| { | ||||
|   glibtop_msg_limits buf; | ||||
|  | ||||
| @@ -189,7 +190,7 @@ static void pprint_get_netload(const char *iface) | ||||
| } | ||||
|  | ||||
|  | ||||
| static void pprint_get_netlist() | ||||
| static void pprint_get_netlist(void) | ||||
| { | ||||
|   glibtop_netlist buf; | ||||
|   char **devices; | ||||
| @@ -211,7 +212,7 @@ static void pprint_get_netlist() | ||||
|  | ||||
|  | ||||
|  | ||||
| static void pprint_get_swap() | ||||
| static void pprint_get_swap(void) | ||||
| { | ||||
|   glibtop_swap buf; | ||||
|  | ||||
| @@ -229,7 +230,7 @@ static void pprint_get_swap() | ||||
|  | ||||
|  | ||||
|  | ||||
| static void pprint_get_uptime() | ||||
| static void pprint_get_uptime(void) | ||||
| { | ||||
|   glibtop_uptime buf; | ||||
|  | ||||
| @@ -246,6 +247,23 @@ static void pprint_get_uptime() | ||||
|  | ||||
|  | ||||
|  | ||||
| static void pprint_get_proc_kernel(pid_t pid) | ||||
| { | ||||
|   glibtop_proc_kernel buf; | ||||
|  | ||||
|   glibtop_get_proc_kernel(&buf, pid); | ||||
|  | ||||
|   HEADER_PPRINT(glibtop_get_proc_kernel); | ||||
|   PPRINT(flags, "%#llx"); | ||||
|   PPRINT(k_flags, "%llu"); | ||||
|   PPRINT(min_flt, "%llu"); | ||||
|   PPRINT(maj_flt, "%llu"); | ||||
|   PPRINT(cmin_flt, "%llu"); | ||||
|   PPRINT(cmaj_flt, "%llu"); | ||||
|   FOOTER_PPRINT(); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| int main() | ||||
| { | ||||
| @@ -275,6 +293,8 @@ int main() | ||||
|  | ||||
|   pprint_get_uptime(); | ||||
|  | ||||
|   pprint_get_proc_kernel(getpid()); | ||||
|  | ||||
|   glibtop_close(); | ||||
|  | ||||
|   return 0; | ||||
|   | ||||
| @@ -31,8 +31,6 @@ | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/cpu.h> | ||||
|  | ||||
| #include "libgtop-i18n.h" | ||||
|  | ||||
| int | ||||
| main (int argc, char *argv []) | ||||
| { | ||||
| @@ -44,10 +42,6 @@ main (int argc, char *argv []) | ||||
| 	char separator [BUFSIZ], buffer [BUFSIZ]; | ||||
| 	int ncpu, i; | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
|  | ||||
| 	glibtop_init(); | ||||
|  | ||||
| 	glibtop_get_cpu (&cpu); | ||||
| @@ -73,16 +67,16 @@ main (int argc, char *argv []) | ||||
| 	memset (separator, '-', 91); | ||||
| 	separator [92] = '\0'; | ||||
|  | ||||
| 	sprintf (buffer, _("Ticks (%ld per second):"), frequency); | ||||
| 	sprintf (buffer, "Ticks (%ld per second):", frequency); | ||||
|  | ||||
| 	printf ("\n\n%-26s %12s %12s %12s %12s %12s\n%s\n", buffer, | ||||
| 		_("Total"), _("User"), _("Nice"), _("Sys"), _("Idle"), separator); | ||||
| 		"Total", "User", "Nice", "Sys", "Idle", separator); | ||||
|  | ||||
| 	printf (_("CPU          (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n\n"), | ||||
| 	printf ("CPU          (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n\n", | ||||
| 		(unsigned long) cpu.flags, total, user, nice, sys, idle); | ||||
|  | ||||
| 	for (i = 0; i < glibtop_global_server->ncpu; i++) { | ||||
| 		printf (_("CPU %3d      (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n"), i, | ||||
| 		printf ("CPU %3d      (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n", i, | ||||
| 			(unsigned long) cpu.flags, | ||||
| 			(unsigned long) cpu.xcpu_total [i], | ||||
| 			(unsigned long) cpu.xcpu_user  [i], | ||||
| @@ -99,11 +93,11 @@ main (int argc, char *argv []) | ||||
|  | ||||
| 	printf ("%s\n\n\n", separator); | ||||
|  | ||||
| 	printf ("%-26s %12s %12s %12s %12s %12s\n%s\n", _("Percent:"), | ||||
| 		_("Total (%)"), _("User (%)"), _("Nice (%)"), _("Sys (%)"), | ||||
| 		_("Idle (%)"), separator); | ||||
| 	printf ("%-26s %12s %12s %12s %12s %12s\n%s\n", "Percent:", | ||||
| 		"Total (%)", "User (%)", "Nice (%)", "Sys (%)", | ||||
| 		"Idle (%)", separator); | ||||
|  | ||||
| 	printf (_("CPU          (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n\n"), | ||||
| 	printf ("CPU          (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n\n", | ||||
| 		(unsigned long) cpu.flags, (double) total * 100.0 / total, | ||||
| 		(double) user  * 100.0 / total, | ||||
| 		(double) nice  * 100.0 / total, | ||||
| @@ -119,13 +113,13 @@ main (int argc, char *argv []) | ||||
| 		p_sys   = ((double) cpu.xcpu_sys   [i]) * 100.0 / sys; | ||||
| 		p_idle  = ((double) cpu.xcpu_idle  [i]) * 100.0 / idle; | ||||
|  | ||||
| 		printf (_("CPU %3d      (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"), | ||||
| 		printf ("CPU %3d      (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n", | ||||
| 			i, (unsigned long) cpu.flags, p_total, p_user, p_nice, | ||||
| 			p_sys, p_idle); | ||||
| 	} | ||||
|  | ||||
| 	printf ("%s\n%-26s %12.3f %12.3f %12.3f %12.3f %12.3f\n\n", separator, | ||||
| 		_("Spin:"), s_total * 100.0 / total, s_user * 100.0 / user, | ||||
| 		"Spin:", s_total * 100.0 / total, s_user * 100.0 / user, | ||||
| 		s_nice * 100.0 / nice, s_sys * 100.0 / sys, s_idle * 100.0 / idle); | ||||
|  | ||||
| 	exit (0); | ||||
|   | ||||
| @@ -94,9 +94,8 @@ extern glibtop *glibtop_global_server; | ||||
|  | ||||
| extern const unsigned long glibtop_server_features; | ||||
|  | ||||
| #define glibtop_init()	glibtop_init_r(&glibtop_global_server, 0, 0); | ||||
|  | ||||
| #define glibtop_close()	glibtop_close_r(glibtop_global_server); | ||||
| glibtop * | ||||
| glibtop_init (void); | ||||
|  | ||||
| glibtop * | ||||
| glibtop_init_r (glibtop **server_ptr, | ||||
|   | ||||
| @@ -1,4 +1,2 @@ | ||||
| SUBDIRS		= glibtop | ||||
|  | ||||
| EXTRA_DIST	= libgtop-i18n.h | ||||
|  | ||||
|   | ||||
| @@ -10,4 +10,4 @@ glibtop_HEADERS		= close.h loadavg.h prockernel.h procstate.h \ | ||||
| 			  inodedb.h sysinfo.h ppp.h procargs.h netload.h \ | ||||
| 			  netlist.h procopenfiles.h open.h | ||||
|  | ||||
| noinst_HEADERS		= error.h write.h read_data.h read.h | ||||
| noinst_HEADERS		= error.h write.h read_data.h read.h init_hooks.h | ||||
|   | ||||
| @@ -28,6 +28,8 @@ | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| void glibtop_close (void); | ||||
|  | ||||
| void glibtop_close_r (glibtop *server); | ||||
|  | ||||
| void glibtop_close_s (glibtop *server); | ||||
|   | ||||
| @@ -80,7 +80,7 @@ struct _glibtop_cpu | ||||
| 		xcpu_flags;	                /* GLIBTOP_XCPU_IDLE		*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_cpu(cpu)	glibtop_get_cpu_l(glibtop_global_server, cpu) | ||||
| void glibtop_get_cpu(glibtop_cpu *buf); | ||||
|  | ||||
| #if GLIBTOP_SUID_CPU | ||||
| #define glibtop_get_cpu_r	glibtop_get_cpu_p | ||||
|   | ||||
| @@ -53,7 +53,7 @@ struct _glibtop_fsusage | ||||
| 	guint64 read, write;    /* Total blocks read and written */ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_fsusage(fsusage,disk)	glibtop_get_fsusage_l(glibtop_global_server, fsusage, disk) | ||||
| void glibtop_get_fsusage(glibtop_fsusage *buf, const char *mount_dir); | ||||
|  | ||||
| #define glibtop_get_fsusage_r		glibtop_get_fsusage_s | ||||
|  | ||||
|   | ||||
| @@ -36,11 +36,6 @@ typedef struct _glibtop_server_info	glibtop_server_info; | ||||
|  | ||||
| typedef struct _glibtop_closure		glibtop_closure; | ||||
|  | ||||
| typedef int (*glibtop_init_func_t)	(glibtop_server *, glibtop_closure *); | ||||
|  | ||||
| extern glibtop_init_func_t		_glibtop_init_hook_s []; | ||||
| extern glibtop_init_func_t		_glibtop_init_hook_p []; | ||||
|  | ||||
| struct _glibtop_server_info | ||||
| { | ||||
|     int ncpu;			/* Number of CPUs, zero if single-processor */ | ||||
|   | ||||
							
								
								
									
										11
									
								
								include/glibtop/init_hooks.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								include/glibtop/init_hooks.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| #ifndef H_LIBGTOP_INIT_HOOKS_1122955666 | ||||
| #define H_LIBGTOP_INIT_HOOKS_1122955666 | ||||
|  | ||||
| #include <glibtop.h> | ||||
|  | ||||
| typedef void (*glibtop_init_func_t)(glibtop *); | ||||
|  | ||||
| extern const glibtop_init_func_t _glibtop_init_hook_s[]; | ||||
| extern const glibtop_init_func_t _glibtop_init_hook_p[]; | ||||
|  | ||||
| #endif /* H_LIBGTOP_INIT_HOOKS_1122955666 */ | ||||
| @@ -47,7 +47,7 @@ struct _glibtop_loadavg | ||||
| 		last_pid;		/* GLIBTOP_LOADAVG_LAST_PID	*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_loadavg(loadavg)	glibtop_get_loadavg_l(glibtop_global_server, loadavg) | ||||
| void glibtop_get_loadavg(glibtop_loadavg *buf); | ||||
|  | ||||
| #if GLIBTOP_SUID_LOADAVG | ||||
| #define glibtop_get_loadavg_r		glibtop_get_loadavg_p | ||||
|   | ||||
| @@ -55,7 +55,7 @@ struct _glibtop_mem | ||||
| 		locked;		/* GLIBTOP_MEM_LOCKED	*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_mem(mem)	glibtop_get_mem_l(glibtop_global_server, mem) | ||||
| void glibtop_get_mem(glibtop_mem *buf); | ||||
|  | ||||
| #if GLIBTOP_SUID_MEM | ||||
| #define glibtop_get_mem_r		glibtop_get_mem_p | ||||
|   | ||||
| @@ -55,7 +55,8 @@ struct _glibtop_mountlist | ||||
| 		size;			/* GLIBTOP_MOUNTLIST_SIZE	*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_mountlist(mountlist,all_fs)	glibtop_get_mountlist_l(glibtop_global_server, mountlist, all_fs) | ||||
| glibtop_mountentry * | ||||
| glibtop_get_mountlist(glibtop_mountlist *buf, int all_fs); | ||||
|  | ||||
| #define glibtop_get_mountlist_r		glibtop_get_mountlist_s | ||||
|  | ||||
|   | ||||
| @@ -53,7 +53,7 @@ struct _glibtop_msg_limits | ||||
| 		msgtql;		/* GLIBTOP_IPC_MSGTQL	*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_msg_limits(msg)	glibtop_get_msg_limits_l(glibtop_global_server, msg) | ||||
| void glibtop_get_msg_limits(glibtop_msg_limits *buf); | ||||
|  | ||||
| #if GLIBTOP_SUID_MSG_LIMITS | ||||
| #define glibtop_get_msg_limits_r	glibtop_get_msg_limits_p | ||||
|   | ||||
| @@ -37,7 +37,7 @@ struct _glibtop_netlist | ||||
| 	guint32 number; | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_netlist(netlist)	glibtop_get_netlist_l(glibtop_global_server, netlist) | ||||
| char** glibtop_get_netlist(glibtop_netlist *buf); | ||||
|  | ||||
| #if GLIBTOP_SUID_NETLIST | ||||
| #define glibtop_get_netlist_r		glibtop_get_netlist_p | ||||
|   | ||||
| @@ -107,7 +107,7 @@ struct _glibtop_netload | ||||
| 	guint8 hwaddress[8];		/* GLIBTOP_NETLOAD_HWADDRESS    */ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_netload(netload,interface)	glibtop_get_netload_l(glibtop_global_server, netload, interface) | ||||
| void glibtop_get_netload(glibtop_netload *buf, const char *interface); | ||||
|  | ||||
| #if GLIBTOP_SUID_NETLOAD | ||||
| #define glibtop_get_netload_r	glibtop_get_netload_p | ||||
|   | ||||
| @@ -51,7 +51,7 @@ struct _glibtop_ppp | ||||
| 		bytes_out;		/* GLIBTOP_PPP_BYTES_OUT	*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_ppp(ppp,device)	glibtop_get_ppp_l(glibtop_global_server, ppp, device) | ||||
| void glibtop_get_ppp(glibtop_ppp *buf, unsigned short device); | ||||
|  | ||||
| #if GLIBTOP_SUID_PPP | ||||
| #define glibtop_get_ppp_r	glibtop_get_ppp_p | ||||
|   | ||||
| @@ -46,9 +46,8 @@ char * | ||||
| glibtop_get_proc_args_l (glibtop *server, glibtop_proc_args *buf, | ||||
| 			 pid_t pid, unsigned max_len); | ||||
|  | ||||
| #define glibtop_get_proc_args(proc_args,pid,max_len) glibtop_get_proc_args_l(glibtop_global_server, proc_args, pid, max_len) | ||||
|  | ||||
|  | ||||
| char * | ||||
| glibtop_get_proc_args (glibtop_proc_args *buf, pid_t pid, unsigned max_len); | ||||
|  | ||||
| #if GLIBTOP_SUID_PROC_ARGS | ||||
|  | ||||
| @@ -82,8 +81,8 @@ char ** | ||||
| glibtop_get_proc_argv_l (glibtop *server, glibtop_proc_args *buf, | ||||
| 			 pid_t pid, unsigned max_len); | ||||
|  | ||||
| #define glibtop_get_proc_argv(proc_args,pid,max_len) glibtop_get_proc_argv_l(glibtop_global_server, proc_args, pid, max_len) | ||||
|  | ||||
| char ** | ||||
| glibtop_get_proc_argv (glibtop_proc_args *buf, pid_t pid, unsigned max_len); | ||||
|  | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -64,7 +64,7 @@ struct _glibtop_proc_kernel | ||||
| 	char wchan [40]; | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_proc_kernel(p1, p2)	glibtop_get_proc_kernel_l(glibtop_global_server, p1, p2) | ||||
| void glibtop_get_proc_kernel(glibtop_proc_kernel *buf, pid_t pid); | ||||
|  | ||||
| #if GLIBTOP_SUID_PROC_KERNEL | ||||
| #define glibtop_get_proc_kernel_r	glibtop_get_proc_kernel_p | ||||
|   | ||||
| @@ -62,7 +62,8 @@ struct _glibtop_proclist | ||||
| 		size;			/* GLIBTOP_PROCLIST_SIZE	*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_proclist(proclist,which,arg) glibtop_get_proclist_l(glibtop_global_server, proclist, which, arg) | ||||
| unsigned * | ||||
| glibtop_get_proclist(glibtop_proclist *buf, gint64 which, gint64 arg); | ||||
|  | ||||
| #if GLIBTOP_SUID_PROCLIST | ||||
| #define glibtop_get_proclist_r		glibtop_get_proclist_p | ||||
|   | ||||
| @@ -70,8 +70,9 @@ struct _glibtop_proc_map | ||||
| 		total,			/* GLIBTOP_PROC_MAP_TOTAL	*/ | ||||
| 		size;			/* GLIBTOP_PROC_MAP_SIZE	*/ | ||||
| }; | ||||
| glibtop_map_entry * | ||||
| glibtop_get_proc_map(glibtop_proc_map *buf, pid_t pid); | ||||
|  | ||||
| #define glibtop_get_proc_map(proc_map,pid) glibtop_get_proc_map_l(glibtop_global_server, proc_map, pid) | ||||
|  | ||||
| #if GLIBTOP_SUID_PROC_MAP | ||||
| #define glibtop_get_proc_map_r		glibtop_get_proc_map_p | ||||
|   | ||||
| @@ -55,7 +55,7 @@ struct _glibtop_proc_mem | ||||
| 				 * of the process; usually 2,147,483,647 */ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_proc_mem(p1, p2)	glibtop_get_proc_mem_l(glibtop_global_server, p1, p2) | ||||
| void glibtop_get_proc_mem(glibtop_proc_mem *buf, pid_t pid); | ||||
|  | ||||
| #if GLIBTOP_SUID_PROC_MEM | ||||
| #define glibtop_get_proc_mem_r		glibtop_get_proc_mem_p | ||||
|   | ||||
| @@ -94,7 +94,8 @@ struct _glibtop_proc_open_files | ||||
| 		size;			/* GLIBTOP_PROC_OPEN_FILES_SIZE   */ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_proc_open_files(proc_open_files,pid) glibtop_get_proc_open_files_l(glibtop_global_server, proc_open_files, pid) | ||||
| glibtop_open_files_entry * | ||||
| glibtop_get_proc_open_files(glibtop_proc_open_files *buf, pid_t pid); | ||||
|  | ||||
| #if GLIBTOP_SUID_PROC_FILE | ||||
| #define glibtop_get_proc_open_files_r		glibtop_get_proc_open_files_p | ||||
|   | ||||
| @@ -58,7 +58,7 @@ struct _glibtop_proc_segment | ||||
| 		start_stack;	/* address of the bottom of stack segment */ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_proc_segment(p1, p2)	glibtop_get_proc_segment_l(glibtop_global_server, p1, p2) | ||||
| void glibtop_get_proc_segment(glibtop_proc_segment *buf, pid_t pid); | ||||
|  | ||||
| #if GLIBTOP_SUID_PROC_SEGMENT | ||||
| #define glibtop_get_proc_segment_r	glibtop_get_proc_segment_p | ||||
|   | ||||
| @@ -49,7 +49,7 @@ struct _glibtop_proc_signal | ||||
| 		sigcatch [2];		/* mask of caught  signals */ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_proc_signal(p1, p2)	glibtop_get_proc_signal_l(glibtop_global_server, p1, p2) | ||||
| void glibtop_get_proc_signal(glibtop_proc_signal *buf, pid_t pid); | ||||
|  | ||||
| #if GLIBTOP_SUID_PROC_SIGNAL | ||||
| #define glibtop_get_proc_signal_r	glibtop_get_proc_signal_p | ||||
|   | ||||
| @@ -74,7 +74,7 @@ struct _glibtop_proc_state | ||||
|         last_processor; | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_proc_state(p1, p2)	glibtop_get_proc_state_l(glibtop_global_server, p1, p2) | ||||
| void glibtop_get_proc_state(glibtop_proc_state *buf, pid_t pid); | ||||
|  | ||||
| #if GLIBTOP_SUID_PROC_STATE | ||||
| #define glibtop_get_proc_state_r	glibtop_get_proc_state_p | ||||
|   | ||||
| @@ -70,7 +70,8 @@ struct _glibtop_proc_time | ||||
| 		xcpu_stime [GLIBTOP_NCPU];	/* SMP machines. */ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_proc_time(p1, p2)	glibtop_get_proc_time_l(glibtop_global_server, p1, p2) | ||||
|  | ||||
| void glibtop_get_proc_time(glibtop_proc_time *buf, pid_t pid); | ||||
|  | ||||
| #if GLIBTOP_SUID_PROC_TIME | ||||
| #define glibtop_get_proc_time_r	glibtop_get_proc_time_p | ||||
|   | ||||
| @@ -80,7 +80,7 @@ struct _glibtop_proc_uid | ||||
|  | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_proc_uid(p1, p2)	glibtop_get_proc_uid_l(glibtop_global_server, p1, p2) | ||||
| void glibtop_get_proc_uid(glibtop_proc_uid *buf, pid_t pid); | ||||
|  | ||||
| #if GLIBTOP_SUID_PROC_UID | ||||
| #define glibtop_get_proc_uid_r		glibtop_get_proc_uid_p | ||||
|   | ||||
| @@ -59,7 +59,7 @@ struct _glibtop_sem_limits | ||||
| 		semaem;		/* GLIBTOP_IPC_SEMAEM	*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_sem_limits(sem)	glibtop_get_sem_limits_l(glibtop_global_server, sem) | ||||
| void glibtop_get_sem_limits(glibtop_sem_limits *buf); | ||||
|  | ||||
| #if GLIBTOP_SUID_SEM_LIMITS | ||||
| #define glibtop_get_sem_limits_r	glibtop_get_sem_limits_p | ||||
|   | ||||
| @@ -49,7 +49,7 @@ struct _glibtop_shm_limits | ||||
| 		shmall;		/* GLIBTOP_IPC_SHMALL	*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_shm_limits(shm)	glibtop_get_shm_limits_l(glibtop_global_server, shm) | ||||
| void glibtop_get_shm_limits(glibtop_shm_limits *buf); | ||||
|  | ||||
| #if GLIBTOP_SUID_SHM_LIMITS | ||||
| #define glibtop_get_shm_limits_r	glibtop_get_shm_limits_p | ||||
|   | ||||
| @@ -49,7 +49,8 @@ struct _glibtop_swap | ||||
| 		pageout;	/* GLIBTOP_SWAP_PAGEOUT	*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_swap(swap)	glibtop_get_swap_l(glibtop_global_server, swap) | ||||
| void | ||||
| glibtop_get_swap(glibtop_swap *buf); | ||||
|  | ||||
| #if GLIBTOP_SUID_SWAP | ||||
| #define glibtop_get_swap_r		glibtop_get_swap_p | ||||
|   | ||||
| @@ -58,10 +58,6 @@ G_BEGIN_DECLS | ||||
|  | ||||
| #define GLIBTOP_SYSDEPS_ALL		((1 << GLIBTOP_MAX_SYSDEPS) - 1) | ||||
|  | ||||
| typedef void (*glibtop_init_func_t) (glibtop *); | ||||
| extern glibtop_init_func_t _glibtop_init_hook_s []; | ||||
| extern glibtop_init_func_t _glibtop_init_hook_p []; | ||||
|  | ||||
| typedef struct _glibtop_sysdeps	glibtop_sysdeps; | ||||
|  | ||||
| struct _glibtop_sysdeps | ||||
| @@ -94,8 +90,7 @@ struct _glibtop_sysdeps | ||||
| 		ppp;			/* glibtop_ppp		*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_sysdeps(sysdeps)	glibtop_get_sysdeps_r(glibtop_global_server,sysdeps) | ||||
|  | ||||
| void glibtop_get_sysdeps (glibtop_sysdeps *buf); | ||||
| void glibtop_get_sysdeps_r (glibtop *server, glibtop_sysdeps *buf); | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -54,11 +54,10 @@ struct _glibtop_sysinfo | ||||
| 	glibtop_entry cpuinfo [GLIBTOP_NCPU]; | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_sysinfo()	glibtop_get_sysinfo_s(glibtop_global_server) | ||||
|  | ||||
| #define glibtop_get_sysinfo_r	glibtop_get_sysinfo_s | ||||
|  | ||||
| const glibtop_sysinfo *glibtop_get_sysinfo_s (glibtop *server); | ||||
| const glibtop_sysinfo *glibtop_get_sysinfo (void); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
|   | ||||
| @@ -45,7 +45,7 @@ struct _glibtop_uptime | ||||
| 	guint64 boot_time; | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_uptime(uptime)	glibtop_get_uptime_l(glibtop_global_server, uptime) | ||||
| void glibtop_get_uptime (glibtop_uptime *buf); | ||||
|  | ||||
| #if GLIBTOP_SUID_UPTIME | ||||
| #define glibtop_get_uptime_r		glibtop_get_uptime_p | ||||
|   | ||||
| @@ -1,11 +0,0 @@ | ||||
|  | ||||
| #include <config.h> | ||||
|  | ||||
| #include <libintl.h> | ||||
| #define _(String) gettext (String) | ||||
| #ifdef gettext_noop | ||||
| #   define N_(String) gettext_noop (String) | ||||
| #else | ||||
| #   define N_(String) (String) | ||||
| #endif | ||||
|  | ||||
| @@ -26,6 +26,7 @@ | ||||
| #include <glibtop/sysdeps.h> | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/parameter.h> | ||||
| #include <glibtop/init_hooks.h> | ||||
|  | ||||
| #ifndef DEFAULT_PORT | ||||
| #define DEFAULT_PORT 42800 | ||||
| @@ -219,7 +220,7 @@ glibtop * | ||||
| glibtop_init_s (glibtop **server_ptr, unsigned long features, unsigned flags) | ||||
| { | ||||
| 	glibtop *server; | ||||
| 	glibtop_init_func_t *init_fkt; | ||||
| 	const glibtop_init_func_t *init_fkt; | ||||
|  | ||||
| 	if (server_ptr == NULL) | ||||
| 		return NULL; | ||||
|   | ||||
| @@ -28,7 +28,7 @@ print '#include <glibtop/open.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/sysdeps.h>'; | ||||
| print '#include <glibtop/union.h>'; | ||||
| print '#include "libgtop-i18n.h"'; | ||||
| print '#include <glib/gi18n-lib.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/command.h>'; | ||||
|  | ||||
|   | ||||
| @@ -24,7 +24,7 @@ | ||||
| #include <config.h> | ||||
| #include <glibtop/read.h> | ||||
| #include <glibtop/error.h> | ||||
| #include "libgtop-i18n.h" | ||||
| #include <glib/gi18n-lib.h> | ||||
|  | ||||
|  | ||||
| /* Reads some data from server. */ | ||||
|   | ||||
| @@ -25,7 +25,7 @@ | ||||
|  | ||||
| #include <glibtop/error.h> | ||||
| #include <glibtop/read_data.h> | ||||
| #include "libgtop-i18n.h" | ||||
| #include <glib/gi18n-lib.h> | ||||
|  | ||||
| /* Reads some data from server. */ | ||||
|  | ||||
|   | ||||
| @@ -22,6 +22,7 @@ | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/union.h> | ||||
| #include <glibtop/sysdeps.h> | ||||
| #include <glibtop/init_hooks.h> | ||||
|  | ||||
| const unsigned long glibtop_server_features = | ||||
| GLIBTOP_SUID_CPU + | ||||
| @@ -43,9 +44,10 @@ GLIBTOP_SUID_PROC_SEGMENT + | ||||
| GLIBTOP_SUID_PROC_ARGS + | ||||
| GLIBTOP_SUID_PROC_MAP + | ||||
| GLIBTOP_SUID_NETLOAD + | ||||
| GLIBTOP_SUID_NETLIST + | ||||
| GLIBTOP_SUID_PPP; | ||||
|  | ||||
| glibtop_init_func_t _glibtop_init_hook_s [] = { | ||||
| const glibtop_init_func_t _glibtop_init_hook_s [] = { | ||||
| #if !GLIBTOP_SUID_CPU | ||||
| 	glibtop_init_cpu_s, | ||||
| #endif | ||||
| @@ -103,13 +105,16 @@ glibtop_init_func_t _glibtop_init_hook_s [] = { | ||||
| #if !GLIBTOP_SUID_NETLOAD | ||||
| 	glibtop_init_netload_s, | ||||
| #endif | ||||
| #if !GLIBTOP_SUID_NETLIST | ||||
| 	glibtop_init_netlist_s, | ||||
| #endif | ||||
| #if !GLIBTOP_SUID_PPP | ||||
| 	glibtop_init_ppp_s, | ||||
| #endif | ||||
| 	NULL | ||||
| }; | ||||
|  | ||||
| glibtop_init_func_t _glibtop_init_hook_p [] = { | ||||
| const glibtop_init_func_t _glibtop_init_hook_p [] = { | ||||
| #if GLIBTOP_SUID_CPU | ||||
| 	glibtop_init_cpu_p, | ||||
| #endif | ||||
| @@ -167,6 +172,9 @@ glibtop_init_func_t _glibtop_init_hook_p [] = { | ||||
| #if GLIBTOP_SUID_NETLOAD | ||||
| 	glibtop_init_netload_p, | ||||
| #endif | ||||
| #if GLIBTOP_SUID_NETLIST | ||||
| 	glibtop_init_netlist_p, | ||||
| #endif | ||||
| #if GLIBTOP_SUID_PPP | ||||
| 	glibtop_init_ppp_p, | ||||
| #endif | ||||
|   | ||||
| @@ -25,7 +25,7 @@ | ||||
|  | ||||
| #include <glibtop/write.h> | ||||
| #include <glibtop/error.h> | ||||
| #include "libgtop-i18n.h" | ||||
| #include <glib/gi18n-lib.h> | ||||
|  | ||||
| /* Writes some data to server. */ | ||||
|  | ||||
|   | ||||
							
								
								
									
										38
									
								
								po/ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								po/ChangeLog
									
									
									
									
									
								
							| @@ -1,10 +1,46 @@ | ||||
| 2005-08-29  Telsa Gwynne  <hobbit@aloss.ukuu.org.uk> | ||||
|  | ||||
|         * cy.po: Updated Welsh translation. | ||||
| 	 | ||||
| 2005-08-22  Mugurel Tudor  <mugurelu@gnome.ro> | ||||
|  | ||||
| 	* ro.po: Updated Romanian translation | ||||
| 	by Mişu Moldovan <dumol@gnome.ro> | ||||
|  | ||||
| 2005-08-02  Dave Neary  <bolsh@gimp.org> | ||||
|  | ||||
| 	* tr.po: Fix a C formatting string translation. | ||||
|  | ||||
| 2005-06-28  Alexander Shopov  <ash@contact.bg> | ||||
|  | ||||
| 	* bg.po: Updated Bulgarian translation by | ||||
| 	Alexander Shopov <ash@contact.bg> | ||||
|  | ||||
| 2005-07-04  Hendrik Richter  <hendi@gnome-de.org> | ||||
|  | ||||
| 	* de.po: Fixed German translation by | ||||
| 	Jens Seidel <jensseidel@users.sf.net>. | ||||
|  | ||||
| 2005-06-22  Abel Cheung  <maddog@linuxhall.org> | ||||
|  | ||||
| 	* zh_TW.po: Fix language team reference. | ||||
|  | ||||
| 2005-06-15  Alexander Shopov  <ash@contact.bg> | ||||
|  | ||||
| 	* bg.po: Updated Bulgarian translation by | ||||
| 	Rostislav Raykov <zbrox@i-space.org> | ||||
|  | ||||
| 2005-06-13  Ignacio Casal Quinteiro  <nacho.resa@gmail.com> | ||||
|  | ||||
| 	* gl.po: Updated Galician Translation. | ||||
|  | ||||
| 2005-04-01  Adi Attar  <aattar@cvs.gnome.org> | ||||
|  | ||||
| 	* xh.po: Added Xhosa translation. | ||||
|  | ||||
| 2005-03-31  Steve Murphy  <murf@e-tools.com> | ||||
|  | ||||
|         * rw.po: Added Kinyarwanda translation. | ||||
| 	* rw.po: Added Kinyarwanda translation. | ||||
|  | ||||
| 2005-03-19  Priit Laes  <plaes@cvs.gnome.org> | ||||
|  | ||||
|   | ||||
							
								
								
									
										98
									
								
								po/bg.po
									
									
									
									
									
								
							
							
						
						
									
										98
									
								
								po/bg.po
									
									
									
									
									
								
							| @@ -9,8 +9,8 @@ msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: libgtop\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2005-01-27 12:05+0200\n" | ||||
| "PO-Revision-Date: 2005-03-05 16:34+0800\n" | ||||
| "POT-Creation-Date: 2005-07-28 14:05+0300\n" | ||||
| "PO-Revision-Date: 2005-07-28 14:04+0300\n" | ||||
| "Last-Translator: Rostislav Raykov <zbrox@i-space.org>\n" | ||||
| "Language-Team: Bulgarian <dict@linux.zonebg.com>\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| @@ -18,64 +18,64 @@ msgstr "" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "Plural-Forms: nplurals=2; plural=n != 1;\n" | ||||
|  | ||||
| #: lib/read.c:64 | ||||
| #: ../lib/read.c:65 | ||||
| #, c-format | ||||
| msgid "read %d byte" | ||||
| msgid_plural "read %d bytes" | ||||
| msgstr[0] "прочетен %d байт" | ||||
| msgstr[1] "прочетени %d байта" | ||||
|  | ||||
| #: lib/read_data.c:52 | ||||
| #: ../lib/read_data.c:53 | ||||
| msgid "read data size" | ||||
| msgstr "размер прочетени данни" | ||||
|  | ||||
| #: lib/read_data.c:71 | ||||
| #, fuzzy, c-format | ||||
| #: ../lib/read_data.c:72 | ||||
| #, c-format | ||||
| msgid "read %lu byte of data" | ||||
| msgid_plural "read %lu bytes of data" | ||||
| msgstr[0] "прочетен %d байт от данните" | ||||
| msgstr[1] "прочетени %d байта от данните" | ||||
| msgstr[0] "прочетен %lu байт данни" | ||||
| msgstr[1] "прочетени %lu байта данни" | ||||
|  | ||||
| #: lib/write.c:51 | ||||
| #: ../lib/write.c:52 | ||||
| #, c-format | ||||
| msgid "wrote %d byte" | ||||
| msgid_plural "wrote %d bytes" | ||||
| msgstr[0] "записан %d байт" | ||||
| msgstr[1] "записани %d байта" | ||||
|  | ||||
| #: src/daemon/gnuserv.c:461 | ||||
| #: ../src/daemon/gnuserv.c:460 | ||||
| msgid "Enable debugging" | ||||
| msgstr "Включване на дебъгване" | ||||
|  | ||||
| #: src/daemon/gnuserv.c:461 | ||||
| #: ../src/daemon/gnuserv.c:460 | ||||
| msgid "DEBUG" | ||||
| msgstr "DEBUG" | ||||
|  | ||||
| #: src/daemon/gnuserv.c:463 | ||||
| #: ../src/daemon/gnuserv.c:462 | ||||
| msgid "Enable verbose output" | ||||
| msgstr "Включен подробен изход" | ||||
|  | ||||
| #: src/daemon/gnuserv.c:463 | ||||
| #: ../src/daemon/gnuserv.c:462 | ||||
| msgid "VERBOSE" | ||||
| msgstr "ПОДРОБЕН" | ||||
|  | ||||
| #: src/daemon/gnuserv.c:465 | ||||
| #: ../src/daemon/gnuserv.c:464 | ||||
| msgid "Don't fork into background" | ||||
| msgstr "Не се поражда процес във фонов режим" | ||||
|  | ||||
| #: src/daemon/gnuserv.c:465 | ||||
| #: ../src/daemon/gnuserv.c:464 | ||||
| msgid "NO-DAEMON" | ||||
| msgstr "БЕЗ-ДЕМОН" | ||||
|  | ||||
| #: src/daemon/gnuserv.c:467 | ||||
| #: ../src/daemon/gnuserv.c:466 | ||||
| msgid "Invoked from inetd" | ||||
| msgstr "Извикан от inetd" | ||||
|  | ||||
| #: src/daemon/gnuserv.c:467 | ||||
| #: ../src/daemon/gnuserv.c:466 | ||||
| msgid "INETD" | ||||
| msgstr "INETD" | ||||
|  | ||||
| #: src/daemon/gnuserv.c:501 | ||||
| #: ../src/daemon/gnuserv.c:500 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Error on option %s: %s.\n" | ||||
| @@ -85,126 +85,126 @@ msgstr "" | ||||
| "Изпълнете '%s --help' за да видите пълния списък от налични за командата " | ||||
| "опции.\n" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:28 sysdeps/sun4/siglist.c:28 | ||||
| #: ../sysdeps/osf1/siglist.c:28 ../sysdeps/sun4/siglist.c:28 | ||||
| msgid "Hangup" | ||||
| msgstr "Разпадане" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:29 sysdeps/sun4/siglist.c:29 | ||||
| #: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29 | ||||
| msgid "Interrupt" | ||||
| msgstr "Прекъсване" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:30 sysdeps/sun4/siglist.c:30 | ||||
| #: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30 | ||||
| msgid "Quit" | ||||
| msgstr "Напускане" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:31 sysdeps/sun4/siglist.c:31 | ||||
| #: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31 | ||||
| msgid "Illegal instruction" | ||||
| msgstr "Недопустима инструкция" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:32 sysdeps/sun4/siglist.c:32 | ||||
| #: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32 | ||||
| msgid "Trace trap" | ||||
| msgstr "Точка на прекъсване" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:33 sysdeps/sun4/siglist.c:33 | ||||
| #: ../sysdeps/osf1/siglist.c:33 ../sysdeps/sun4/siglist.c:33 | ||||
| msgid "Abort" | ||||
| msgstr "Прекъсване" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:34 sysdeps/sun4/siglist.c:34 | ||||
| #: ../sysdeps/osf1/siglist.c:34 ../sysdeps/sun4/siglist.c:34 | ||||
| msgid "EMT error" | ||||
| msgstr "EMT грешка" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:35 sysdeps/sun4/siglist.c:35 | ||||
| #: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35 | ||||
| msgid "Floating-point exception" | ||||
| msgstr "Изключение с плаваща запетая" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:36 sysdeps/sun4/siglist.c:36 | ||||
| #: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36 | ||||
| msgid "Kill" | ||||
| msgstr "Убиване" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:37 sysdeps/sun4/siglist.c:37 | ||||
| #: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37 | ||||
| msgid "Bus error" | ||||
| msgstr "Грешка в шината" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:38 sysdeps/sun4/siglist.c:38 | ||||
| #: ../sysdeps/osf1/siglist.c:38 ../sysdeps/sun4/siglist.c:38 | ||||
| msgid "Segmentation violation" | ||||
| msgstr "Сегментация" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:39 sysdeps/sun4/siglist.c:39 | ||||
| #: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39 | ||||
| msgid "Bad argument to system call" | ||||
| msgstr "Грешен аргумент на системно извикване" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:40 sysdeps/sun4/siglist.c:40 | ||||
| #: ../sysdeps/osf1/siglist.c:40 ../sysdeps/sun4/siglist.c:40 | ||||
| msgid "Broken pipe" | ||||
| msgstr "Нарушен програмен канал" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:41 sysdeps/sun4/siglist.c:41 | ||||
| #: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41 | ||||
| msgid "Alarm clock" | ||||
| msgstr "Алармен часовник" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:42 sysdeps/sun4/siglist.c:42 | ||||
| #: ../sysdeps/osf1/siglist.c:42 ../sysdeps/sun4/siglist.c:42 | ||||
| msgid "Termination" | ||||
| msgstr "Завършване" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:43 sysdeps/sun4/siglist.c:43 | ||||
| #: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43 | ||||
| msgid "Urgent condition on socket" | ||||
| msgstr "Неотложно състояние на socket" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:44 sysdeps/sun4/siglist.c:44 | ||||
| #: ../sysdeps/osf1/siglist.c:44 ../sysdeps/sun4/siglist.c:44 | ||||
| msgid "Stop" | ||||
| msgstr "Стоп" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:45 sysdeps/sun4/siglist.c:45 | ||||
| #: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45 | ||||
| msgid "Keyboard stop" | ||||
| msgstr "Стоп от клавиатурата" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:46 sysdeps/sun4/siglist.c:46 | ||||
| #: ../sysdeps/osf1/siglist.c:46 ../sysdeps/sun4/siglist.c:46 | ||||
| msgid "Continue" | ||||
| msgstr "Продължаване" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:47 sysdeps/sun4/siglist.c:47 | ||||
| #: ../sysdeps/osf1/siglist.c:47 ../sysdeps/sun4/siglist.c:47 | ||||
| msgid "Child status has changed" | ||||
| msgstr "Промяна в състоянието на дъщерни процеси" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:48 sysdeps/sun4/siglist.c:48 | ||||
| #: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48 | ||||
| msgid "Background read from tty" | ||||
| msgstr "Фоново четене от tty" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:49 sysdeps/sun4/siglist.c:49 | ||||
| #: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49 | ||||
| msgid "Background write to tty" | ||||
| msgstr "Фонов запис в tty" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:50 sysdeps/sun4/siglist.c:50 | ||||
| #: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50 | ||||
| msgid "I/O now possible" | ||||
| msgstr "I/O сега е възможно" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:51 sysdeps/sun4/siglist.c:51 | ||||
| #: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51 | ||||
| msgid "CPU limit exceeded" | ||||
| msgstr "Превишено ограничение за CPU" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:52 sysdeps/sun4/siglist.c:52 | ||||
| #: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52 | ||||
| msgid "File size limit exceeded" | ||||
| msgstr "Превишено ограничение за размер на файл" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:53 sysdeps/sun4/siglist.c:53 | ||||
| #: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53 | ||||
| msgid "Virtual alarm clock" | ||||
| msgstr "Виртуален алармен часовник" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:54 sysdeps/sun4/siglist.c:54 | ||||
| #: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54 | ||||
| msgid "Profiling alarm clock" | ||||
| msgstr "Профилиран алармен часовник" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:55 sysdeps/sun4/siglist.c:55 | ||||
| #: ../sysdeps/osf1/siglist.c:55 ../sysdeps/sun4/siglist.c:55 | ||||
| msgid "Window size change" | ||||
| msgstr "Променяне размера на прозорец" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:56 sysdeps/sun4/siglist.c:56 | ||||
| #: ../sysdeps/osf1/siglist.c:56 ../sysdeps/sun4/siglist.c:56 | ||||
| msgid "Information request" | ||||
| msgstr "Заявка за данни" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:57 sysdeps/sun4/siglist.c:57 | ||||
| #: ../sysdeps/osf1/siglist.c:57 ../sysdeps/sun4/siglist.c:57 | ||||
| msgid "User defined signal 1" | ||||
| msgstr "Сигнал на потребител 1" | ||||
|  | ||||
| #: sysdeps/osf1/siglist.c:58 sysdeps/sun4/siglist.c:58 | ||||
| #: ../sysdeps/osf1/siglist.c:58 ../sysdeps/sun4/siglist.c:58 | ||||
| msgid "User defined signal 2" | ||||
| msgstr "Сигнал на потребител 2" | ||||
|   | ||||
							
								
								
									
										38
									
								
								po/ca.po
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								po/ca.po
									
									
									
									
									
								
							| @@ -7,8 +7,8 @@ msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: libgtop 2.9.91\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2005-02-16 10:43+0100\n" | ||||
| "PO-Revision-Date: 2005-02-16 10:46+0100\n" | ||||
| "POT-Creation-Date: 2005-09-04 01:14+0200\n" | ||||
| "PO-Revision-Date: 2005-09-04 01:16+0200\n" | ||||
| "Last-Translator: Jordi Mallach <jordi@sindominio.net>\n" | ||||
| "Language-Team: Catalan <tradgnome@softcatala.org>\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| @@ -41,47 +41,47 @@ msgid_plural "wrote %d bytes" | ||||
| msgstr[0] "s'ha escrit %d octet" | ||||
| msgstr[1] "s'ha escrit %d octets" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:459 | ||||
| #: ../src/daemon/gnuserv.c:460 | ||||
| msgid "Enable debugging" | ||||
| msgstr "Activa la depuració" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:459 | ||||
| #: ../src/daemon/gnuserv.c:460 | ||||
| msgid "DEBUG" | ||||
| msgstr "DEPURACIÓ" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:461 | ||||
| #: ../src/daemon/gnuserv.c:462 | ||||
| msgid "Enable verbose output" | ||||
| msgstr "Activa la sortida detallada" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:461 | ||||
| #: ../src/daemon/gnuserv.c:462 | ||||
| msgid "VERBOSE" | ||||
| msgstr "DETALLA" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:463 | ||||
| #: ../src/daemon/gnuserv.c:464 | ||||
| msgid "Don't fork into background" | ||||
| msgstr "No bifurquis dintre del fons" | ||||
| msgstr "No bifurquis al segon pla" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:463 | ||||
| #: ../src/daemon/gnuserv.c:464 | ||||
| msgid "NO-DAEMON" | ||||
| msgstr "SENSE DIMONI" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:465 | ||||
| #: ../src/daemon/gnuserv.c:466 | ||||
| msgid "Invoked from inetd" | ||||
| msgstr "Ha estat cridat des d'inetd" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:465 | ||||
| #: ../src/daemon/gnuserv.c:466 | ||||
| msgid "INETD" | ||||
| msgstr "INETD" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:499 | ||||
| #: ../src/daemon/gnuserv.c:500 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Error on option %s: %s.\n" | ||||
| "Run '%s --help' to see a full list of available command line options.\n" | ||||
| msgstr "" | ||||
| "Error en l'opció %s: %s.\n" | ||||
| "Executa '%s --ajuda' per veure una llista completa de les opcions de línies " | ||||
| "d'ordre disponibles.\n" | ||||
| "S'ha produït un error en l'opció %s: %s.\n" | ||||
| "Executeu '%s --ajuda' per a veure una llista completa de les opcions de " | ||||
| "línies d'ordre disponibles.\n" | ||||
|  | ||||
| #: ../sysdeps/osf1/siglist.c:28 ../sysdeps/sun4/siglist.c:28 | ||||
| msgid "Hangup" | ||||
| @@ -89,7 +89,7 @@ msgstr "Termina" | ||||
|  | ||||
| #: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29 | ||||
| msgid "Interrupt" | ||||
| msgstr "Interrumpeix" | ||||
| msgstr "Interromp" | ||||
|  | ||||
| #: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30 | ||||
| msgid "Quit" | ||||
| @@ -113,7 +113,7 @@ msgstr "Error EMT" | ||||
|  | ||||
| #: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35 | ||||
| msgid "Floating-point exception" | ||||
| msgstr "excepció de coma flotant" | ||||
| msgstr "Excepció de coma flotant" | ||||
|  | ||||
| #: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36 | ||||
| msgid "Kill" | ||||
| @@ -165,7 +165,7 @@ msgstr "L'estat del fill ha canviat" | ||||
|  | ||||
| #: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48 | ||||
| msgid "Background read from tty" | ||||
| msgstr "Llegida de tty en segon pla" | ||||
| msgstr "Lectura de tty en segon pla" | ||||
|  | ||||
| #: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49 | ||||
| msgid "Background write to tty" | ||||
| @@ -173,7 +173,7 @@ msgstr "Escriptura a tty en segon pla" | ||||
|  | ||||
| #: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50 | ||||
| msgid "I/O now possible" | ||||
| msgstr "E/E ara possible" | ||||
| msgstr "E/S ara és possible" | ||||
|  | ||||
| #: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51 | ||||
| msgid "CPU limit exceeded" | ||||
|   | ||||
							
								
								
									
										6
									
								
								po/de.po
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								po/de.po
									
									
									
									
									
								
							| @@ -11,8 +11,8 @@ msgstr "" | ||||
| "Project-Id-Version: libgtop 2.5.0\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2005-01-16 16:59+0100\n" | ||||
| "PO-Revision-Date: 2005-01-16 17:00+0100\n" | ||||
| "Last-Translator: Hendrik Richter <hendrik@gnome-de.org>\n" | ||||
| "PO-Revision-Date: 2005-07-04 17:11+0200\n" | ||||
| "Last-Translator: Hendrik Richter <hendi@gnome-de.org>\n" | ||||
| "Language-Team: German <gnome-de@gnome.org>\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| @@ -967,7 +967,7 @@ msgstr "Benutzerdefiniertes Signal 2" | ||||
| #~ msgstr "Sitzungskennung" | ||||
|  | ||||
| #~ msgid "Full device number of controlling terminal" | ||||
| #~ msgstr "Volle Gerätenummer des kontrolierenden Terminals" | ||||
| #~ msgstr "Volle Gerätenummer des kontrollierenden Terminals" | ||||
|  | ||||
| #~ msgid "Terminal process group ID" | ||||
| #~ msgstr "Terminalprozessgruppenkennung" | ||||
|   | ||||
							
								
								
									
										4
									
								
								po/tr.po
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								po/tr.po
									
									
									
									
									
								
							| @@ -32,8 +32,8 @@ msgstr "okunan veri miktarı" | ||||
| #, c-format | ||||
| msgid "read %lu byte of data" | ||||
| msgid_plural "read %lu bytes of data" | ||||
| msgstr[0] "%d bayt oku" | ||||
| msgstr[1] "%d bayt oku" | ||||
| msgstr[0] "%lu bayt oku" | ||||
| msgstr[1] "%lu bayt oku" | ||||
|  | ||||
| #: lib/write.c:52 | ||||
| #, c-format | ||||
|   | ||||
							
								
								
									
										26
									
								
								po/zh_TW.po
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								po/zh_TW.po
									
									
									
									
									
								
							| @@ -1,15 +1,15 @@ | ||||
| # traditional Chinese translation for libgtop. | ||||
| # Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. | ||||
| # Abel Cheung <maddog@linuxhall.org>, 2001-2003. | ||||
| # Abel Cheung <abel@oaka.org>, 2001-2003. | ||||
| #  | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: libgtop 2.9.92\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2005-03-05 16:31+0800\n" | ||||
| "POT-Creation-Date: 2005-06-23 22:05+0000\n" | ||||
| "PO-Revision-Date: 2005-03-05 16:33+0800\n" | ||||
| "Last-Translator: Abel Cheung <maddog@linuxhall.org>\n" | ||||
| "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n" | ||||
| "Last-Translator: Abel Cheung <abel@oaka.org>\n" | ||||
| "Language-Team: Chinese (traditional) <community@linuxhall.org>\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| @@ -37,39 +37,39 @@ msgid "wrote %d byte" | ||||
| msgid_plural "wrote %d bytes" | ||||
| msgstr[0] "寫入 %d 位元組" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:459 | ||||
| #: ../src/daemon/gnuserv.c:460 | ||||
| msgid "Enable debugging" | ||||
| msgstr "啟用偵錯功能" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:459 | ||||
| #: ../src/daemon/gnuserv.c:460 | ||||
| msgid "DEBUG" | ||||
| msgstr "偵錯" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:461 | ||||
| #: ../src/daemon/gnuserv.c:462 | ||||
| msgid "Enable verbose output" | ||||
| msgstr "顯示詳細的輸出訊息" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:461 | ||||
| #: ../src/daemon/gnuserv.c:462 | ||||
| msgid "VERBOSE" | ||||
| msgstr "詳細訊息" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:463 | ||||
| #: ../src/daemon/gnuserv.c:464 | ||||
| msgid "Don't fork into background" | ||||
| msgstr "不要放置於背景執行" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:463 | ||||
| #: ../src/daemon/gnuserv.c:464 | ||||
| msgid "NO-DAEMON" | ||||
| msgstr "NO-DAEMON" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:465 | ||||
| #: ../src/daemon/gnuserv.c:466 | ||||
| msgid "Invoked from inetd" | ||||
| msgstr "透過 inetd 執行" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:465 | ||||
| #: ../src/daemon/gnuserv.c:466 | ||||
| msgid "INETD" | ||||
| msgstr "INETD" | ||||
|  | ||||
| #: ../src/daemon/gnuserv.c:499 | ||||
| #: ../src/daemon/gnuserv.c:500 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Error on option %s: %s.\n" | ||||
|   | ||||
| @@ -31,7 +31,7 @@ | ||||
|  | ||||
| #include <config.h> | ||||
|  | ||||
| #include "libgtop-i18n.h" | ||||
| #include <glib/gi18n-lib.h> | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/close.h> | ||||
|   | ||||
| @@ -26,7 +26,7 @@ | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/error.h> | ||||
| #include <glibtop/open.h> | ||||
|  | ||||
| #include <glibtop/init_hooks.h> | ||||
| #include "glibtop_suid.h" | ||||
|  | ||||
| /* !!! THIS FUNCTION RUNS SUID ROOT - CHANGE WITH CAUTION !!! */ | ||||
| @@ -35,7 +35,7 @@ void | ||||
| glibtop_init_p (glibtop *server, const unsigned long features, | ||||
|                 const unsigned flags) | ||||
| { | ||||
| 	glibtop_init_func_t *init_fkt; | ||||
| 	const glibtop_init_func_t *init_fkt; | ||||
|  | ||||
| 	if (server == NULL) | ||||
| 		glibtop_error_r (NULL, "glibtop_init_p (server == NULL)"); | ||||
|   | ||||
| @@ -17,13 +17,14 @@ libgtop_common_2_0_la_SOURCES	= error.c gnuslib.c \ | ||||
| 				  fsusage.c \ | ||||
|                                   mountlist.c \ | ||||
|                                   procargs.c \ | ||||
| 				  default.c \ | ||||
| 				  $(inodedb_SRCLIST) | ||||
|  | ||||
| libgtop_common_2_0_la_LDFLAGS	= $(LT_VERSION_INFO) | ||||
| # libgtop_common_2_0_la_LDFLAGS	= $(LT_VERSION_INFO) | ||||
| libgtop_common_2_0_la_LIBADD	= $(LIBGTOP_EXTRA_LIBS) | ||||
|  | ||||
| libgtop_suid_common_2_0_la_SOURCES	= error.c sysdeps_suid.c | ||||
|  | ||||
| libgtop_suid_common_2_0_la_LDFLAGS	= $(LT_VERSION_INFO) | ||||
| # libgtop_suid_common_2_0_la_LDFLAGS	= $(LT_VERSION_INFO) | ||||
|  | ||||
| EXTRA_DIST			= inodedb.c | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user