Compare commits
	
		
			214 Commits
		
	
	
		
			LIBGTOP_2_
			...
			LIBGTOP_1_
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | f659523856 | ||
|  | 6b81006d08 | ||
|  | b70be80aca | ||
|  | f8fb49a428 | ||
|  | 18356c6ae6 | ||
|  | 807d4bf6ae | ||
|  | c0350d38ae | ||
|  | d3a9e47ffb | ||
|  | c8a3e46433 | ||
|  | 222706a0d4 | ||
|  | 2168cc5f71 | ||
|  | 08808384f4 | ||
|  | 0f1306a20f | ||
|  | 84b05c0219 | ||
|  | 6916ada308 | ||
|  | 5943c96d35 | ||
|  | 909a3e6512 | ||
|  | ca94618e27 | ||
|  | a478d380f4 | ||
|  | af80d4d3d2 | ||
|  | 973dc2d37c | ||
|  | 97b32c7046 | ||
|  | fb8184afba | ||
|  | 16643866cf | ||
|  | aa9299f344 | ||
|  | 6f69cd863b | ||
|  | 7262bf39d8 | ||
|  | 9e773390cc | ||
|  | 54cbdb8158 | ||
|  | c70b11ee00 | ||
|  | 965b26c926 | ||
|  | 384cd6b2db | ||
|  | b055e3710b | ||
|  | 669c6fd670 | ||
|  | 617c4568d2 | ||
|  | 93c998cf7a | ||
|  | 46a0750736 | ||
|  | e9227d1a2e | ||
|  | 41b7120527 | ||
|  | 0ad6ae0a12 | ||
|  | 6197e3ad47 | ||
|  | e577717013 | ||
|  | 6b19a0090a | ||
|  | a515242f17 | ||
|  | a7b13c7d83 | ||
|  | 849d2da085 | ||
|  | d4b195045a | ||
|  | c269f0adb8 | ||
|  | 4f65ee018c | ||
|  | 8a8b975d08 | ||
|  | 64955004a0 | ||
|  | 4ef82847fe | ||
|  | 9da5658ba1 | ||
|  | b300842f47 | ||
|  | 9a49872026 | ||
|  | 1aa7aae2f6 | ||
|  | 70ba9e2559 | ||
|  | 13323e55ee | ||
|  | 57d96878de | ||
|  | 10de82e256 | ||
|  | 29240a5a96 | ||
|  | 1baa2ef8ff | ||
|  | 0bd5a6c082 | ||
|  | 2698263164 | ||
|  | 85d53a69cf | ||
|  | 0a42a8d018 | ||
|  | 9d772e3c07 | ||
|  | ddd9d11c71 | ||
|  | b161b5bb72 | ||
|  | 5607fefe30 | ||
|  | 9d9aed4023 | ||
|  | 62edf91314 | ||
|  | 38e55efd2d | ||
|  | 67c9c8e3e3 | ||
|  | 013ab1841d | ||
|  | 88c5d4fd61 | ||
|  | adbe42cda3 | ||
|  | 2e6e310a3e | ||
|  | 818e941413 | ||
|  | dfa868ce82 | ||
|  | dc353a4172 | ||
|  | 4da65d5d0b | ||
|  | a2043e3aaf | ||
|  | f03304a920 | ||
|  | beedc57724 | ||
|  | 3049619931 | ||
|  | ddb0c913c1 | ||
|  | c7244ba1ba | ||
|  | 146ccb2511 | ||
|  | 91c35548e4 | ||
|  | 8705ef6b65 | ||
|  | d5b27269d8 | ||
|  | 6915f098ca | ||
|  | 376613ddd4 | ||
|  | 6a9cd61fd9 | ||
|  | 18a3526ea7 | ||
|  | 333c85736c | ||
|  | df5ec3c02a | ||
|  | 368e94c8e1 | ||
|  | f5de8e4ead | ||
|  | 715975f7ed | ||
|  | f13099194c | ||
|  | 1dd8a8e8fc | ||
|  | d9fb27e57c | ||
|  | dde1a2c1aa | ||
|  | 5bff21b7b4 | ||
|  | e58c732f54 | ||
|  | 48404428a2 | ||
|  | d009071e40 | ||
|  | 33b1fcf4f9 | ||
|  | c0a9dedc4b | ||
|  | 7ab96d212d | ||
|  | bd6e248adf | ||
|  | 9abfb85080 | ||
|  | fdef2d5b38 | ||
|  | 641eb24a8b | ||
|  | 8754f434d1 | ||
|  | f656208234 | ||
|  | 0df1594f31 | ||
|  | 1ab7936ced | ||
|  | dcd43f8a15 | ||
|  | 7f7c5506f7 | ||
|  | b0a4cb2379 | ||
|  | 8c06ed1516 | ||
|  | 56154e50f2 | ||
|  | 902670623f | ||
|  | 0e5d856065 | ||
|  | 35b6acfc22 | ||
|  | 0830a0b8a7 | ||
|  | f4be080d63 | ||
|  | a599e04eb6 | ||
|  | 0dec9a7b70 | ||
|  | 75958ce2ab | ||
|  | 20bbc17f6b | ||
|  | 19ffa1419a | ||
|  | 1e568f294e | ||
|  | 7752a312e9 | ||
|  | 23c7449898 | ||
|  | 64b3db2dc0 | ||
|  | e94b4882b6 | ||
|  | 1e629c9a86 | ||
|  | 6b6e1261f1 | ||
|  | bbc872138b | ||
|  | 3555a6ca0c | ||
|  | e5928d0b13 | ||
|  | 5bb7e07e95 | ||
|  | 043f4a498f | ||
|  | 94297b8460 | ||
|  | 0f5b941b15 | ||
|  | df6d645afd | ||
|  | 9ac47c7839 | ||
|  | 8d734d1296 | ||
|  | 7fa43bba5d | ||
|  | e2e01a9405 | ||
|  | 5530697ab8 | ||
|  | 95f279d1a7 | ||
|  | 1904a463e2 | ||
|  | 7ce1f9e9d7 | ||
|  | 5221f6d4f8 | ||
|  | ac175a4cbf | ||
|  | f53d1a69bc | ||
|  | adaa9cad97 | ||
|  | 7201ec7790 | ||
|  | 113525a7d7 | ||
|  | d6e62e85d2 | ||
|  | ee153445f0 | ||
|  | 50b43a0f41 | ||
|  | 25c26a6620 | ||
|  | 0438b9d69a | ||
|  | 90c01f24fe | ||
|  | dc0f442247 | ||
|  | 017f4d20c7 | ||
|  | c021ce7851 | ||
|  | 93ab9882c3 | ||
|  | a0477c6212 | ||
|  | 6780e78a6b | ||
|  | d8871029eb | ||
|  | 6799ce187b | ||
|  | 2b6b2578be | ||
|  | 1b0a9fd291 | ||
|  | 43e070dd8b | ||
|  | b0d18119ff | ||
|  | be05f8163a | ||
|  | d6cdf95d83 | ||
|  | 2256a9127f | ||
|  | e6507a80be | ||
|  | 8411e566b4 | ||
|  | 40854f4179 | ||
|  | 41062d0262 | ||
|  | 58c882a860 | ||
|  | 789d156972 | ||
|  | 19c24da036 | ||
|  | 929a025f53 | ||
|  | 6a7c289305 | ||
|  | b65a4a7dcb | ||
|  | 39b2fffe83 | ||
|  | efb913acff | ||
|  | 79e756a2f7 | ||
|  | b08968e644 | ||
|  | dff497d2fa | ||
|  | 38de742ca4 | ||
|  | e0d3401bc4 | ||
|  | aae2b5a94d | ||
|  | a5bd38fc19 | ||
|  | 931b8f065e | ||
|  | f7885e488f | ||
|  | 8122db69ee | ||
|  | ab13d4919d | ||
|  | 1d955fbf1f | ||
|  | 8af25a2003 | ||
|  | 12eb6a25ec | ||
|  | 77ced087a1 | ||
|  | 983475d0c1 | ||
|  | 70b65c05e5 | 
							
								
								
									
										210
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										210
									
								
								ChangeLog
									
									
									
									
									
								
							| @@ -1,213 +1,3 @@ | ||||
| 2003-10-21  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	* lib/read.c: (glibtop_read_l): | ||||
| 	* lib/read_data.c: (glibtop_read_data_l): | ||||
| 	* lib/write.c: (glibtop_write_l):  | ||||
| 	reverted string freeze breakage | ||||
|  | ||||
| 2003-10-20  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	* lib/read.c: (glibtop_read_l): | ||||
| 	* lib/read_data.c: (glibtop_read_data_l): | ||||
| 	* lib/write.c: (glibtop_write_l): apply patch for ngettext support | ||||
| 	by Christian Neumair <chris@gnome-de.org> | ||||
|  | ||||
| 2003-10-20  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	* src/inodedb/Makefile.am: link to libgtop_suid_common-2.0.la | ||||
| 	(Closes: #107990) | ||||
|  | ||||
| 2003-10-20  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	* configure.in: make it compile | ||||
|  | ||||
| 2003-10-19  Carlos Perelló Marín <carlos@gnome.org> | ||||
|  | ||||
| 	* support/*: Reverted libgtop changes. It's a common module | ||||
| 	and I should not modify it. | ||||
| 	* Added/removed files. Now the move should be done. | ||||
|  | ||||
| 2003-10-19  Carlos Perelló Marín <carlos@gnome.org> | ||||
|  | ||||
| 	* libgtop-GNOME-2-0-branch moved to HEAD. | ||||
|  | ||||
| 2003-09-30  Laurent Dhima  <laurenti@alblinux.net> | ||||
|  | ||||
| 	* configure.in: Added "sq" to ALL_LINGUAS. | ||||
|  | ||||
| 2003-09-17  Fatih Demir <kabalak@gtranslator.org> | ||||
|  | ||||
| 	* configure.in: Added "ta" (Tamil) to the languages' list. | ||||
|  | ||||
| 2003-09-13  Carlos Perelló Marín <carlos@gnome.org> | ||||
|  | ||||
| 	* configure.in (ALL_LINGUAS):  Removed es_ES. | ||||
|  | ||||
| 2003-09-08  Kevin Vandersloot | ||||
|  | ||||
| 	* configure.in: release 2.0.5 | ||||
|  | ||||
| 2003-09-06  Taneem Ahmed  <taneem@bengalinux.org> | ||||
|  | ||||
| 	* configure.in: Added "bn" to ALL_LINGUAS. | ||||
|  | ||||
| 2003-08-24  Kevin Vandersloot | ||||
|  | ||||
| 	* configure.in: release 2.0.4 | ||||
|  | ||||
| 2003-08-13  Guntupalli Karunakar  <karunakar@freedomink.org> | ||||
|  | ||||
| 	* configure.in: Added "hi" (Hindi) in ALL_LINGUAS. | ||||
|  | ||||
| 2003-08-13  Andrew Sobala  <aes@gnome.org> | ||||
|  | ||||
| 	* configure.in: release 2.0.3 | ||||
|  | ||||
| 2003-08-09  Dafydd Harries  <daf@parnassus.ath.cx> | ||||
|  | ||||
| 	* configure.in: Added "cy" (Welsh) to ALL_LINGUAS. | ||||
|  | ||||
| 2003-08-03  Malcolm Tredinnick <malcolm@commsecure.com.au> | ||||
|  | ||||
| 	* Makefile.am: Change subdirectory build order so that | ||||
| 	'distclean' target work (and other targets remain working). | ||||
| 	Fixes bug #84622. | ||||
|  | ||||
| 2003-06-10  Kjartan Maraas  <set EMAIL_ADDRESS environment variable> | ||||
|  | ||||
| 	* libgtop-2.0.pc.in: Fix missing build flags. Patch from | ||||
| 	Julio Merino. Fixes bug #103086. | ||||
| 	* sysdeps/linux/mem.c: (glibtop_get_mem_s): Fix memory calculation | ||||
| 	under Linux. Patch from <rwahl@gmx.de>. Fixes bug #68626. | ||||
|  | ||||
| 2003-06-10  Kjartan Maraas  <kmaraas@gnome.org> | ||||
|  | ||||
| 	* sysdeps/freebsd/glibtop_machine.h: | ||||
| 	* sysdeps/kernel/glibtop_private.h: | ||||
| 	* sysdeps/solaris/glibtop_machine.h: | ||||
| 	* sysdeps/solaris/glibtop_private.h: Comment out text after | ||||
| 	#endif to make some compilers happy. | ||||
|  | ||||
| 2003-05-11  Andrew Sobala  <aes@gnome.org> | ||||
|  | ||||
| 	* configure.in: release 2.0.2 | ||||
|  | ||||
| 2003-05-10  Danilo Šegan  <dsegan@gmx.net> | ||||
|  | ||||
| 	* configure.in: Added "sr" and "sr@Latn" to ALL_LINGUAS. | ||||
|  | ||||
| 2003-04-17  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* configure.in: Added "mk" to ALL_LINGUAS. | ||||
|  | ||||
| 2003-03-13  Christian Rose  <menthos@menthos.com> | ||||
|  | ||||
| 	* configure.in: Added "ml" to ALL_LINGUAS. | ||||
|  | ||||
| 2003-03-10  Roozbeh Pournader  <roozbeh@sharif.edu> | ||||
|  | ||||
| 	* configure.in: Added "fa" to ALL_LINGUAS. | ||||
|  | ||||
| 2003-03-08  Gil "Dolfin" Osher <dolfin@rpg.org.il> | ||||
|  | ||||
| 	* configure.in: Added he to ALL_LINGUAS. | ||||
|  | ||||
| 2003-02-25  T?µivo Leedj?¤rv  <toivo@linux.ee> | ||||
|  | ||||
| 	* configure.in: Added et to ALL_LINGUAS. | ||||
|  | ||||
| 2003-02-16  Mohammad DAMT  <mdamt@bisnisweb.com> | ||||
|  | ||||
| 	* po/id.po: Added Indonesian translation | ||||
| 	* configure.in: Added "id" to ALL_LINGUAS | ||||
|  | ||||
| 2003-01-31  James Henstridge  <james@daa.com.au> | ||||
|  | ||||
| 	* acinclude.m4 (GNOME_SUPPORT_CHECKS): use AC_LIBOBJ() to set | ||||
| 	LIBOBJS variable, since newer autoconf's barf on direct access. | ||||
| 	This also takes care of setting LTLIBOBJS for us. | ||||
|  | ||||
| 2003-01-29  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* configure.in: Added ar to ALL_LINGUAS | ||||
|  | ||||
| 2003-01-25  Alessio Frusciante  <algol@firenze.linux.it> | ||||
|  | ||||
| 	* configure.in: Added "it" (Italian) to ALL_LINGUAS. | ||||
|  | ||||
| 2003-01-23  Marius Andreiana <marius galuna.ro> | ||||
|  | ||||
| 	* configure.in: Added "ro" to ALL_LINGUAS | ||||
|  | ||||
| 2003-01-22  Christian Rose  <menthos@menthos.com> | ||||
|  | ||||
| 	* configure.in: Added "mn" to ALL_LINGUAS. | ||||
|  | ||||
| 2003-01-16  Daniel Yacob <locales@geez.org> | ||||
|  | ||||
| 	* configure.in: added am to ALL_LINGUAS | ||||
| 	 | ||||
| 2003-01-12  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	* configure.in: release 2.0.1 | ||||
|  | ||||
| 2002-12-30  Bastien Nocera <hadess@hadess.net> | ||||
|  | ||||
| 	* Added sysdeps/aix directory that was missing | ||||
|  | ||||
| 2002-10-08  Laurent Vivier <Laurent.Vivier@bull.net> | ||||
|  | ||||
| 	* Framework for AIX support | ||||
|  | ||||
| 2002-08-07  Vincent Berger <Vincent.Berger@ext.bull.net>  | ||||
|  | ||||
| 	* support/: Add alloca management for AIX | ||||
| 	* configure.in: correct checking for nm | ||||
|  | ||||
| 2002-11-03  Dmitry G. Mastrukov  <dmitry@taurussoft.org> | ||||
|  | ||||
| 	* configure.in: Added Belarusian to ALL_LINGUAS | ||||
|  | ||||
| 2002-09-26  Stanislav Brabec  <sbrabec@suse.cz> | ||||
|  | ||||
| 	* configure.in: Added cs to ALL_LINGUAS. | ||||
|  | ||||
| 2002-09-26  jacob berkman  <jacob@ximian.com> | ||||
|  | ||||
| 	* configure.in (ALL_LINGUAS): remove cs until the file actually | ||||
| 	gets added | ||||
|  | ||||
| 2002-09-26  Stanislav Brabec  <sbrabec@suse.cz> | ||||
|  | ||||
| 	* configure.in: Added cs to ALL_LINGUAS. | ||||
|  | ||||
| 2002-08-20  Peteris Krisjanis <peteris.krisjanis@os.lv> | ||||
|  | ||||
| 	* configure.in: (ALL_LINGUAS) Added Latvian (lv). | ||||
|  | ||||
| 2002-06-25  Yanko Kaneti <yaneti@declera.com> | ||||
|  | ||||
| 	* configure.in: (ALL_LINGUAS) Added Bulgarian (bg). | ||||
|  | ||||
| 2002-05-10  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	* configure.in: release 2.0.0 | ||||
|  | ||||
| 2002-05-28  Carlos Perello Marin <carlos@gnome-db.org> | ||||
|  | ||||
| 	* configure.in (ALL_LINGUAS): Removed all es_* and added only es_ES. | ||||
|  | ||||
| 2002-05-08  Pablo Saratxaga  <pablo@mandrakesoft.com> | ||||
|  | ||||
| 	* configure.in: Added Vietnamese (vi) to ALL_LINGUAS | ||||
|  | ||||
| 2002-03-12  James Henstridge  <james@daa.com.au> | ||||
|  | ||||
| 	* acinclude.m4 (LIBGTOP_HEACKER_TESTS): AM_CONDITIONAL() | ||||
| 	statements can't be conditionally executed (automake compat fix). | ||||
| 	(GNOME_LIBGTOP_SYSDEPS): move the conditional here so that it is | ||||
| 	always executed. | ||||
|  | ||||
| 2002-02-10  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	* configure.in: bump version | ||||
|   | ||||
| @@ -1,2 +0,0 @@ | ||||
| Email: martin@home-of-linux.org | ||||
| Email: dave@srce.hr | ||||
| @@ -10,7 +10,7 @@ if BUILD_GNOME_SUPPORT | ||||
| support = support | ||||
| endif | ||||
|  | ||||
| SUBDIRS = . po $(support) misc include sysdeps lib src \ | ||||
| SUBDIRS = po $(support) misc include sysdeps lib src \ | ||||
| 	  $(examples_SUBDIRS) doc | ||||
|  | ||||
| libgtopinclude_HEADERS = glibtop.h | ||||
|   | ||||
| @@ -1,50 +0,0 @@ | ||||
| RELEASE NOTES FOR LIBGTOP 1.1.2 | ||||
| =============================== | ||||
|  | ||||
| This is a snapshot release for Solaris users of October GNOME. It contains | ||||
| a first version of the Solaris port of LibGTop which works at least on | ||||
| Solaris 7. | ||||
|  | ||||
| Please use LibGTop 1.0.x if you're not on a Solaris system | ||||
| (look at the README file for details). | ||||
|  | ||||
| IMPORTANT CHANGES SINCE 1.0: | ||||
| ---------------------------- | ||||
|  | ||||
| * All `glibtop_get_<feature>_* ()' and all `glibtop_init_<feature>_* ()' | ||||
|   functions now have an `int' return value and return 0 on success and -1 | ||||
|   on failure. | ||||
|  | ||||
| * glibtop_cpu: Added `xcpu_flags' | ||||
|  | ||||
| * glibtop_proc_state: Changed `state' from char to unsigned and added | ||||
|     GLIBTOP_PROCESS_RUNNING, GLIBTOP_PROCESS_INTERRUPTIBLE, | ||||
|     GLIBTOP_PROCESS_UNINTERRUPTIBLE,  GLIBTOP_PROCESS_ZOMBIE, | ||||
|     GLIBTOP_PROCESS_STOPPED, GLIBTOP_PROCESS_SWAPPING constants for it. | ||||
|  | ||||
| * `GLIBTOP_MOUNTENTRY_LEN' and `GLIBTOP_MAX_GROUPS' are now defined in | ||||
|   <glibtop/limits.h> | ||||
|  | ||||
| * Removed the `GLIBTOP_SYSDEPS_FEATURES' and `GLIBTOP_SYSDEPS_POINTER_SIZE' | ||||
|   constants from <glibtop/sysdeps.h> and let numbering start at zero for | ||||
|   `GLIBTOP_SYSDEPS_CPU'. | ||||
|  | ||||
| OTHER CHANGES SINCE 1.0: | ||||
| ----------------------- | ||||
|  | ||||
| * Use G_GNUC_UNUSED in <glibtop/error.h> to avoid compiler warnings. | ||||
|  | ||||
| * The `libgtop-config' script now accepts `--cflags', `--libs' and | ||||
|   `--extra-libs' parameter. | ||||
|  | ||||
| * The libraries are now called -lgtop-1.1 etc. so you can use 1.0.x and | ||||
|   1.1.x in parallel. | ||||
|  | ||||
| CHANGES SINCE 1.0 MAINLY INTERESTING FOR DEVELOPERS: | ||||
| --------------------------------------------------- | ||||
|  | ||||
| * We create a `glibtop-config.h' now which gets included from <glibtop.h> | ||||
|   when we're _IN_LIBGTOP. It contains things such as `u_int64_t' etc. | ||||
|  | ||||
| October 1999 | ||||
| Martin Baulig | ||||
							
								
								
									
										42
									
								
								acinclude.m4
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								acinclude.m4
									
									
									
									
									
								
							| @@ -477,8 +477,8 @@ fi | ||||
|  | ||||
| if test -n "$list_mounted_fs" && test $space != no; then | ||||
| DF_PROG="df" | ||||
| # AC_LIBOBJ(fsusage) | ||||
| # AC_LIBOBJ(mountlist) | ||||
| # LIBOBJS="$LIBOBJS fsusage.o" | ||||
| # LIBOBJS="$LIBOBJS mountlist.o" | ||||
| fi | ||||
|  | ||||
| # Check for SunOS statfs brokenness wrt partitions 2GB and larger. | ||||
| @@ -517,9 +517,10 @@ AC_DEFUN([GNOME_SUPPORT_CHECKS],[ | ||||
|   # this should go away soon | ||||
|   need_gnome_support=yes | ||||
|  | ||||
|   AC_CHECK_FUNCS(getopt_long,, | ||||
|    [AC_LIBOBJ(getopt) | ||||
|     AC_LIBOBJ(getopt1)]) | ||||
|   save_LIBOBJS="$LIBOBJS" | ||||
|   LIBOBJS= | ||||
|  | ||||
|   AC_CHECK_FUNCS(getopt_long,,LIBOBJS="$LIBOBJS getopt.o getopt1.o") | ||||
|  | ||||
|   # for `scandir' | ||||
|   AC_HEADER_DIRENT | ||||
| @@ -544,7 +545,7 @@ AC_DEFUN([GNOME_SUPPORT_CHECKS],[ | ||||
|   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)) | ||||
|   AC_CHECK_FUNCS(realpath,,LIBOBJS="$LIBOBJS canonicalize.o") | ||||
|  | ||||
|   # to include `error.c' error.c has some HAVE_* checks | ||||
|   AC_CHECK_FUNCS(vprintf doprnt strerror_r) | ||||
| @@ -554,8 +555,9 @@ AC_DEFUN([GNOME_SUPPORT_CHECKS],[ | ||||
|               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) | ||||
|    LIBOBJS="$LIBOBJS error.o" | ||||
|   fi | ||||
|   AC_SUBST(LIBOBJS)dnl | ||||
|    | ||||
|   # This is required if we declare setreuid () and setregid (). | ||||
|   AC_TYPE_UID_T | ||||
| @@ -570,8 +572,13 @@ AC_DEFUN([GNOME_SUPPORT_CHECKS],[ | ||||
| #endif | ||||
| ]) | ||||
|  | ||||
|   # Turn our LIBOBJS into libtool objects.  This is gross, but it | ||||
|   # requires changes to autoconf before it goes away. | ||||
|   LTLIBOBJS=`echo "$LIBOBJS" | sed 's/\.o/.lo/g'` | ||||
|   AC_SUBST(need_gnome_support) | ||||
|   AC_SUBST(LTLIBOBJS) | ||||
|  | ||||
|   LIBOBJS="$save_LIBOBJS" | ||||
|   AM_CONDITIONAL(BUILD_GNOME_SUPPORT, test "$need_gnome_support" = yes) | ||||
| ]) | ||||
|  | ||||
| @@ -591,11 +598,11 @@ dnl                              if true; defines conditional 'NEED_LIBGTOP'. | ||||
| AC_DEFUN([LIBGTOP_HACKER_TESTS],[ | ||||
| 	AC_REQUIRE([AC_CANONICAL_HOST]) | ||||
|  | ||||
| 	AC_ARG_WITH(linux-table, | ||||
|       [  --with-linux-table      Use the table () function from Martin Baulig], | ||||
| 	[linux_table="$withval"],[linux_table=auto]) | ||||
| 	case "$host_os" in | ||||
| 	linux*) | ||||
| 	  AC_ARG_WITH(linux-table, | ||||
| 	  [  --with-linux-table      Use the table () function from Martin Baulig],[ | ||||
| 	  linux_table="$withval"],[linux_table=auto]) | ||||
| 	  if test $linux_table = yes ; then | ||||
| 	    AC_CHECK_HEADER(linux/table.h, linux_table=yes, linux_table=no) | ||||
| 	  elif test $linux_table = auto ; then | ||||
| @@ -631,6 +638,7 @@ main (void) | ||||
| 	  if test $linux_table = yes ; then | ||||
| 	    AC_DEFINE(HAVE_LINUX_TABLE) | ||||
| 	  fi | ||||
| 	  AM_CONDITIONAL(LINUX_TABLE, test $linux_table = yes) | ||||
| 	  ;; | ||||
| 	esac | ||||
| ]) | ||||
| @@ -654,11 +662,9 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[ | ||||
|  | ||||
| 	AM_CONDITIONAL(HACKER_MODE, test x"$hacker_mode" = xyes) | ||||
|  | ||||
| 	linux_table=auto | ||||
| 	if test x$hacker_mode = xyes ; then | ||||
| 	  LIBGTOP_HACKER_TESTS | ||||
| 	fi | ||||
| 	AM_CONDITIONAL(LINUX_TABLE, test $linux_table = yes) | ||||
|  | ||||
| 	AC_ARG_WITH(libgtop-smp, | ||||
| 	[  --with-libgtop-smp      Enable SMP support (default-auto)],[ | ||||
| @@ -670,9 +676,6 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[ | ||||
| 	  linux*) | ||||
| 	    libgtop_smp=yes | ||||
| 	    ;; | ||||
| 	  aix*) | ||||
| 	    libgtop_smp=yes | ||||
| 	    ;; | ||||
| 	  *) | ||||
| 	    libgtop_smp=no | ||||
| 	    ;; | ||||
| @@ -712,13 +715,6 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[ | ||||
| 	  libgtop_need_server=yes | ||||
| 	  libgtop_postinstall='chgrp sys $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server' | ||||
| 	  ;; | ||||
|         aix*) | ||||
| 	  libgtop_sysdeps_dir=aix | ||||
| 	  libgtop_use_machine_h=yes | ||||
| 	  libgtop_need_server=yes | ||||
| 	  libgtop_have_sysinfo=yes | ||||
| 	  libgtop_postinstall='chgrp system $(bindir)/libgtop_server && chmod g+s $(bindir)/libgtop_server2' | ||||
|           ;; | ||||
| 	*) | ||||
| 	  if test x$hacker_mode = xyes ; then | ||||
| 	    case "$host_os" in | ||||
| @@ -877,4 +873,4 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[ | ||||
| 	AM_CONDITIONAL(NEED_LIBGTOP, test x$libgtop_need_server = xyes) | ||||
| ]) | ||||
|  | ||||
|    | ||||
|    | ||||
| @@ -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,42 +0,0 @@ | ||||
| 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 *, u_int64_t, 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, | ||||
| 	      u_int64_t features, const char **backend_args) | ||||
| { | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| static int | ||||
| _close_common (glibtop_server *server, glibtop_backend *backend, | ||||
| 	       void *closure) | ||||
| { | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| @@ -1,37 +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/xmalloc.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,85 +0,0 @@ | ||||
| 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,85 +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 \ | ||||
| 	@LIBSUPPORT@ | ||||
|  | ||||
| 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 *, u_int64_t, 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, | ||||
| 	      u_int64_t features, const char **backend_args) | ||||
| { | ||||
|     backend_server_private *priv; | ||||
|  | ||||
|     priv = glibtop_calloc_r (server, 1, 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,66 +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/xmalloc.h> | ||||
| #include <glibtop/glibtop-backend.h> | ||||
| #include <glibtop/glibtop-backend-info.h> | ||||
|  | ||||
| typedef struct _backend_server_private backend_server_private; | ||||
|  | ||||
| struct _backend_server_private | ||||
| { | ||||
|     u_int64_t 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,100 +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; | ||||
|     glibtop_response resp; | ||||
| #if 0 | ||||
|     int retval; | ||||
| #endif | ||||
|  | ||||
|     memset (&cmnd, 0, sizeof (glibtop_command)); | ||||
|     memset (&resp, 0, sizeof (glibtop_response)); | ||||
|  | ||||
|     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 = glibtop_malloc_r (server, 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> | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
|  | ||||
| @@GLIBTOP_COMMAND_CONSTANTS@@ | ||||
|  | ||||
| #define _GLIBTOP_PARAM_SIZE		16 | ||||
|  | ||||
| typedef struct _glibtop_command		glibtop_command; | ||||
| typedef struct _glibtop_response	glibtop_response; | ||||
|  | ||||
| struct _glibtop_command | ||||
| { | ||||
|     u_int64_t	command; | ||||
|     u_int64_t	param_size, send_size, data_size; | ||||
|     char	parameter [_GLIBTOP_PARAM_SIZE]; | ||||
| }; | ||||
|  | ||||
| struct _glibtop_response | ||||
| { | ||||
|     int retval; | ||||
|     int glibtop_errno; | ||||
|     u_int64_t recv_size, data_size; | ||||
| }; | ||||
|  | ||||
| END_LIBGTOP_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,386 +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 '#include <glibtop/xmalloc.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 = glibtop_malloc_r (server, _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 = glibtop_malloc_r (server, _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 .= "glibtop_malloc_r (server, _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 .= "glibtop_malloc_r (server, _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 = "\tglibtop_free_r (server, _LIBGTOP_SEND_buf);\n"; | ||||
|       $send_buf_free_code .= "\tglibtop_free_r (server, _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 = glibtop_calloc_r (server, 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] = glibtop_strdup_r (server, _LIBGTOP_ARRAY_ptr + *_LIBGTOP_ARRAY_off_ptr++);\n"; | ||||
|       $call_code .= "\tptrlist [array->number] = NULL;\n\n"; | ||||
|       $call_code .= "\tglibtop_free_r (server, 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 = glibtop_malloc_r (priv->server, size); | ||||
| 	 | ||||
|     ret = read (priv->input [0], ptr, size); | ||||
|  | ||||
|     if (ret < 0) | ||||
| 	glibtop_error_io_r (priv->server, "read data %d bytes"); | ||||
|  | ||||
|     return ptr; | ||||
| } | ||||
| @@ -1,190 +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 = glibtop_calloc_r | ||||
| 	    (server, 1, 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 = glibtop_malloc_r (server, 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,85 +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/error.h> | ||||
|  | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/union.h> | ||||
| #include <glibtop/xmalloc.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" | ||||
|  | ||||
| BEGIN_LIBGTOP_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; | ||||
|  | ||||
| END_LIBGTOP_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,60 +0,0 @@ | ||||
| 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 *, u_int64_t, 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, | ||||
| 	       u_int64_t 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,37 +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/xmalloc.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 ''; | ||||
|  | ||||
							
								
								
									
										30
									
								
								configure.in
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								configure.in
									
									
									
									
									
								
							| @@ -6,13 +6,13 @@ AC_INIT(copyright.txt) | ||||
| AM_CONFIG_HEADER(config.h) | ||||
| AC_CANONICAL_SYSTEM | ||||
|  | ||||
| LIBGTOP_MAJOR_VERSION=2 | ||||
| LIBGTOP_MINOR_VERSION=0 | ||||
| LIBGTOP_MICRO_VERSION=5 | ||||
| LIBGTOP_MAJOR_VERSION=1 | ||||
| LIBGTOP_MINOR_VERSION=90 | ||||
| LIBGTOP_MICRO_VERSION=2 | ||||
| LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION | ||||
| AM_INIT_AUTOMAKE(libgtop, $LIBGTOP_VERSION) | ||||
| LIBGTOP_INTERFACE_AGE=5 | ||||
| LIBGTOP_BINARY_AGE=5 | ||||
| LIBGTOP_INTERFACE_AGE=2 | ||||
| LIBGTOP_BINARY_AGE=2 | ||||
|  | ||||
| # you can set this to `-snap' for instance to create | ||||
| # a `libgtop-1.x.y-snap.tar.gz' tarball. | ||||
| @@ -70,8 +70,10 @@ AC_CHECK_TOOL(CC,gcc) | ||||
| AC_CHECK_TOOL(RANLIB,ranlib) | ||||
| AC_CHECK_TOOL(AS,as) | ||||
| AC_CHECK_TOOL(AR,ar) | ||||
| AC_CHECK_TOOL(NM,nm) | ||||
|  | ||||
| export CC CXX RANLIB LD AS AR | ||||
| NM=`which $NM` | ||||
| export CC CXX RANLIB LD AS AR NM | ||||
|  | ||||
| AC_PROG_INSTALL | ||||
| AC_PROG_LN_S | ||||
| @@ -105,7 +107,6 @@ dnl   else | ||||
| dnl     GNOME_SUPPORT_CHECKS | ||||
| dnl   fi | ||||
| dnl fi | ||||
|  | ||||
| AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false) | ||||
|  | ||||
| AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes) | ||||
| @@ -177,7 +178,7 @@ AC_SUBST(guile_subdirs) | ||||
|  | ||||
| AM_PROG_LIBTOOL | ||||
|  | ||||
| GLIB_REQUIRED=2.0.0 | ||||
| GLIB_REQUIRED=1.3.10 | ||||
|  | ||||
| PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED) | ||||
| AC_SUBST(GLIB_CFLAGS) | ||||
| @@ -221,10 +222,6 @@ AC_CHECK_FUNCS(dlerror,,) | ||||
| LIBS="$oLIBS" | ||||
| AC_SUBST(DL_LIB) | ||||
|  | ||||
| dnl AIX | ||||
| AH_TEMPLATE(HAVE_VMGETINFO, [Define to 1 if you have the `vmgetinfo' function in libperfstat]) | ||||
| AC_CHECK_LIB(perfstat, vmgetinfo, AC_DEFINE(HAVE_VMGETINFO)) | ||||
|  | ||||
| dnl Solaris | ||||
| AC_CHECK_LIB(kstat, kstat_open) | ||||
| AC_CHECK_FUNCS(getloadavg swapctl) | ||||
| @@ -285,7 +282,8 @@ AC_TYPE_SIGNAL | ||||
| AC_FUNC_STRFTIME | ||||
| AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname) | ||||
|  | ||||
| ALL_LINGUAS="am ar az be bg bn ca cs cy da de el es et fa fi fr ga gl he hi hu id it ja ko lv mk ml mn ms nl nn no pl pt pt_BR ro ru sk sl sq sr sr@Latn sv ta tr uk vi zh_CN zh_TW" | ||||
| dnl ## all 'es_??' are only needed for format numbers different of 'es' | ||||
| ALL_LINGUAS="az ca da de el es es_DO es_GT es_HN es_MX es_PA es_PE es_SV fi fr ga gl hu ja ko ms nl nn no pl pt pt_BR ru sk sl sv tr uk zh_CN zh_TW" | ||||
|  | ||||
| GETTEXT_PACKAGE=libgtop-2.0 | ||||
| AC_SUBST(GETTEXT_PACKAGE) | ||||
| @@ -374,7 +372,7 @@ LIBGTOP_INCS="$LIBGTOP_INCS $SUPPORTINCS $GLIB_CFLAGS" | ||||
| LIBGTOP_GUILE_LIBS="$LIBGTOP_LIBS" | ||||
| LIBGTOP_GUILE_INCS="$LIBGTOP_INCS" | ||||
| LIBGTOP_BINDIR='$(bindir)' | ||||
| LIBGTOP_SERVER='$(bindir)/libgtop_server2' | ||||
| LIBGTOP_SERVER='$(bindir)/libgtop_server' | ||||
|  | ||||
| sysdeps_dir="$libgtop_sysdeps_dir" | ||||
| AC_SUBST(sysdeps_dir) | ||||
| @@ -443,7 +441,7 @@ AC_SUBST(LIBGTOP_SERVER) | ||||
|  | ||||
| if test x$libgtop_need_server = xyes ; then | ||||
|    sysdeps_suid_lib="\$(top_builddir)/sysdeps/\$(sysdeps_dir)/libgtop_sysdeps_suid-2.0.la" | ||||
|    server_programs='libgtop_server2' | ||||
|    server_programs='libgtop_server' | ||||
| else | ||||
|    sysdeps_suid_lib= | ||||
|    server_programs= | ||||
| @@ -471,7 +469,6 @@ sysdeps/linux/Makefile | ||||
| sysdeps/kernel/Makefile | ||||
| sysdeps/freebsd/Makefile | ||||
| sysdeps/solaris/Makefile | ||||
| sysdeps/aix/Makefile | ||||
| src/Makefile | ||||
| src/daemon/Makefile | ||||
| src/inodedb/Makefile | ||||
| @@ -479,6 +476,5 @@ lib/Makefile | ||||
| examples/Makefile | ||||
| doc/Makefile | ||||
| support/Makefile | ||||
| support/gnome-support-2.0.pc | ||||
| libgtop-2.0.pc | ||||
| ]) | ||||
|   | ||||
							
								
								
									
										5
									
								
								debian/libgtop2.README.Debian
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								debian/libgtop2.README.Debian
									
									
									
									
										vendored
									
									
								
							| @@ -1,5 +0,0 @@ | ||||
|  | ||||
| The Debian package of libgtop, a GNOME library. | ||||
|  | ||||
| --  | ||||
| Ian Lynagh <ian@lynagh.demon.co.uk> | ||||
							
								
								
									
										12
									
								
								debian/libgtop2.copyright
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								debian/libgtop2.copyright
									
									
									
									
										vendored
									
									
								
							| @@ -1,12 +0,0 @@ | ||||
|  | ||||
| libgtop is released under the GPL. | ||||
| On Debian GNU/Linux systems, the complete text of the GNU General | ||||
| Public License can be found in /usr/share/common-licenses/GPL | ||||
|  | ||||
| Original authors: Martin Baulig <martin@home-of-linux.org> | ||||
|                   Drazen Kacar <dave@srce.hr> | ||||
|  | ||||
| Originally Debianised by Jim Pick <jim@jimpick.com> | ||||
| Then re-Debianised in October 1998 by Martin Schulze | ||||
| <joey@finlandia.infodrom.north.de> before being taken over by Ian Lynagh | ||||
| <ian@lynagh.demon.co.uk> in November 1998. | ||||
							
								
								
									
										7
									
								
								debian/libgtop2.docs
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								debian/libgtop2.docs
									
									
									
									
										vendored
									
									
								
							| @@ -1,7 +0,0 @@ | ||||
| RELNOTES-0.25 | ||||
| RELNOTES-1.0 | ||||
| RELNOTES-1.1.x | ||||
| NEWS | ||||
| AUTHORS | ||||
| TODO | ||||
| debian/changelog | ||||
							
								
								
									
										2
									
								
								debian/libgtop2.files.in
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								debian/libgtop2.files.in
									
									
									
									
										vendored
									
									
								
							| @@ -1,2 +0,0 @@ | ||||
| @PREFIX@/lib/libgtop*-1.1.so.*.* | ||||
| @PREFIX@/lib/libgtop*-1.1.so.* | ||||
| @@ -1,9 +1,3 @@ | ||||
| 2002-03-12  James Henstridge  <james@daa.com.au> | ||||
|  | ||||
| 	* Makefile.am (MAKEINFO): using += seems to screw up the build | ||||
| 	with newer automakes.  Set it explicitly (using @MAKEINFO@) seems | ||||
| 	to be compatible with both. | ||||
|  | ||||
| 2001-11-26  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* libgtop.texi, Makefile.am: Renamed to libgtop2.texi | ||||
|   | ||||
| @@ -4,7 +4,7 @@ libgtop2_TEXINFOS	= libgtop2.texi about.texi reference.texi \ | ||||
| 			  auto-macros.texi version.texi main.texi \ | ||||
| 			  white-paper.texi | ||||
|  | ||||
| MAKEINFO		= @MAKEINFO@ -I @libgtop_top_builddir@/doc | ||||
| MAKEINFO		+= -I @libgtop_top_builddir@/doc | ||||
|  | ||||
| EXTRA_DIST		= auto-macros.texi.in | ||||
|  | ||||
|   | ||||
| @@ -1,107 +0,0 @@ | ||||
| @node LibGTop Internals, , Reference Manual, Top | ||||
| @chapter LibGTop Internals | ||||
|  | ||||
| @menu | ||||
| * General Internals::           General Internals | ||||
| * Sysdeps Internals::           Sysdeps Internals | ||||
| @end menu | ||||
|  | ||||
| @node General Internals, Sysdeps Internals, LibGTop Internals, LibGTop Internals | ||||
| @section General Internals | ||||
|  | ||||
| @menu | ||||
| * glibtop::                     The server structure | ||||
| @end menu | ||||
|  | ||||
| @node glibtop,  , General Internals, General Internals | ||||
| @subsection The server structure - @code{glibtop} | ||||
|  | ||||
| @example | ||||
| @cartouche | ||||
| typedef struct _glibtop         glibtop; | ||||
|  | ||||
| struct _glibtop | ||||
| @{ | ||||
|         unsigned flags; | ||||
|         unsigned method; | ||||
|         unsigned error_method; | ||||
| #ifdef HAVE_GLIBTOP_MACHINE_H | ||||
|         glibtop_machine machine; | ||||
| #endif | ||||
|         int input [2]; | ||||
|         int output [2]; | ||||
|         int socket; | ||||
|         int ncpu; | ||||
|         unsigned long os_version_code; | ||||
|         const char *name; | ||||
|         const char *server_command; | ||||
|         const char *server_host; | ||||
|         const char *server_user; | ||||
|         const char *server_rsh; | ||||
|         unsigned long features; | ||||
|         unsigned long server_port; | ||||
|         glibtop_sysdeps sysdeps; | ||||
|         glibtop_sysdeps required; | ||||
|         glibtop_sysdeps wanted; | ||||
|         pid_t pid; | ||||
| @}; | ||||
| @end cartouche | ||||
| @end example | ||||
|  | ||||
| @node Sysdeps Internals,  , General Internals, LibGTop Internals | ||||
| @section Sysdeps Internals | ||||
|  | ||||
| @menu | ||||
| * glibtop_open_s::              Non-privileged initializations | ||||
| * glibtop_close_s::             Non-privileged cleanups | ||||
| @end menu | ||||
|  | ||||
| @node glibtop_open_s, glibtop_close_s, Sysdeps Internals, Sysdeps Internals | ||||
| @subsection glibtop_open_s | ||||
|  | ||||
| This function is used in the non-suid sysdeps library @samp{-lgtop_sysdeps} to | ||||
| initialize a server. It should do all initializations that do not need any | ||||
| privileges. | ||||
|  | ||||
| @example | ||||
| @cartouche | ||||
| void | ||||
| glibtop_open_s (glibtop *server, const char *program_name, | ||||
| 		const unsigned long features, | ||||
| 		const unsigned flags); | ||||
| @end cartouche | ||||
| @end example | ||||
|  | ||||
| @table @code | ||||
| @item server | ||||
| Pointer to the @code{glibtop} server structure. | ||||
| @item program_name | ||||
| Name of the calling program; the implementation will usually | ||||
| set @samp{server->name} to this so it'll be used as the program | ||||
| name in error messages. | ||||
| @end table | ||||
|  | ||||
| Typically, this function will set @code{server->name}, @code{server->ncpu} and | ||||
| @code{server->os_version_code} and initialize any of the @code{server->machine} | ||||
| fields which do not need any privileges. | ||||
|  | ||||
| It is normally implemented in @file{open.c} in the sysdeps directory. | ||||
|  | ||||
| @node glibtop_close_s,  , glibtop_open_s, Sysdeps Internals | ||||
| @subsection glibtop_close_s | ||||
|  | ||||
| This function is used in the non-suid sysdeps library @samp{-lgtop_sysdeps} to | ||||
| clean-up a server when it's no longer used. | ||||
|  | ||||
| It must free all resources that were allocated in @code{glibtop_open_s}. | ||||
|  | ||||
| @example | ||||
| @cartouche | ||||
| void | ||||
| glibtop_close_s (glibtop *server); | ||||
| @end cartouche | ||||
| @end example | ||||
|  | ||||
| It is normally implemented in @file{close.c} in the sysdeps directory, but may | ||||
| be empty. | ||||
|  | ||||
| @@ -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)> | ||||
| @@ -22,7 +22,6 @@ | ||||
| */ | ||||
|  | ||||
| #include <locale.h> | ||||
| #include <math.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
|   | ||||
| @@ -22,7 +22,6 @@ | ||||
| */ | ||||
|  | ||||
| #include <locale.h> | ||||
| #include <math.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/cpu.h> | ||||
| @@ -43,8 +42,6 @@ main (int argc, char *argv []) | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 	 | ||||
| 	glibtop_init(); | ||||
|  | ||||
| 	glibtop_get_cpu (&cpu); | ||||
|  | ||||
| 	ncpu = glibtop_global_server->ncpu ? glibtop_global_server->ncpu : 1; | ||||
|   | ||||
| @@ -1,50 +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_ARRAY_H__ | ||||
| #define __GLIBTOP_ARRAY_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| #define GLIBTOP_ARRAY_NUMBER		0 | ||||
| #define GLIBTOP_ARRAY_SIZE		1 | ||||
| #define GLIBTOP_ARRAY_TOTAL		2 | ||||
|  | ||||
| #define GLIBTOP_MAX_ARRAY		3 | ||||
|  | ||||
| typedef struct _glibtop_array	glibtop_array; | ||||
|  | ||||
| struct _glibtop_array | ||||
| { | ||||
|     u_int64_t flags, | ||||
| 	number,		/* GLIBTOP_ARRAY_NUMBER	*/ | ||||
| 	size,		/* GLIBTOP_ARRAY_SIZE	*/ | ||||
| 	total;		/* GLIBTOP_ARRAY_TOTAL	*/ | ||||
| }; | ||||
|  | ||||
| #endif | ||||
| @@ -1,43 +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_CALL_VECTOR_H__ | ||||
| #define __GLIBTOP_CALL_VECTOR_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/union.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| struct _glibtop_call_vector | ||||
| { | ||||
|     @@GLIBTOP_CALL_VECTOR@@ | ||||
| }; | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif | ||||
| @@ -1,116 +0,0 @@ | ||||
| #!/usr/bin/perl | ||||
|  | ||||
| require 'c_types.pl'; | ||||
|  | ||||
| die "Usage: $0 features.def call-vector.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 $_; | ||||
| } | ||||
|  | ||||
| $func_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; | ||||
|  | ||||
|   if ($retval eq 'retval') { | ||||
|     $retval_param = '&retval'; | ||||
|     $retval = 'int'; | ||||
|   } | ||||
|   elsif ($retval !~ /^void$/) { | ||||
|     $retval_param = 'NULL'; | ||||
|   } | ||||
|   else { | ||||
|     $retval_param = 'NULL'; | ||||
|   } | ||||
|   | ||||
|   if ($retval =~ /^(array|pointer)\((.*)\)$/) { | ||||
|     $retval = ($2 eq 'string') ? 'char **' : "$2 *"; | ||||
|   } | ||||
|  | ||||
|   $param_decl = ''; | ||||
|   $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]; | ||||
|  | ||||
|       $param_decl = $param_decl . ', '; | ||||
|       $param_decl = $param_decl . $c_type; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if ($line_fields[3] eq '') { | ||||
|     $func_decl_code .= sprintf | ||||
|       (qq[\t%s (*%s) (glibtop_server *, glibtop_closure *%s);\n], $retval, $feature, $param_decl); | ||||
|   } elsif ($line_fields[3] eq 'array') { | ||||
|     $func_decl_code .= sprintf | ||||
|       (qq[\t%s (*%s) (glibtop_server *, glibtop_closure *, glibtop_array *%s);\n], $retval, $feature, $param_decl); | ||||
|   } elsif ($line_fields[3] =~ /^array/) { | ||||
|     $func_decl_code .= sprintf | ||||
|       (qq[\t%s (*%s) (glibtop_server *, glibtop_closure *, glibtop_array *, %s *%s);\n], $retval, $feature, 'glibtop_'.$feature, $param_decl); | ||||
|   } else { | ||||
|     $func_decl_code .= sprintf | ||||
|       (qq[\t%s (*%s) (glibtop_server *, glibtop_closure *, %s *%s);\n], $retval, $feature, 'glibtop_'.$feature, $param_decl); | ||||
|   } | ||||
| } | ||||
|  | ||||
| chop $func_decl_code; | ||||
|  | ||||
| $auto_gen_comment = sprintf | ||||
|   (qq[/*\n * This file is automatically generated.\n * Please modify `call-vector.pl' and `call-vector.h.in'.\n */]); | ||||
|  | ||||
| open CALLVECTOR, $ARGV[2] or | ||||
|   die "open ($ARGV[2]): $!"; | ||||
|  | ||||
| while (<CALLVECTOR>) { | ||||
|   chop; | ||||
|  | ||||
|   s/^\s*\@\@GLIBTOP_CALL_VECTOR\@\@\s*$/$func_decl_code/; | ||||
|  | ||||
|   s/^\s*\@\@AUTOGEN_COMMENT\@\@\s*$/$auto_gen_comment/; | ||||
| } continue { | ||||
|   print $_; | ||||
| } | ||||
|  | ||||
| close CALLVECTOR; | ||||
| @@ -1,91 +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_COMPAT10_H__ | ||||
| #define __GLIBTOP_COMPAT10_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| /* glibtop_cpu */ | ||||
|  | ||||
| #define GLIBTOP_XCPU_TOTAL		GLIBTOP_CPU_XCPU_TOTAL | ||||
| #define GLIBTOP_XCPU_USER		GLIBTOP_CPU_XCPU_USER | ||||
| #define GLIBTOP_XCPU_NICE		GLIBTOP_CPU_XCPU_NICE | ||||
| #define GLIBTOP_XCPU_SYS		GLIBTOP_CPU_XCPU_SYS | ||||
| #define GLIBTOP_XCPU_IDLE		GLIBTOP_CPU_XCPU_IDLE | ||||
| #define GLIBTOP_XCPU_FLAGS		GLIBTOP_CPU_XCPU_FLAGS | ||||
|  | ||||
| /* glibtop_proclist */ | ||||
|  | ||||
| #define GLIBTOP_PROCLIST_NUMBER		GLIBTOP_ARRAY_NUMBER | ||||
| #define GLIBTOP_PROCLIST_SIZE		GLIBTOP_ARRAY_SIZE | ||||
| #define GLIBTOP_PROCLIST_TOTAL		GLIBTOP_ARRAY_TOTAL | ||||
|  | ||||
| #define GLIBTOP_MAX_PROCLIST		GLIBTOP_MAX_ARRAY | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_proclist; | ||||
|  | ||||
| /* glibtop_mountlist */ | ||||
|  | ||||
| #define GLIBTOP_MOUNTLIST_NUMBER	GLIBTOP_ARRAY_NUMBER | ||||
| #define GLIBTOP_MOUNTLIST_SIZE		GLIBTOP_ARRAY_SIZE | ||||
| #define GLIBTOP_MOUNTLIST_TOTAL		GLIBTOP_ARRAY_TOTAL | ||||
|  | ||||
| #define GLIBTOP_MAX_MOUNTLIST		GLIBTOP_MAX_ARRAY | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_mountlist; | ||||
|  | ||||
| /* glibtop_proc_args */ | ||||
|  | ||||
| #define GLIBTOP_PROC_ARGS_SIZE		0 | ||||
|  | ||||
| #define GLIBTOP_MAX_PROC_ARGS		1 | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_proc_args; | ||||
|  | ||||
| /* glibtop_proc_map */ | ||||
|  | ||||
| #define GLIBTOP_PROC_MAP_NUMBER		GLIBTOP_ARRAY_NUMBER | ||||
| #define GLIBTOP_PROC_MAP_SIZE		GLIBTOP_ARRAY_SIZE | ||||
| #define GLIBTOP_PROC_MAP_TOTAL		GLIBTOP_ARRAY_TOTAL | ||||
|  | ||||
| #define GLIBTOP_MAX_PROC_MAP		GLIBTOP_MAX_ARRAY | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_proc_map; | ||||
|  | ||||
| /* glibtop_interface_names */ | ||||
|  | ||||
| #define GLIBTOP_INTERFACE_NAMES_NUMBER	GLIBTOP_ARRAY_NUMBER | ||||
| #define GLIBTOP_INTERFACE_NAMES_SIZE	GLIBTOP_ARRAY_SIZE | ||||
| #define GLIBTOP_INTERFACE_NAMES_TOTAL	GLIBTOP_ARRAY_TOTAL | ||||
|  | ||||
| #define GLIBTOP_MAX_INTERFACE_NAMES	GLIBTOP_MAX_ARRAY | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_interface_names; | ||||
|  | ||||
| #endif | ||||
| @@ -1,95 +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_ERRORS_H__ | ||||
| #define __GLIBTOP_ERRORS_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
|  | ||||
| #include <glib/gerror.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| #define GLIBTOP_ERROR glibtop_error_quark () | ||||
|  | ||||
| GQuark glibtop_error_quark (void) G_GNUC_CONST; | ||||
|  | ||||
| typedef enum { | ||||
|     GLIBTOP_ERROR_NO_ERROR = 0, | ||||
|     GLIBTOP_ERROR_UNKNOWN, | ||||
|     GLIBTOP_ERROR_INVALID_ARGUMENT, | ||||
|     GLIBTOP_ERROR_NO_SUCH_PARAMETER, | ||||
|     GLIBTOP_ERROR_READONLY_VALUE, | ||||
|     GLIBTOP_ERROR_SIZE_MISMATCH, | ||||
|  | ||||
|     GLIBTOP_ERROR_SERVER_COMM_FAILURE, | ||||
|  | ||||
|     GLIBTOP_ERROR_NO_SUCH_PROCESS, | ||||
|  | ||||
|     GLIBTOP_ERROR_NO_KERNEL_SUPPORT, | ||||
|     GLIBTOP_ERROR_INCOMPATIBLE_KERNEL, | ||||
|  | ||||
|     GLIBTOP_ERROR_NO_SUCH_BACKEND, | ||||
|     GLIBTOP_ERROR_NOT_IMPLEMENTED, | ||||
|     GLIBTOP_ERROR_NO_BACKEND_OPENED, | ||||
|  | ||||
|     GLIBTOP_ERROR_DEMARSHAL_ERROR | ||||
| } glibtop_error; | ||||
|  | ||||
| void | ||||
| glibtop_error_vl (glibtop_client *client, glibtop_error code, | ||||
| 		  const char *format, va_list args); | ||||
|  | ||||
| void | ||||
| glibtop_error_io_vl (glibtop_client *client, glibtop_error code, | ||||
| 		     int io_errno, const char *format, va_list args); | ||||
|  | ||||
| void | ||||
| glibtop_warn_vl (glibtop_client *client, glibtop_error code, | ||||
| 		 const char *format, va_list args); | ||||
|  | ||||
| void | ||||
| glibtop_warn_io_vl (glibtop_client *client, glibtop_error code, | ||||
| 		    int io_errno, const char *format, va_list args); | ||||
|  | ||||
| void | ||||
| glibtop_error_l (glibtop_client *client, glibtop_error code, | ||||
| 		 char *format, ...); | ||||
|  | ||||
| void | ||||
| glibtop_warn_l (glibtop_client *client, glibtop_error code, | ||||
| 		char *format, ...); | ||||
|  | ||||
| void | ||||
| glibtop_error_io_l (glibtop_client *client, glibtop_error code, | ||||
| 		    char *format, ...); | ||||
|  | ||||
| void | ||||
| glibtop_warn_io_l (glibtop_client *client, glibtop_error code, | ||||
| 		   char *format, ...); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif | ||||
| @@ -1,50 +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_GLIB_ARRAYS_H__ | ||||
| #define __GLIBTOP_GLIB_ARRAYS_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/array.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| #include <glib.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| GPtrArray * | ||||
| glibtop_get_proc_args_as_array_l (glibtop_client *client, pid_t pid); | ||||
|  | ||||
| GArray * | ||||
| glibtop_get_proclist_as_array_l (glibtop_client *client, int64_t which, int64_t arg); | ||||
|  | ||||
| GPtrArray * | ||||
| glibtop_get_proc_map_as_array_l (glibtop_client *client, pid_t pid); | ||||
|  | ||||
| GPtrArray * | ||||
| glibtop_get_mountlist_as_array_l (glibtop_client *client, int all_fs); | ||||
|  | ||||
| G_END_DECLS | ||||
| #endif | ||||
| @@ -1,102 +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_INFO_H__ | ||||
| #define __GLIBTOP_BACKEND_INFO_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| #include <glibtop/glibtop-server.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| typedef struct _glibtop_backend_info	glibtop_backend_info; | ||||
| typedef struct _glibtop_backend_entry	glibtop_backend_entry; | ||||
| typedef struct _glibtop_backend_module	glibtop_backend_module; | ||||
|  | ||||
| typedef struct _glibtop_call_vector	glibtop_call_vector; | ||||
|  | ||||
| typedef int (*glibtop_backend_open_func_t)  (glibtop_server *, glibtop_backend *, | ||||
| 					     u_int64_t, const char **); | ||||
| typedef int (*glibtop_backend_close_func_t) (glibtop_server *, glibtop_backend *, | ||||
| 					     glibtop_closure *); | ||||
|  | ||||
| struct _glibtop_backend_info | ||||
| { | ||||
|     const char *name; | ||||
|     glibtop_backend_open_func_t open; | ||||
|     glibtop_backend_close_func_t close; | ||||
|     glibtop_call_vector *call_vector; | ||||
| }; | ||||
|  | ||||
| #ifdef _IN_LIBGTOP | ||||
|  | ||||
| #include <gmodule.h> | ||||
|  | ||||
| /* private structure */ | ||||
| struct _glibtop_backend_module | ||||
| { | ||||
|     int refcount; | ||||
|     GModule *module; | ||||
|     GSList *extra_modules; | ||||
| }; | ||||
|  | ||||
| struct _glibtop_backend_entry | ||||
| { | ||||
|     char *name; | ||||
|     char *libtool_name; | ||||
|     char *shlib_name; | ||||
|  | ||||
|     GSList *extra_libs; | ||||
|  | ||||
|     /* This is const since you must not attempt to | ||||
|      * write into gmodule loaded memory. */ | ||||
|     const glibtop_backend_info *info; | ||||
|  | ||||
|     /* private pointer */ | ||||
|     glibtop_backend_module *_priv; | ||||
| }; | ||||
|  | ||||
| #endif /* _IN_LIBGTOP */ | ||||
|  | ||||
| long | ||||
| glibtop_register_backend (glibtop_backend_entry *entry); | ||||
|  | ||||
| void | ||||
| glibtop_unregister_backend (long id); | ||||
|  | ||||
| glibtop_backend_entry * | ||||
| glibtop_backend_by_id (long id); | ||||
|  | ||||
| glibtop_backend_entry * | ||||
| glibtop_backend_by_name (const char *backend_name); | ||||
|  | ||||
| void | ||||
| glibtop_init_backends (void); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif | ||||
| @@ -1,85 +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 2.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_H__ | ||||
| #define __GLIBTOP_BACKEND_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glib-object.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| #define	GLIBTOP_TYPE_BACKEND		(glibtop_backend_get_type ()) | ||||
| #define GLIBTOP_BACKEND(backend)	(G_TYPE_CHECK_INSTANCE_CAST ((backend), GLIBTOP_TYPE_BACKEND, glibtop_backend)) | ||||
| #define GLIBTOP_BACKEND_CLASS(klass)	(G_TYPE_CHECK_CLASS_CAST ((klass), GLIBTOP_TYPE_BACKEND, glibtop_backend_class)) | ||||
| #define GLIBTOP_IS_BACKEND(backend)	(G_TYPE_CHECK_INSTANCE_TYPE ((backend), GLIBTOP_TYPE_BACKEND)) | ||||
| #define GLIBTOP_IS_BACKEND_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE ((klass), GLIBTOP_TYPE_BACKEND)) | ||||
| #define	GLIBTOP_BACKEND_GET_CLASS(backend)(G_TYPE_INSTANCE_GET_CLASS ((backend), GLIBTOP_TYPE_BACKEND, glibtop_backend_class)) | ||||
|  | ||||
| #define GLIBTOP_BACKEND_TYPE(backend)	(G_TYPE_FROM_INSTANCE (backend)) | ||||
| #define GLIBTOP_BACKEND_TYPE_NAME(backend)(g_type_name (GLIBTOP_BACKEND_TYPE (backend))) | ||||
|  | ||||
| /* --- typedefs & structures --- */ | ||||
| typedef struct _glibtop_backend		glibtop_backend; | ||||
| typedef struct _glibtop_backend_class	glibtop_backend_class; | ||||
| typedef struct _glibtop_backend_private	glibtop_backend_private; | ||||
|  | ||||
| #include <glibtop/glibtop-backend-info.h> | ||||
|  | ||||
| struct	_glibtop_backend | ||||
| { | ||||
|     GObject object; | ||||
|  | ||||
|     /* <private> */ | ||||
|     glibtop_backend_private *_priv; | ||||
| }; | ||||
|  | ||||
| struct	_glibtop_backend_class | ||||
| { | ||||
|     GObjectClass parent_class;; | ||||
| }; | ||||
|  | ||||
| GType | ||||
| glibtop_backend_get_type (void); | ||||
|  | ||||
| glibtop_backend * | ||||
| glibtop_backend_get (const char *backend_name, u_int64_t features, | ||||
| 		     const char **backend_args, GError **error); | ||||
|  | ||||
| void | ||||
| glibtop_backend_set_closure_data (glibtop_backend *backend, glibtop_closure *closure); | ||||
|  | ||||
| glibtop_closure * | ||||
| glibtop_backend_get_closure_data (glibtop_backend *backend); | ||||
|  | ||||
| glibtop_call_vector * | ||||
| glibtop_backend_get_call_vector (glibtop_backend *backend); | ||||
|  | ||||
| glibtop_server * | ||||
| glibtop_backend_get_server (glibtop_backend *backend); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif | ||||
| @@ -1,97 +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 2.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_CLIENT_H__ | ||||
| #define __GLIBTOP_CLIENT_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
|  | ||||
| #include <glib-object.h> | ||||
|  | ||||
| #include <glibtop/glibtop-backend.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| #define	GLIBTOP_TYPE_CLIENT		(glibtop_client_get_type ()) | ||||
| #define GLIBTOP_CLIENT(client)		(G_TYPE_CHECK_INSTANCE_CAST ((client), GLIBTOP_TYPE_CLIENT, glibtop_client)) | ||||
| #define GLIBTOP_CLIENT_CLASS(klass)	(G_TYPE_CHECK_CLASS_CAST ((klass), GLIBTOP_TYPE_CLIENT, glibtop_client_class)) | ||||
| #define GLIBTOP_IS_CLIENT(client)	(G_TYPE_CHECK_INSTANCE_TYPE ((client), GLIBTOP_TYPE_CLIENT)) | ||||
| #define GLIBTOP_IS_CLIENT_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE ((klass), GLIBTOP_TYPE_CLIENT)) | ||||
| #define	GLIBTOP_CLIENT_GET_CLASS(client)(G_TYPE_INSTANCE_GET_CLASS ((client), GLIBTOP_TYPE_CLIENT, glibtop_client_class)) | ||||
|  | ||||
| #define GLIBTOP_CLIENT_TYPE(client)	(G_TYPE_FROM_INSTANCE (client)) | ||||
| #define GLIBTOP_CLIENT_TYPE_NAME(client)(g_type_name (GLIBTOP_CLIENT_TYPE (client))) | ||||
|  | ||||
| /* --- typedefs & structures --- */ | ||||
| typedef struct _glibtop_client		glibtop_client; | ||||
| typedef struct _glibtop_client_class	glibtop_client_class; | ||||
| typedef struct _glibtop_client_private	glibtop_client_private; | ||||
|  | ||||
| struct	_glibtop_client | ||||
| { | ||||
|     GObject object; | ||||
|  | ||||
|     /* <public> */ | ||||
|     GError *error; | ||||
|  | ||||
|     /* <private> */ | ||||
|     glibtop_client_private *_priv; | ||||
| }; | ||||
|  | ||||
| struct	_glibtop_client_class | ||||
| { | ||||
|     GObjectClass parent_class;; | ||||
|  | ||||
|     void (*error) (glibtop_client *client, GError *error); | ||||
|     void (*warning) (glibtop_client *client, GError *error); | ||||
| }; | ||||
|  | ||||
| GType | ||||
| glibtop_client_get_type (void); | ||||
|  | ||||
| glibtop_client * | ||||
| glibtop_client_new (void); | ||||
|  | ||||
| void | ||||
| glibtop_client_propagate_error (glibtop_client *client, GError *error); | ||||
|  | ||||
| void | ||||
| glibtop_client_propagate_warning (glibtop_client *client, GError *error); | ||||
|  | ||||
| void | ||||
| glibtop_client_open_backend (glibtop_client *client, const char *backend_name, | ||||
| 			     u_int64_t features, const char **backend_args); | ||||
|  | ||||
| void | ||||
| glibtop_client_add_backend (glibtop_client *client, | ||||
| 			    glibtop_backend *backend); | ||||
|  | ||||
| void | ||||
| glibtop_client_remove_backend (glibtop_client *client, | ||||
| 			       glibtop_backend *backend); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif | ||||
| @@ -1,75 +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 2.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_SERVER_H__ | ||||
| #define __GLIBTOP_SERVER_H__ | ||||
|  | ||||
| #include <glibtop/global.h> | ||||
| #include <glibtop/sysdeps.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| typedef struct _glibtop_server		glibtop_server; | ||||
| 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 */ | ||||
|     unsigned long features;	/* Server is required for this features */ | ||||
|     glibtop_sysdeps sysdeps;	/* Detailed feature list */ | ||||
|     glibtop_sysdeps required;	/* Required feature list */ | ||||
|     glibtop_sysdeps wanted;	/* We only want this features */ | ||||
| }; | ||||
|  | ||||
| struct	_glibtop_server | ||||
| { | ||||
|     glibtop_server_info *info; | ||||
|  | ||||
|     int refcount; | ||||
|     unsigned flags; | ||||
|     const char *name; | ||||
|  | ||||
|     void *_priv; | ||||
| }; | ||||
|  | ||||
| glibtop_server * | ||||
| glibtop_server_new (void); | ||||
|  | ||||
| void | ||||
| glibtop_server_ref (glibtop_server *server); | ||||
|  | ||||
| void | ||||
| glibtop_server_unref (glibtop_server *server); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif | ||||
| @@ -1,203 +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_INTERFACES_H__ | ||||
| #define __GLIBTOP_INTERFACES_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| #include <glibtop/compat_10.h> | ||||
| #include <glibtop/array.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| #define GLIBTOP_INTERFACE_IF_FLAGS	0 | ||||
| #define GLIBTOP_INTERFACE_TRANSPORT	1 | ||||
| #define GLIBTOP_INTERFACE_TYPE		2 | ||||
| #define GLIBTOP_INTERFACE_NUMBER	3 | ||||
| #define GLIBTOP_INTERFACE_INSTANCE	4 | ||||
| #define GLIBTOP_INTERFACE_NUM_LOGICAL	5 | ||||
| #define GLIBTOP_INTERFACE_NAME		6 | ||||
|  | ||||
| #define GLIBTOP_MAX_INTERFACE		7 | ||||
|  | ||||
| #define GLIBTOP_IFADDR_TRANSPORT	0 | ||||
| #define GLIBTOP_IFADDR_ADDR_LEN		1 | ||||
| #define GLIBTOP_IFADDR_ADDRESS		2 | ||||
| #define GLIBTOP_IFADDR_SUBNET		3 | ||||
| #define GLIBTOP_IFADDR_SCOPE		4 | ||||
|  | ||||
| #define GLIBTOP_MAX_IFADDR		5 | ||||
|  | ||||
| typedef struct _glibtop_interface	glibtop_interface; | ||||
| typedef struct _glibtop_ifaddr		glibtop_ifaddr; | ||||
|  | ||||
| typedef enum _glibtop_interface_type	glibtop_interface_type; | ||||
| typedef enum _glibtop_transport		glibtop_transport; | ||||
| typedef enum _glibtop_protocol		glibtop_protocol; | ||||
|  | ||||
| typedef enum _glibtop_ipv6_scope	glibtop_ipv6_scope; | ||||
|  | ||||
| typedef enum _glibtop_strategy		glibtop_strategy; | ||||
| typedef enum _glibtop_interface_flags	glibtop_interface_flags; | ||||
|  | ||||
| enum _glibtop_protocol { | ||||
|     GLIBTOP_PROTOCOL_OTHERS	= 0, | ||||
|     GLIBTOP_PROTOCOL_ICMP	= 1 << 0, | ||||
|     GLIBTOP_PROTOCOL_TCP	= 1 << 1, | ||||
|     GLIBTOP_PROTOCOL_UDP	= 1 << 2, | ||||
|     GLIBTOP_PROTOCOL_IGMP	= 1 << 3, | ||||
|     GLIBTOP_PROTOCOL_RAW	= 1 << 4, | ||||
|     GLIBTOP_PROTOCOL_ICMP6	= 1 << 5, | ||||
|     GLIBTOP_PROTOCOL_TCP6	= 1 << 6, | ||||
|     GLIBTOP_PROTOCOL_UDP6	= 1 << 7, | ||||
|     GLIBTOP_PROTOCOL_IGMP6	= 1 << 8, | ||||
|     GLIBTOP_PROTOCOL_RAW6	= 1 << 9 | ||||
| }; | ||||
|  | ||||
| enum _glibtop_transport { | ||||
|     GLIBTOP_TRANSPORT_DEFAULT	= 0, | ||||
|     GLIBTOP_TRANSPORT_IPV4	= 1 << 0, | ||||
|     GLIBTOP_TRANSPORT_IPV6	= 1 << 1, | ||||
|     GLIBTOP_TRANSPORT_IPX	= 1 << 2, | ||||
|     GLIBTOP_TRANSPORT_X25	= 1 << 3, | ||||
|     GLIBTOP_TRANSPORT_DECNET	= 1 << 4, | ||||
|     GLIBTOP_TRANSPORT_APPLETALK	= 1 << 5, | ||||
|     GLIBTOP_TRANSPORT_NETBEUI	= 1 << 6 | ||||
| }; | ||||
|  | ||||
| #define GLIBTOP_TRANSPORT_ALL	GLIBTOP_UNLIMITED | ||||
| #define GLIBTOP_PROTOCOL_ALL	GLIBTOP_UNLIMITED | ||||
|  | ||||
| enum _glibtop_interface_type { | ||||
|     GLIBTOP_INTERFACE_ALL		= 0, | ||||
|     GLIBTOP_INTERFACE_OTHER, | ||||
|     /* Network interfaces */ | ||||
|     GLIBTOP_INTERFACE_ETHERNET		= 101, | ||||
|     GLIBTOP_INTERFACE_FDDI, | ||||
|     GLIBTOP_INTERFACE_FRAME_RELAY, | ||||
|     GLIBTOP_INTERFACE_TOKEN_RING, | ||||
|     GLIBTOP_INTERFACE_ARCNET, | ||||
|     GLIBTOP_INTERFACE_ATM, | ||||
|     /* Dummy interfaces */ | ||||
|     GLIBTOP_INTERFACE_LOOPBACK		= 501, | ||||
|     GLIBTOP_INTERFACE_DUMMY, | ||||
|     /* Dialup interfaces */ | ||||
|     GLIBTOP_INTERFACE_PARA		= 801, | ||||
|     GLIBTOP_INTERFACE_SLIP, | ||||
|     GLIBTOP_INTERFACE_PPP, | ||||
|     GLIBTOP_INTERFACE_ISDN | ||||
| }; | ||||
|  | ||||
| enum _glibtop_ipv6_scope { | ||||
|     GLIBTOP_IPV6_SCOPE_GLOBAL		= 0, | ||||
|     GLIBTOP_IPV6_SCOPE_LOOPBACK		= 1 << 1, | ||||
|     GLIBTOP_IPV6_SCOPE_LINKLOCAL	= 1 << 2, | ||||
|     GLIBTOP_IPV6_SCOPE_SITELOCAL	= 1 << 3, | ||||
|     GLIBTOP_IPV6_SCOPE_COMPATv4		= 1 << 4, | ||||
|     GLIBTOP_IPV6_SCOPE_UNKNOWN		= 1 << 5 | ||||
| }; | ||||
|  | ||||
| enum _glibtop_strategy { | ||||
|     GLIBTOP_INTERFACES_ALL		= 0, | ||||
|     GLIBTOP_INTERFACES_BEST_MATCHING, | ||||
|     GLIBTOP_INTERFACES_ONLY_THIS_ONE, | ||||
|     GLIBTOP_INTERFACES_INCLUDE_LOGICAL	= 1 << 7 | ||||
| }; | ||||
|  | ||||
| #define GLIBTOP_STRATEGY_FLAGS_MASK	(1 << 7) | ||||
|  | ||||
| enum _glibtop_interface_flags { | ||||
|     GLIBTOP_IF_FLAGS_UP = 1, | ||||
|     GLIBTOP_IF_FLAGS_BROADCAST, | ||||
|     GLIBTOP_IF_FLAGS_DEBUG, | ||||
|     GLIBTOP_IF_FLAGS_LOOPBACK, | ||||
|     GLIBTOP_IF_FLAGS_POINTOPOINT, | ||||
|     GLIBTOP_IF_FLAGS_RUNNING, | ||||
|     GLIBTOP_IF_FLAGS_NOARP, | ||||
|     GLIBTOP_IF_FLAGS_PROMISC, | ||||
|     GLIBTOP_IF_FLAGS_ALLMULTI, | ||||
|     GLIBTOP_IF_FLAGS_OACTIVE, | ||||
|     GLIBTOP_IF_FLAGS_SIMPLEX, | ||||
|     GLIBTOP_IF_FLAGS_LINK0, | ||||
|     GLIBTOP_IF_FLAGS_LINK1, | ||||
|     GLIBTOP_IF_FLAGS_LINK2, | ||||
|     GLIBTOP_IF_FLAGS_ALTPHYS, | ||||
|     GLIBTOP_IF_FLAGS_MULTICAST | ||||
| }; | ||||
|  | ||||
| struct _glibtop_ifaddr | ||||
| { | ||||
|     u_int64_t	flags, | ||||
| 	transport;			/* GLIBTOP_IFADDR_TRANSPORT	*/ | ||||
|     u_int8_t	addr_len,		/* GLIBTOP_IFADDR_ADDR_LEN	*/ | ||||
| 	address [GLIBTOP_IFADDR_LEN];	/* GLIBTOP_IFADDR_ADDRESS	*/ | ||||
|     u_int64_t	subnet,			/* GLIBTOP_IFADDR_SUBNET	*/ | ||||
| 	scope;				/* GLIBTOP_IFADDR_SCOPE	*/ | ||||
| }; | ||||
|  | ||||
| struct _glibtop_interface | ||||
| { | ||||
|     u_int64_t	flags, | ||||
| 	if_flags,		/* GLIBTOP_INTERFACE_IF_FLAGS		*/ | ||||
| 	transport,		/* GLIBTOP_INTERFACE_TRANSPORT		*/ | ||||
| 	type,			/* GLIBTOP_INTERFACE_TYPE		*/ | ||||
| 	number,			/* GLIBTOP_INTERFACE_NUMBER		*/ | ||||
| 	instance,		/* GLIBTOP_INTERFACE_INSTANCE		*/ | ||||
| 	num_logical;		/* GLIBTOP_INTERFACE_NUM_LOGICAL	*/ | ||||
|     char name [GLIBTOP_INTERFACE_LEN]; | ||||
| }; | ||||
|  | ||||
| #if GLIBTOP_SUID_INTERFACE_NAMES | ||||
| #define glibtop_get_interface_names_r	glibtop_get_interface_names_p | ||||
| #else | ||||
| #define glibtop_get_interface_names_r	glibtop_get_interface_names_s | ||||
| #endif | ||||
|  | ||||
| glibtop_interface *glibtop_get_interface_names_l (glibtop_client *client, glibtop_array *array, u_int64_t interface, u_int64_t number, u_int64_t instance, u_int64_t strategy); | ||||
|  | ||||
| #if GLIBTOP_SUID_INTERFACE_NAMES | ||||
| int glibtop_init_interface_names_p (glibtop_server *server, glibtop_closure *closure); | ||||
| glibtop_interface *glibtop_get_interface_names_p (glibtop_server *server, glibtop_closure *closure, glibtop_array *array, u_int64_t interface, u_int64_t number, u_int64_t instance, u_int64_t strategy); | ||||
| #else | ||||
| int glibtop_init_interface_names_s (glibtop_server *server, glibtop_closure *closure); | ||||
| glibtop_interface *glibtop_get_interface_names_s (glibtop_server *server, glibtop_closure *closure, glibtop_array *array, u_int64_t interface, u_int64_t number, u_int64_t instance, u_int64_t strategy); | ||||
| #endif | ||||
|  | ||||
| #ifdef GLIBTOP_NAMES | ||||
|  | ||||
| /* You need to link with -lgtop_names to get this stuff here. */ | ||||
|  | ||||
| extern const char *glibtop_names_interface_names []; | ||||
| extern const unsigned glibtop_types_interface_names []; | ||||
| extern const char *glibtop_labels_interface_names []; | ||||
| extern const char *glibtop_descriptions_interface_names []; | ||||
|  | ||||
| #endif | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif | ||||
| @@ -1,56 +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_LIMITS_H__ | ||||
| #define __GLIBTOP_LIMITS_H__ | ||||
|  | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| /* Nobody should really be using more than 64 processors. */ | ||||
| #define GLIBTOP_NCPU		64 | ||||
|  | ||||
| /* Maximum number of process groups in glibtop_proc_uid. */ | ||||
| #define GLIBTOP_MAX_GROUPS	32 | ||||
|  | ||||
| /* Maximum length of a mountpoint/device name in glibtop_mountlist. */ | ||||
| #define GLIBTOP_MOUNTENTRY_LEN	79 | ||||
|  | ||||
| /* Maximum length of a network interface name. */ | ||||
| #define GLIBTOP_INTERFACE_LEN	32 | ||||
|  | ||||
| /* Length of a network interface address in bytes. */ | ||||
| #define GLIBTOP_IFADDR_LEN	16 | ||||
|  | ||||
| /* This is ((u_int64_t)-1) */ | ||||
| #define GLIBTOP_UNLIMITED	(~(u_int64_t)0) | ||||
|  | ||||
| /* Maximum length of a backend name. */ | ||||
| #define GLIBTOP_BACKEND_NAME_LEN	40 | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif | ||||
| @@ -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_NETINFO_H__ | ||||
| #define __GLIBTOP_NETINFO_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| #define GLIBTOP_NETINFO_IF_FLAGS	0 | ||||
| #define GLIBTOP_NETINFO_TRANSPORT	1 | ||||
| #define GLIBTOP_NETINFO_MTU		2 | ||||
| #define GLIBTOP_NETINFO_SUBNET		3 | ||||
| #define GLIBTOP_NETINFO_ADDRESS		4 | ||||
|  | ||||
| #define GLIBTOP_MAX_NETINFO		5 | ||||
|  | ||||
| typedef struct _glibtop_netinfo	glibtop_netinfo; | ||||
|  | ||||
| #include <glibtop/interfaces.h> | ||||
|  | ||||
| struct _glibtop_netinfo | ||||
| { | ||||
|     u_int64_t	flags, | ||||
| 	if_flags,			/* GLIBTOP_NETINFO_IF_FLAGS	*/ | ||||
| 	transport,			/* GLIBTOP_NETINFO_TRANSPORT	*/ | ||||
| 	mtu;				/* GLIBTOP_NETINFO_MTU		*/ | ||||
| }; | ||||
|  | ||||
| #if GLIBTOP_SUID_NETINFO | ||||
| #define glibtop_get_netinfo_r		glibtop_get_netinfo_p | ||||
| #else | ||||
| #define glibtop_get_netinfo_r		glibtop_get_netinfo_s | ||||
| #endif | ||||
|  | ||||
| glibtop_ifaddr *glibtop_get_netinfo_l (glibtop_client *client, glibtop_array *array, glibtop_netinfo *buf, const char *interface, u_int64_t transport); | ||||
|  | ||||
| #if GLIBTOP_SUID_NETINFO | ||||
| int glibtop_init_netinfo_p (glibtop_server *server, glibtop_closure *closure); | ||||
| glibtop_ifaddr *glibtop_get_netinfo_p (glibtop_server *server, glibtop_closure *closure, glibtop_array *array, glibtop_netinfo *buf, const char *interface, u_int64_t transport); | ||||
| #else | ||||
| int glibtop_init_netinfo_s (glibtop_server *server, glibtop_closure *closure); | ||||
| glibtop_ifaddr *glibtop_get_netinfo_s (glibtop_server *server, glibtop_closure *closure, glibtop_array *array, glibtop_netinfo *buf, const char *interface, u_int64_t transport); | ||||
| #endif | ||||
|  | ||||
| #ifdef GLIBTOP_NAMES | ||||
|  | ||||
| /* You need to link with -lgtop_names to get this stuff here. */ | ||||
|  | ||||
| extern const char *glibtop_names_netinfo []; | ||||
| extern const unsigned glibtop_types_netinfo []; | ||||
| extern const char *glibtop_labels_netinfo []; | ||||
| extern const char *glibtop_descriptions_netinfo []; | ||||
|  | ||||
| #endif | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif | ||||
| @@ -1,81 +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_PROCCWD_H__ | ||||
| #define __GLIBTOP_PROCCWD_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| #include <glibtop/array.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| #define GLIBTOP_PROC_CWD_SIZE			0 | ||||
| #define GLIBTOP_PROC_CWD_DEVICE			1 | ||||
| #define GLIBTOP_PROC_CWD_INODE			2 | ||||
|  | ||||
| #define GLIBTOP_MAX_PROC_CWD			3 | ||||
|  | ||||
| typedef struct _glibtop_proc_cwd	glibtop_proc_cwd; | ||||
|  | ||||
| /* Cwd stuff */ | ||||
|  | ||||
| struct _glibtop_proc_cwd | ||||
| { | ||||
|     u_int64_t	flags, | ||||
| 	size, | ||||
| 	device, | ||||
| 	inode; | ||||
| }; | ||||
|  | ||||
| #if GLIBTOP_SUID_PROC_CWD | ||||
| #define glibtop_get_proc_cwd_r		glibtop_get_proc_cwd_p | ||||
| #else | ||||
| #define glibtop_get_proc_cwd_r		glibtop_get_proc_cwd_s | ||||
| #endif | ||||
|  | ||||
| char *glibtop_get_proc_cwd_l (glibtop_client *client, glibtop_proc_cwd *buf, pid_t pid); | ||||
|  | ||||
| #if GLIBTOP_SUID_PROC_CWD | ||||
| int glibtop_init_proc_cwd_p (glibtop_server *server, glibtop_closure *closure); | ||||
| char *glibtop_get_proc_cwd_p (glibtop_server *server, glibtop_closure *closure, glibtop_proc_cwd *buf, pid_t pid); | ||||
| #else | ||||
| int glibtop_init_proc_cwd_s (glibtop_server *server, glibtop_closure *closure); | ||||
| char *glibtop_get_proc_cwd_s (glibtop_server *server, glibtop_closure *closure, glibtop_proc_cwd *buf, pid_t pid); | ||||
| #endif | ||||
|  | ||||
| #ifdef GLIBTOP_NAMES | ||||
|  | ||||
| /* You need to link with -lgtop_names to get this stuff here. */ | ||||
|  | ||||
| extern const char *glibtop_names_proc_cwd []; | ||||
| extern const unsigned glibtop_types_proc_cwd []; | ||||
| extern const char *glibtop_labels_proc_cwd []; | ||||
| extern const char *glibtop_descriptions_proc_cwd []; | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
| @@ -1,93 +0,0 @@ | ||||
| diff -ru kernel-source-2.2.12/Makefile hacker-2.2.12/Makefile | ||||
| --- kernel-source-2.2.12/Makefile	Thu Aug 26 02:29:45 1999 | ||||
| +++ hacker-2.2.12/Makefile	Sat Dec 18 17:33:04 1999 | ||||
| @@ -113,6 +113,7 @@ | ||||
|  DRIVERS		=drivers/block/block.a \ | ||||
|  		 drivers/char/char.a \ | ||||
|  	         drivers/misc/misc.a | ||||
| +EXTRAS		= | ||||
|  LIBS		=$(TOPDIR)/lib/lib.a | ||||
|  SUBDIRS		=kernel drivers mm fs net ipc lib | ||||
|   | ||||
| @@ -202,6 +203,11 @@ | ||||
|  DRIVERS := $(DRIVERS) drivers/net/irda/irda_drivers.a | ||||
|  endif | ||||
|   | ||||
| +ifdef CONFIG_LIBGTOP | ||||
| +SUBDIRS := $(SUBDIRS) libgtop | ||||
| +EXTRAS  := $(EXTRAS) libgtop/kernel.o | ||||
| +endif | ||||
| + | ||||
|  include arch/$(ARCH)/Makefile | ||||
|   | ||||
|  .S.s: | ||||
| @@ -222,6 +228,7 @@ | ||||
|  		$(FILESYSTEMS) \ | ||||
|  		$(NETWORKS) \ | ||||
|  		$(DRIVERS) \ | ||||
| +		$(EXTRAS) \ | ||||
|  		$(LIBS) \ | ||||
|  		--end-group \ | ||||
|  		-o vmlinux | ||||
| diff -ru kernel-source-2.2.12/arch/i386/config.in hacker-2.2.12/arch/i386/config.in | ||||
| --- kernel-source-2.2.12/arch/i386/config.in	Thu Oct 14 00:57:46 1999 | ||||
| +++ hacker-2.2.12/arch/i386/config.in	Sat Dec 18 17:33:04 1999 | ||||
| @@ -88,6 +88,9 @@ | ||||
|  bool 'System V IPC' CONFIG_SYSVIPC | ||||
|  bool 'BSD Process Accounting' CONFIG_BSD_PROCESS_ACCT | ||||
|  bool 'Sysctl support' CONFIG_SYSCTL | ||||
| +if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then | ||||
| +  tristate 'LibGTop support' CONFIG_LIBGTOP | ||||
| +fi | ||||
|  tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT | ||||
|  tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF | ||||
|  tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC | ||||
| diff -ru kernel-source-2.2.12/include/linux/autoconf.h hacker-2.2.12/include/linux/autoconf.h | ||||
| --- kernel-source-2.2.12/include/linux/autoconf.h	Sat Dec  4 01:20:30 1999 | ||||
| +++ hacker-2.2.12/include/linux/autoconf.h	Sat Dec 18 17:41:44 1999 | ||||
| @@ -53,6 +53,8 @@ | ||||
|  #define CONFIG_SYSVIPC 1 | ||||
|  #define CONFIG_BSD_PROCESS_ACCT 1 | ||||
|  #define CONFIG_SYSCTL 1 | ||||
| +#undef  CONFIG_LIBGTOP | ||||
| +#define CONFIG_LIBGTOP_MODULE 1 | ||||
|  #undef  CONFIG_BINFMT_AOUT | ||||
|  #define CONFIG_BINFMT_AOUT_MODULE 1 | ||||
|  #define CONFIG_BINFMT_ELF 1 | ||||
| diff -ru kernel-source-2.2.12/include/linux/sysctl.h hacker-2.2.12/include/linux/sysctl.h | ||||
| --- kernel-source-2.2.12/include/linux/sysctl.h	Mon Aug  9 21:05:13 1999 | ||||
| +++ hacker-2.2.12/include/linux/sysctl.h	Sat Dec 18 17:34:38 1999 | ||||
| @@ -57,7 +57,8 @@ | ||||
|  	CTL_FS=5,		/* Filesystems */ | ||||
|  	CTL_DEBUG=6,		/* Debugging */ | ||||
|  	CTL_DEV=7,		/* Devices */ | ||||
| -	CTL_BUS=8		/* Buses */ | ||||
| +	CTL_BUS=8,		/* Buses */ | ||||
| +	CTL_LIBGTOP=408		/* LibGTop */ | ||||
|  }; | ||||
|   | ||||
|  /* CTL_BUS names: */ | ||||
| diff -ru kernel-source-2.2.12/kernel/sysctl.c hacker-2.2.12/kernel/sysctl.c | ||||
| --- kernel-source-2.2.12/kernel/sysctl.c	Mon Aug  9 21:05:13 1999 | ||||
| +++ hacker-2.2.12/kernel/sysctl.c	Sat Dec 18 17:33:04 1999 | ||||
| @@ -83,7 +83,9 @@ | ||||
|  static ctl_table fs_table[]; | ||||
|  static ctl_table debug_table[]; | ||||
|  static ctl_table dev_table[]; | ||||
| - | ||||
| +#ifdef CONFIG_LIBGTOP | ||||
| +extern ctl_table libgtop_table[]; | ||||
| +#endif | ||||
|   | ||||
|  /* /proc declarations: */ | ||||
|   | ||||
| @@ -149,6 +151,9 @@ | ||||
|  	{CTL_FS, "fs", NULL, 0, 0555, fs_table}, | ||||
|  	{CTL_DEBUG, "debug", NULL, 0, 0555, debug_table}, | ||||
|          {CTL_DEV, "dev", NULL, 0, 0555, dev_table}, | ||||
| +#ifdef CONFIG_LIBGTOP | ||||
| +	{CTL_LIBGTOP, "libgtop", NULL, 0, 0555, libgtop_table}, | ||||
| +#endif | ||||
|  	{0} | ||||
|  }; | ||||
|   | ||||
| @@ -9,7 +9,6 @@ libgtop_2_0_la_SOURCES		= init.c open.c close.c command.c read.c \ | ||||
| 				  sysdeps.c | ||||
|  | ||||
| libgtop_2_0_la_LDFLAGS		= $(LT_VERSION_INFO) | ||||
| libgtop_2_0_la_LIBADD		= $(top_builddir)/sysdeps/common/libgtop_common-2.0.la $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la $(sysdeps_suid_lib) $(INTLLIBS) | ||||
|  | ||||
| BUILT_SOURCES			= lib.c | ||||
|  | ||||
|   | ||||
							
								
								
									
										170
									
								
								lib/error.c
									
									
									
									
									
								
							
							
						
						
									
										170
									
								
								lib/error.c
									
									
									
									
									
								
							| @@ -1,170 +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 <glibtop/error.h> | ||||
|  | ||||
| #define DEFAULT_NAME	"LibGTop-Server" | ||||
|  | ||||
| /* Prints error message and exits. */ | ||||
|  | ||||
| static void | ||||
| print_server_name (glibtop_server *server) | ||||
| { | ||||
|     fprintf (stderr, "%s: ", server ?  | ||||
| 	     (server->name ? server->name : DEFAULT_NAME) | ||||
| 	     : DEFAULT_NAME); | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_error_vr (glibtop_server *server, char *format, va_list args) | ||||
| { | ||||
|     print_server_name (server);	 | ||||
|     vfprintf (stderr, format, args); | ||||
|     fprintf (stderr, "\n"); | ||||
|  | ||||
| #ifdef LIBGTOP_ENABLE_DEBUG | ||||
|     abort (); | ||||
| #else | ||||
|     exit (1); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_error_io_vr (glibtop_server *server, char *format, int error, va_list args) | ||||
| { | ||||
|     print_server_name (server); | ||||
|     vfprintf (stderr, format, args); | ||||
|     fprintf (stderr, ": %s\n", strerror (error)); | ||||
|  | ||||
| #ifdef LIBGTOP_ENABLE_DEBUG | ||||
|     abort (); | ||||
| #else | ||||
|     exit (1); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_warn_vr (glibtop_server *server, char *format, va_list args) | ||||
| { | ||||
|     print_server_name (server); | ||||
|     vfprintf (stderr, format, args); | ||||
|     fprintf (stderr, "\n"); | ||||
|  | ||||
| #ifdef LIBGTOP_FATAL_WARNINGS | ||||
|     abort (); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_warn_io_vr (glibtop_server *server, char *format, int error, va_list args) | ||||
| { | ||||
|     print_server_name (server); | ||||
|     vfprintf (stderr, format, args); | ||||
|     fprintf (stderr, ": %s\n", strerror (error)); | ||||
|  | ||||
| #ifdef LIBGTOP_FATAL_WARNINGS | ||||
|     abort (); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_error_r (glibtop_server *server, char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
|  | ||||
|     va_start (args, format); | ||||
|     glibtop_error_vr (server, format, args); | ||||
|     va_end (args); | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_warn_r (glibtop_server *server, char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
|  | ||||
|     va_start (args, format); | ||||
|     glibtop_warn_vr (server, format, args); | ||||
|     va_end (args); | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_error_io_r (glibtop_server *server, char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
|  | ||||
|     va_start (args, format); | ||||
|     glibtop_error_io_vr (server, format, errno, args); | ||||
|     va_end (args); | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_warn_io_r (glibtop_server *server, char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
|  | ||||
|     va_start (args, format); | ||||
|     glibtop_warn_io_vr (server, format, errno, args); | ||||
|     va_end (args); | ||||
| } | ||||
|  | ||||
| #ifndef  __GNUC__ | ||||
|  | ||||
| static void | ||||
| glibtop_error (char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
|     va_start (args, format); | ||||
|     glibtop_error_vr (glibtop_global_server, format, args); | ||||
|     va_end (args); | ||||
| } | ||||
|  | ||||
| static void | ||||
| glibtop_warn (char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
|     va_start (args, format); | ||||
|     glibtop_warn_vr (glibtop_global_server, format, args); | ||||
|     va_end (args); | ||||
| } | ||||
|  | ||||
| static void | ||||
| glibtop_error_io (char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
|     va_start (args, format); | ||||
|     glibtop_error_io_vr (glibtop_global_server, format, errno, args); | ||||
|     va_end (args); | ||||
| } | ||||
|  | ||||
| static void | ||||
| glibtop_warn_io (char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
|     va_start (args, format); | ||||
|     glibtop_warn_io_vr (glibtop_global_server, format, errno, args); | ||||
|     va_end (args); | ||||
| } | ||||
|  | ||||
| #endif /* no __GNUC__ */ | ||||
							
								
								
									
										156
									
								
								lib/errors.c
									
									
									
									
									
								
							
							
						
						
									
										156
									
								
								lib/errors.c
									
									
									
									
									
								
							| @@ -1,156 +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 <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
| #include <glibtop/errors.h> | ||||
|  | ||||
| /* Error quark */ | ||||
| GQuark | ||||
| glibtop_error_quark (void) | ||||
| { | ||||
|     static GQuark q = 0; | ||||
|     if (q == 0) | ||||
| 	q = g_quark_from_static_string ("glibtop-error-quark"); | ||||
|  | ||||
|     return q; | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_error_vl (glibtop_client *client, glibtop_error code, | ||||
| 		  const char *format, va_list args) | ||||
| { | ||||
|     gchar *message; | ||||
|     GError *error; | ||||
|  | ||||
|     g_return_if_fail (GLIBTOP_IS_CLIENT (client)); | ||||
|     message = g_strdup_vprintf (format, args); | ||||
|  | ||||
|     error = g_error_new_literal (GLIBTOP_ERROR, code, message); | ||||
|     glibtop_client_propagate_error (client, error); | ||||
|  | ||||
|     g_error_free (error); | ||||
|     g_free (message); | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_error_io_vl (glibtop_client *client, glibtop_error code, | ||||
| 		     int io_errno, const char *format, va_list args) | ||||
| { | ||||
|     gchar *message, *fullmessage; | ||||
|     GError *error; | ||||
|  | ||||
|     g_return_if_fail (GLIBTOP_IS_CLIENT (client)); | ||||
|     message = g_strdup_vprintf (format, args); | ||||
|     fullmessage = g_strdup_printf ("%s: %s", message, strerror (io_errno)); | ||||
|  | ||||
|     error = g_error_new_literal (GLIBTOP_ERROR, code, message); | ||||
|     glibtop_client_propagate_error (client, error); | ||||
|  | ||||
|     g_error_free (error); | ||||
|     g_free (fullmessage); | ||||
|     g_free (message); | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_warn_vl (glibtop_client *client, glibtop_error code, | ||||
| 		 const char *format, va_list args) | ||||
| { | ||||
|     gchar *message; | ||||
|     GError *error; | ||||
|  | ||||
|     g_return_if_fail (GLIBTOP_IS_CLIENT (client)); | ||||
|     message = g_strdup_vprintf (format, args); | ||||
|  | ||||
|     error = g_error_new_literal (GLIBTOP_ERROR, code, message); | ||||
|     glibtop_client_propagate_warning (client, error); | ||||
|  | ||||
|     g_error_free (error); | ||||
|     g_free (message); | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_warn_io_vl (glibtop_client *client, glibtop_error code, | ||||
| 		    int io_errno, const char *format, va_list args) | ||||
| { | ||||
|     gchar *message, *fullmessage; | ||||
|     GError *error; | ||||
|  | ||||
|     g_return_if_fail (GLIBTOP_IS_CLIENT (client)); | ||||
|     message = g_strdup_vprintf (format, args); | ||||
|     fullmessage = g_strdup_printf ("%s: %s", message, strerror (io_errno)); | ||||
|  | ||||
|     error = g_error_new_literal (GLIBTOP_ERROR, code, message); | ||||
|     glibtop_client_propagate_warning (client, error); | ||||
|  | ||||
|     g_error_free (error); | ||||
|     g_free (fullmessage); | ||||
|     g_free (message); | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_error_l (glibtop_client *client, glibtop_error code, | ||||
| 		 char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
|  | ||||
|     va_start (args, format); | ||||
|     glibtop_error_vl (client, code, format, args); | ||||
|     va_end (args); | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_warn_l (glibtop_client *client, glibtop_error code, | ||||
| 		char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
|  | ||||
|     va_start (args, format); | ||||
|     glibtop_warn_vl (client, code, format, args); | ||||
|     va_end (args); | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_error_io_l (glibtop_client *client, glibtop_error code, | ||||
| 		    char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
|  | ||||
|     va_start (args, format); | ||||
|     glibtop_error_io_vl (client, code, errno, format, args); | ||||
|     va_end (args); | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_warn_io_l (glibtop_client *client, glibtop_error code, | ||||
| 		   char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
|  | ||||
|     va_start (args, format); | ||||
|     glibtop_warn_io_vl (client, code, errno, format, args); | ||||
|     va_end (args); | ||||
| } | ||||
|  | ||||
| @@ -1,120 +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 <glibtop.h> | ||||
| #include <glibtop/union.h> | ||||
|  | ||||
| #include <glibtop/glib-arrays.h> | ||||
|  | ||||
| GArray * | ||||
| glibtop_get_proclist_as_array_l (glibtop_client *client, int64_t which, | ||||
| 				 int64_t arg) | ||||
| { | ||||
|     glibtop_array array; | ||||
|     GArray *retval; | ||||
|     unsigned *ptr; | ||||
|     int i; | ||||
|  | ||||
|     ptr = glibtop_get_proclist_l (client, &array, which, arg); | ||||
|     if (!ptr) return NULL; | ||||
|  | ||||
|     retval = g_array_new (FALSE, TRUE, sizeof (guint)); | ||||
|     retval = g_array_set_size (retval, array.number); | ||||
|  | ||||
|     for (i = 0; i < array.number; i++) | ||||
| 	g_array_index (retval, guint, i) = ptr [i]; | ||||
|  | ||||
|     g_free (ptr); | ||||
|  | ||||
|     return retval; | ||||
| } | ||||
|  | ||||
| GPtrArray * | ||||
| glibtop_get_proc_args_as_array_l (glibtop_client *client, pid_t pid) | ||||
| { | ||||
|     glibtop_array array; | ||||
|     GPtrArray *retval; | ||||
|     char **ptr; | ||||
|     int i; | ||||
|  | ||||
|     ptr = glibtop_get_proc_args_l (client, &array, pid); | ||||
|     if (!ptr) return NULL; | ||||
|  | ||||
|     retval = g_ptr_array_new (); | ||||
|     g_ptr_array_set_size (retval, array.number); | ||||
|  | ||||
|     for (i = 0; i < array.number; i++) { | ||||
| 	retval->pdata [i] = g_strdup (ptr [i]); | ||||
| 	g_free (ptr [i]); | ||||
|     } | ||||
|  | ||||
|     g_free (ptr); | ||||
|  | ||||
|     return retval; | ||||
| } | ||||
|  | ||||
| GPtrArray * | ||||
| glibtop_get_proc_map_as_array_l (glibtop_client *client, pid_t pid) | ||||
| { | ||||
|     glibtop_array array; | ||||
|     GPtrArray *retval; | ||||
|     glibtop_map_entry *ptr; | ||||
|     int i; | ||||
|  | ||||
|     ptr = glibtop_get_proc_map_l (client, &array, pid); | ||||
|     if (!ptr) return NULL; | ||||
|  | ||||
|     retval = g_ptr_array_new (); | ||||
|     g_ptr_array_set_size (retval, array.number); | ||||
|  | ||||
|     for (i = 0; i < array.number; i++) | ||||
| 	retval->pdata [i] = g_memdup (ptr+i, sizeof (glibtop_map_entry)); | ||||
|  | ||||
|     g_free (ptr); | ||||
|  | ||||
|     return retval; | ||||
| } | ||||
|  | ||||
| GPtrArray * | ||||
| glibtop_get_mountlist_as_array_l (glibtop_client *client, int all_fs) | ||||
| { | ||||
|     glibtop_array array; | ||||
|     GPtrArray *retval; | ||||
|     glibtop_mountentry *ptr; | ||||
|     int i; | ||||
|  | ||||
|     ptr = glibtop_get_mountlist_l (client, &array, all_fs); | ||||
|     if (!ptr) return NULL; | ||||
|  | ||||
|     retval = g_ptr_array_new (); | ||||
|     g_ptr_array_set_size (retval, array.number); | ||||
|  | ||||
|     for (i = 0; i < array.number; i++) | ||||
| 	retval->pdata [i] = g_memdup (ptr+i, sizeof (glibtop_mountentry)); | ||||
|  | ||||
|     g_free (ptr); | ||||
|  | ||||
|     return retval; | ||||
| } | ||||
| @@ -1,280 +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 <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| #include <glibtop/glibtop-backend.h> | ||||
| #include <glibtop/glibtop-backend-info.h> | ||||
|  | ||||
| static GHashTable *_glibtop_backend_list = NULL; | ||||
| static long _glibtop_backend_nr = 0; | ||||
|  | ||||
| #define LIBGTOP_XML_NAMESPACE	"http://www.home-of-linux.org/libgtop/1.1" | ||||
|  | ||||
| #include <libxml/parser.h> | ||||
|  | ||||
| #include <dirent.h> | ||||
|  | ||||
| static void _glibtop_init_gmodule_backends (const char *); | ||||
|  | ||||
| void | ||||
| glibtop_init_backends (void) | ||||
| { | ||||
|     static int backends_initialized = 0; | ||||
|  | ||||
|     if (backends_initialized) | ||||
| 	return; | ||||
|     backends_initialized = 1; | ||||
|  | ||||
|     LIBXML_TEST_VERSION; | ||||
|  | ||||
|     _glibtop_init_gmodule_backends (LIBGTOP_BACKEND_DIR); | ||||
| } | ||||
|  | ||||
| static gchar * | ||||
| _get_library_filename (xmlDocPtr doc, xmlNodePtr cur, const char *directory) | ||||
| { | ||||
|     char *filename = xmlNodeListGetString (doc, cur->xmlChildrenNode, 1); | ||||
|     gchar *retval; | ||||
|  | ||||
|     if (!filename) | ||||
| 	return NULL; | ||||
|  | ||||
|     /* already absolute */ | ||||
|     if (filename [0] == '/') | ||||
| 	retval = g_strdup (filename); | ||||
|     else | ||||
| 	retval = g_strdup_printf ("%s/%s", directory, filename); | ||||
|  | ||||
|     return retval; | ||||
| } | ||||
|  | ||||
| static GSList * | ||||
| _parse_extra_libs (xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, const char *dir) | ||||
| { | ||||
|     GSList *list = NULL; | ||||
|  | ||||
|     /* We don't care what the top level element name is */ | ||||
|     cur = cur->xmlChildrenNode; | ||||
|     while (cur != NULL) { | ||||
|         if ((!strcmp (cur->name, "ExtraLib")) && (cur->ns == ns)) { | ||||
| 	    xmlNodePtr sub = cur->xmlChildrenNode; | ||||
|  | ||||
| 	    while (sub != NULL) { | ||||
| 		if ((!strcmp (sub->name, "ShlibName")) && (sub->ns == ns)) | ||||
| 		    list = g_slist_append | ||||
| 			(list, _get_library_filename (doc, sub, dir)); | ||||
|  | ||||
| 		sub = sub->next; | ||||
| 	    } | ||||
| 	} | ||||
|  | ||||
|         cur = cur->next; | ||||
|     } | ||||
|  | ||||
|     return list; | ||||
| } | ||||
|  | ||||
| static glibtop_backend_entry * | ||||
| _parseBackend (xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, const char *dir) | ||||
| { | ||||
|     glibtop_backend_entry *ret = NULL; | ||||
|  | ||||
|     /* | ||||
|      * allocate the struct | ||||
|      */ | ||||
|     ret = g_new0 (glibtop_backend_entry, 1); | ||||
|  | ||||
|     /* We don't care what the top level element name is */ | ||||
|     cur = cur->xmlChildrenNode; | ||||
|     while (cur != NULL) { | ||||
|         if ((!strcmp (cur->name, "Name")) && (cur->ns == ns)) | ||||
|             ret->name = xmlNodeListGetString | ||||
| 		(doc, cur->xmlChildrenNode, 1); | ||||
|  | ||||
|         if ((!strcmp (cur->name, "Location")) && (cur->ns == ns)) { | ||||
| 	    xmlNodePtr sub = cur->xmlChildrenNode; | ||||
|  | ||||
| 	    while (sub != NULL) { | ||||
| 		if ((!strcmp (sub->name, "LibtoolName")) && (sub->ns == ns)) | ||||
| 		    ret->libtool_name = _get_library_filename (doc, sub, dir); | ||||
| 		if ((!strcmp (sub->name, "ShlibName")) && (sub->ns == ns)) | ||||
| 		    ret->shlib_name = _get_library_filename (doc, sub, dir); | ||||
|  | ||||
| 		if ((!strcmp (sub->name, "ExtraLibs")) && (sub->ns == ns)) | ||||
| 		    ret->extra_libs = _parse_extra_libs (doc, ns, sub, dir); | ||||
|  | ||||
| 		sub = sub->next; | ||||
| 	    } | ||||
| 	} | ||||
|  | ||||
|         cur = cur->next; | ||||
|     } | ||||
|  | ||||
|     return ret; | ||||
| } | ||||
|  | ||||
| static void | ||||
| _glibtop_init_gmodule_backends (const char *directory) | ||||
| { | ||||
|     DIR *dir; | ||||
|     struct dirent *entry; | ||||
|  | ||||
|     dir = opendir (directory); | ||||
|     if (!dir) return; | ||||
|  | ||||
|     while ((entry = readdir (dir)) != NULL) { | ||||
| 	size_t len = strlen (entry->d_name); | ||||
| 	gchar *filename; | ||||
| 	xmlDocPtr doc; | ||||
| 	xmlNsPtr ns; | ||||
| 	xmlNodePtr cur; | ||||
|  | ||||
| 	if (len < 8) | ||||
| 	    continue; | ||||
|  | ||||
| 	if (strcmp (entry->d_name+len-8, ".backend")) | ||||
| 	    continue; | ||||
|  | ||||
| 	filename = g_strdup_printf ("%s/%s", directory, entry->d_name); | ||||
|  | ||||
| 	doc = xmlParseFile (filename); | ||||
|  | ||||
| 	if (!doc) { | ||||
| 	    g_warning ("Cannot parse %s", filename); | ||||
| 	    g_free (filename); | ||||
| 	    continue; | ||||
| 	} | ||||
|  | ||||
| 	/* Make sure the document is of the right kind */ | ||||
|  | ||||
| 	cur = xmlDocGetRootElement (doc); | ||||
| 	if (!cur) { | ||||
| 	    xmlFreeDoc (doc); | ||||
| 	    g_free (filename); | ||||
| 	    continue; | ||||
| 	} | ||||
|  | ||||
| 	ns = xmlSearchNsByHref (doc, cur, LIBGTOP_XML_NAMESPACE); | ||||
| 	if (!ns) { | ||||
| 	    g_warning ("File %s of wrong type; LibGTop Namespace not found", | ||||
| 		       filename); | ||||
| 	    g_free (filename); | ||||
| 	    xmlFreeDoc (doc); | ||||
| 	    continue; | ||||
| 	} | ||||
|  | ||||
| 	if (strcmp (cur->name, "Backends")) { | ||||
| 	    g_warning ("File %s of the wrong type, root node != 'Backends'", | ||||
| 		       filename); | ||||
| 	    g_free (filename); | ||||
| 	    xmlFreeDoc (doc); | ||||
| 	    continue; | ||||
| 	} | ||||
|  | ||||
| 	cur = cur->xmlChildrenNode; | ||||
| 	while (cur != NULL) { | ||||
| 	    glibtop_backend_entry *backend; | ||||
|  | ||||
| 	    if ((!strcmp(cur->name, "Backend")) && (cur->ns == ns)) { | ||||
| 		backend = _parseBackend (doc, ns, cur, directory); | ||||
| 		if (!backend) { | ||||
| 		    g_warning ("File %s of wrong type; cannot parse", | ||||
| 			       filename); | ||||
| 		    continue; | ||||
| 		} | ||||
|  | ||||
| 		glibtop_register_backend (backend); | ||||
| 	    } | ||||
| 	    cur = cur->next; | ||||
| 	} | ||||
|  | ||||
| 	g_free (filename); | ||||
| 	xmlFreeDoc (doc); | ||||
|     } | ||||
|  | ||||
|     closedir (dir); | ||||
| } | ||||
|  | ||||
| long | ||||
| glibtop_register_backend (glibtop_backend_entry *entry) | ||||
| { | ||||
|     long id; | ||||
|  | ||||
|     if (!_glibtop_backend_list) | ||||
| 	_glibtop_backend_list = g_hash_table_new (NULL, NULL); | ||||
|  | ||||
|     id = ++_glibtop_backend_nr; | ||||
|  | ||||
|     g_hash_table_insert (_glibtop_backend_list, | ||||
| 			 GINT_TO_POINTER (id), | ||||
| 			 entry); | ||||
|  | ||||
|     return id; | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_unregister_backend (long id) | ||||
| { | ||||
|     g_hash_table_remove (_glibtop_backend_list, | ||||
| 			 GINT_TO_POINTER (id)); | ||||
| } | ||||
|  | ||||
| glibtop_backend_entry * | ||||
| glibtop_backend_by_id (long id) | ||||
| { | ||||
|     return g_hash_table_lookup (_glibtop_backend_list, | ||||
| 				GINT_TO_POINTER (id)); | ||||
| } | ||||
|  | ||||
| typedef struct { | ||||
|     const char *backend_name; | ||||
|     glibtop_backend_entry *entry; | ||||
| } _find_by_name_param_t; | ||||
|  | ||||
| static void | ||||
| find_by_name (gpointer key, gpointer value, gpointer user_data) | ||||
| { | ||||
|     _find_by_name_param_t *param = (_find_by_name_param_t *) user_data; | ||||
|     glibtop_backend_entry *entry = (glibtop_backend_entry *) value; | ||||
|  | ||||
|     if (!entry || !entry->name || param->entry) | ||||
| 	return; | ||||
|  | ||||
|     if (!strcmp (entry->name, param->backend_name)) | ||||
| 	param->entry = entry; | ||||
| } | ||||
|  | ||||
| glibtop_backend_entry * | ||||
| glibtop_backend_by_name (const char *backend_name) | ||||
| { | ||||
|     _find_by_name_param_t param = { backend_name, NULL }; | ||||
|  | ||||
|     g_hash_table_foreach (_glibtop_backend_list, | ||||
| 			  find_by_name, ¶m); | ||||
|  | ||||
|     return param.entry; | ||||
| } | ||||
| @@ -1,271 +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 2.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 <glibtop.h> | ||||
|  | ||||
| #include <glib-object.h> | ||||
|  | ||||
| #include <glibtop/glibtop-backend.h> | ||||
| #include <glibtop/glibtop-backend-info.h> | ||||
|  | ||||
| static void glibtop_backend_class_init    (glibtop_backend_class  *klass); | ||||
| static void glibtop_backend_init          (glibtop_backend        *backend); | ||||
| static void glibtop_backend_finalize      (GObject                *object); | ||||
|  | ||||
| static gpointer parent_class = NULL; | ||||
|  | ||||
|  | ||||
| /* Internal data */ | ||||
|  | ||||
| struct _glibtop_backend_private | ||||
| { | ||||
|     const glibtop_backend_info *info; | ||||
|  | ||||
|     glibtop_closure *closure_data; | ||||
|  | ||||
|     glibtop_server *server; | ||||
|     glibtop_backend_module *module; | ||||
| }; | ||||
|  | ||||
| GType | ||||
| glibtop_backend_get_type (void) | ||||
| { | ||||
|     static GType glibtop_backend_type = 0; | ||||
|    | ||||
|     if (!glibtop_backend_type) { | ||||
| 	static const GTypeInfo glibtop_backend_info = { | ||||
| 	    sizeof (glibtop_backend_class), | ||||
| 	    NULL,		/* base_class_init */ | ||||
| 	    NULL,		/* base_class_finalize */ | ||||
| 	    (GClassInitFunc) glibtop_backend_class_init, | ||||
| 	    NULL,		/* class_finalize */ | ||||
| 	    NULL,		/* class_data */ | ||||
| 	    sizeof (glibtop_backend), | ||||
| 	    16,			/* n_preallocs */ | ||||
| 	    (GInstanceInitFunc) glibtop_backend_init, | ||||
| 	}; | ||||
|        | ||||
| 	glibtop_backend_type = g_type_register_static | ||||
| 	    (G_TYPE_OBJECT, "glibtop_backend", &glibtop_backend_info, 0); | ||||
|     } | ||||
|  | ||||
|     return glibtop_backend_type; | ||||
| } | ||||
|  | ||||
| static void | ||||
| glibtop_backend_class_init (glibtop_backend_class *class) | ||||
| { | ||||
|     GObjectClass *gobject_class; | ||||
|  | ||||
|     gobject_class = (GObjectClass *) class; | ||||
|    | ||||
|     parent_class = g_type_class_ref (G_TYPE_OBJECT); | ||||
|  | ||||
|     gobject_class->finalize = glibtop_backend_finalize; | ||||
| } | ||||
|  | ||||
| static void | ||||
| glibtop_backend_init (glibtop_backend *backend) | ||||
| { | ||||
|     glibtop_backend_private *priv; | ||||
|  | ||||
|     priv = g_new0 (glibtop_backend_private, 1); | ||||
|     backend->_priv = priv; | ||||
| } | ||||
|  | ||||
| static void | ||||
| glibtop_backend_finalize (GObject *object) | ||||
| { | ||||
|     glibtop_backend *glibtop; | ||||
|     glibtop_backend_private *priv = NULL; | ||||
|    | ||||
|     glibtop = GLIBTOP_BACKEND (object); | ||||
|     priv = glibtop->_priv; | ||||
|  | ||||
|     g_free (priv); | ||||
|    | ||||
|     if (G_OBJECT_CLASS (parent_class)->finalize) | ||||
| 	G_OBJECT_CLASS (parent_class)->finalize (object); | ||||
| } | ||||
|  | ||||
| static void | ||||
| unload_module (gpointer data, gpointer user_data) | ||||
| { | ||||
|     g_module_close (data); | ||||
| } | ||||
|  | ||||
| static int | ||||
| load_extra_libs (glibtop_backend_entry *entry, GError **error) | ||||
| { | ||||
|     GSList *list; | ||||
|     GSList *loaded_here = NULL; | ||||
|  | ||||
|     for (list = entry->extra_libs; list; list = list->next) { | ||||
| 	const gchar *filename = list->data; | ||||
| 	GModule *module; | ||||
|  | ||||
| 	module = g_module_open (filename, G_MODULE_BIND_LAZY); | ||||
| 	if (!module) { | ||||
| 	    g_set_error (error, GLIBTOP_ERROR, GLIBTOP_ERROR_NO_SUCH_BACKEND, | ||||
| 			 "Cannot open extra shared library `%s' " | ||||
| 			 "for backend `%s' (%s)", filename, entry->name, | ||||
| 			 g_module_error ()); | ||||
| 	    g_slist_foreach (loaded_here, unload_module, NULL); | ||||
| 	    return -GLIBTOP_ERROR_NO_SUCH_BACKEND; | ||||
| 	} | ||||
|  | ||||
| 	loaded_here = g_slist_prepend (loaded_here, module); | ||||
|     } | ||||
|  | ||||
|     entry->_priv->extra_modules = g_slist_concat | ||||
| 	(loaded_here, entry->_priv->extra_modules); | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| glibtop_backend * | ||||
| glibtop_backend_get (const char *backend_name, u_int64_t features, | ||||
| 		     const char **backend_args, GError **error) | ||||
| { | ||||
|     const glibtop_backend_info *info; | ||||
|     glibtop_backend_entry *entry; | ||||
|     glibtop_backend *backend; | ||||
|  | ||||
|     glibtop_init_backends (); | ||||
|  | ||||
|     entry = glibtop_backend_by_name (backend_name); | ||||
|     if (!entry) { | ||||
| 	g_set_error (error, GLIBTOP_ERROR, GLIBTOP_ERROR_NO_SUCH_BACKEND, | ||||
| 		     "No backend with this name"); | ||||
| 	return NULL; | ||||
|     } | ||||
|  | ||||
|     if (!entry->_priv) { | ||||
| 	entry->_priv = g_new0 (glibtop_backend_module, 1); | ||||
|  | ||||
| 	if (entry->extra_libs) { | ||||
| 	    int retval; | ||||
|  | ||||
| 	    retval = load_extra_libs (entry, error); | ||||
| 	    if (retval < 0) | ||||
| 		return NULL; | ||||
| 	} | ||||
|  | ||||
| 	entry->_priv->module = g_module_open (entry->shlib_name, | ||||
| 					      G_MODULE_BIND_LAZY); | ||||
| 	if (!entry->_priv->module) { | ||||
| 	    g_set_error (error, GLIBTOP_ERROR, GLIBTOP_ERROR_NO_SUCH_BACKEND, | ||||
| 			 "Cannot open shared library `%s' " | ||||
| 			 "for backend `%s' (%s)", entry->shlib_name, | ||||
| 			 entry->name, g_module_error ()); | ||||
| 	    return NULL; | ||||
| 	} | ||||
|  | ||||
| 	if (!g_module_symbol (entry->_priv->module, | ||||
| 			      "LibGTopBackendInfo", | ||||
| 			      (gpointer*) &entry->info)) { | ||||
| 	    g_set_error (error, GLIBTOP_ERROR, GLIBTOP_ERROR_NO_SUCH_BACKEND, | ||||
| 			 "Library `%s' is not a valid " | ||||
| 			 "LibGTop Backend library (start symbol not found)", | ||||
| 			 entry->shlib_name); | ||||
|  | ||||
| 	    g_module_close (entry->_priv->module); | ||||
| 	    g_free (entry->_priv); | ||||
| 	    entry->_priv = NULL; | ||||
|  | ||||
| 	    return NULL; | ||||
| 	} | ||||
|     } | ||||
|  | ||||
|     info = entry->info; | ||||
|     if (!info) { | ||||
| 	g_set_error (error, GLIBTOP_ERROR, GLIBTOP_ERROR_NO_SUCH_BACKEND, | ||||
| 		     "Can't get backend info"); | ||||
| 	return NULL; | ||||
|     } | ||||
|  | ||||
|     backend = g_object_new (GLIBTOP_TYPE_BACKEND, NULL); | ||||
|  | ||||
|     backend->_priv->module = entry->_priv; | ||||
|     backend->_priv->info = info; | ||||
|  | ||||
|     backend->_priv->server = glibtop_server_new (); | ||||
|  | ||||
|     if (info->open) { | ||||
| 	int retval; | ||||
|  | ||||
| 	retval = info->open (backend->_priv->server, backend, features, | ||||
| 			     backend_args); | ||||
| 	if (retval) { | ||||
| 	    g_set_error (error, GLIBTOP_ERROR, GLIBTOP_ERROR_NO_SUCH_BACKEND, | ||||
| 			 "Backend open function return error condition"); | ||||
|  | ||||
| 	    g_object_unref (G_OBJECT (backend)); | ||||
| 	    return NULL; | ||||
| 	} | ||||
|     } | ||||
|  | ||||
|     entry->_priv->refcount++; | ||||
|  | ||||
|     return backend; | ||||
| } | ||||
|  | ||||
| glibtop_call_vector * | ||||
| glibtop_backend_get_call_vector (glibtop_backend *backend) | ||||
| { | ||||
|     g_return_val_if_fail (GLIBTOP_IS_BACKEND (backend), NULL); | ||||
|  | ||||
|     g_assert (backend->_priv->info != NULL); | ||||
|  | ||||
|     return backend->_priv->info->call_vector; | ||||
| } | ||||
|  | ||||
| glibtop_server * | ||||
| glibtop_backend_get_server (glibtop_backend *backend) | ||||
| { | ||||
|     g_return_val_if_fail (GLIBTOP_IS_BACKEND (backend), NULL); | ||||
|  | ||||
|     glibtop_server_ref (backend->_priv->server); | ||||
|  | ||||
|     return backend->_priv->server; | ||||
| } | ||||
|  | ||||
| glibtop_closure * | ||||
| glibtop_backend_get_closure_data (glibtop_backend *backend) | ||||
| { | ||||
|     g_return_val_if_fail (GLIBTOP_IS_BACKEND (backend), NULL); | ||||
|  | ||||
|     return backend->_priv->closure_data; | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_backend_set_closure_data (glibtop_backend *backend, | ||||
| 				  glibtop_closure *closure) | ||||
| { | ||||
|     g_return_if_fail (GLIBTOP_IS_BACKEND (backend)); | ||||
|     g_return_if_fail (backend->_priv->closure_data == NULL); | ||||
|  | ||||
|     backend->_priv->closure_data = closure; | ||||
| } | ||||
| @@ -1,34 +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 2.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_CLIENT_PRIVATE_H__ | ||||
| #define __GLIBTOP_CLIENT_PRIVATE_H__ | ||||
|  | ||||
| struct _glibtop_client_private | ||||
| { | ||||
|     GSList *backend_list; | ||||
| }; | ||||
|  | ||||
| #endif | ||||
| @@ -1,257 +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 2.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 <glibtop.h> | ||||
|  | ||||
| #include <glib-object.h> | ||||
|  | ||||
| static void glibtop_client_class_init    (glibtop_client_class   *klass); | ||||
| static void glibtop_client_init          (glibtop_client         *client); | ||||
| static void glibtop_client_finalize      (GObject                *object); | ||||
|  | ||||
| static gpointer parent_class = NULL; | ||||
|  | ||||
| #include <glibtop-client-private.h> | ||||
|  | ||||
| enum { | ||||
|     GLIBTOP_CLIENT_SIGNAL_ERROR, | ||||
|     GLIBTOP_CLIENT_SIGNAL_WARNING, | ||||
|     LAST_SIGNAL | ||||
| }; | ||||
|  | ||||
| static guint glibtop_client_signals [LAST_SIGNAL] = { 0 }; | ||||
|  | ||||
| GType | ||||
| glibtop_client_get_type (void) | ||||
| { | ||||
|     static GType glibtop_client_type = 0; | ||||
|    | ||||
|     if (!glibtop_client_type) { | ||||
| 	static const GTypeInfo glibtop_client_info = { | ||||
| 	    sizeof (glibtop_client_class), | ||||
| 	    NULL,		/* base_class_init */ | ||||
| 	    NULL,		/* base_class_finalize */ | ||||
| 	    (GClassInitFunc) glibtop_client_class_init, | ||||
| 	    NULL,		/* class_finalize */ | ||||
| 	    NULL,		/* class_data */ | ||||
| 	    sizeof (glibtop_client), | ||||
| 	    16,			/* n_preallocs */ | ||||
| 	    (GInstanceInitFunc) glibtop_client_init, | ||||
| 	}; | ||||
|        | ||||
| 	glibtop_client_type = g_type_register_static | ||||
| 	    (G_TYPE_OBJECT, "glibtop_client", &glibtop_client_info, 0); | ||||
|     } | ||||
|  | ||||
|     return glibtop_client_type; | ||||
| } | ||||
|  | ||||
| static void | ||||
| glibtop_client_error_handler (glibtop_client *client, GError *error) | ||||
| { | ||||
|     g_return_if_fail (GLIBTOP_IS_CLIENT (client)); | ||||
|  | ||||
|     if (error == NULL) | ||||
| 	return; | ||||
|  | ||||
|     g_error ("%s (%d): %s", g_quark_to_string (error->domain), | ||||
| 	     error->code, error->message); | ||||
| } | ||||
|  | ||||
| static void | ||||
| glibtop_client_warning_handler (glibtop_client *client, GError *error) | ||||
| { | ||||
|     g_return_if_fail (GLIBTOP_IS_CLIENT (client)); | ||||
|  | ||||
|     if (error == NULL) | ||||
| 	return; | ||||
|  | ||||
|     g_warning ("%s (%d): %s", g_quark_to_string (error->domain), | ||||
| 	       error->code, error->message); | ||||
|  | ||||
| } | ||||
|  | ||||
| static void | ||||
| glibtop_client_class_init (glibtop_client_class *klass) | ||||
| { | ||||
|     GObjectClass *gobject_class; | ||||
|  | ||||
|     gobject_class = (GObjectClass *) klass; | ||||
|    | ||||
|     parent_class = g_type_class_peek_parent (klass); | ||||
|  | ||||
|     glibtop_client_signals [GLIBTOP_CLIENT_SIGNAL_ERROR] = | ||||
| 	g_signal_new ("error", | ||||
| 		       G_TYPE_FROM_CLASS (klass), | ||||
| 		       G_SIGNAL_RUN_LAST, | ||||
| 		       G_STRUCT_OFFSET (glibtop_client_class, error), | ||||
| 		       NULL, NULL, | ||||
| 		       g_cclosure_marshal_VOID__POINTER, | ||||
| 		       G_TYPE_NONE, 1, G_TYPE_POINTER, NULL); | ||||
|  | ||||
|     glibtop_client_signals [GLIBTOP_CLIENT_SIGNAL_WARNING] = | ||||
| 	g_signal_new ("warning", | ||||
| 		       G_TYPE_FROM_CLASS (klass), | ||||
| 		       G_SIGNAL_RUN_LAST, | ||||
| 		       G_STRUCT_OFFSET (glibtop_client_class, warning), | ||||
| 		       NULL, NULL, | ||||
| 		       g_cclosure_marshal_VOID__POINTER, | ||||
| 		       G_TYPE_NONE, 1, G_TYPE_POINTER, NULL); | ||||
|  | ||||
|     klass->error = glibtop_client_error_handler; | ||||
|     klass->warning = glibtop_client_warning_handler; | ||||
|    | ||||
|     gobject_class->finalize = glibtop_client_finalize; | ||||
| } | ||||
|  | ||||
| static void | ||||
| glibtop_client_init (glibtop_client *glibtop) | ||||
| { | ||||
|     glibtop_client_private *priv; | ||||
|    | ||||
|     priv = g_new0 (glibtop_client_private, 1); | ||||
|     glibtop->_priv = priv; | ||||
| } | ||||
|  | ||||
| static void | ||||
| glibtop_client_finalize (GObject *object) | ||||
| { | ||||
|     glibtop_client *glibtop; | ||||
|     glibtop_client_private *priv = NULL; | ||||
|     GSList *c; | ||||
|    | ||||
|     glibtop = GLIBTOP_CLIENT (object); | ||||
|     priv = glibtop->_priv; | ||||
|  | ||||
|     for (c = priv->backend_list; c; c = c->next) | ||||
| 	g_object_unref (G_OBJECT (c->data)); | ||||
|     g_slist_free (priv->backend_list); | ||||
|    | ||||
|     g_free (priv); | ||||
|    | ||||
|     if (G_OBJECT_CLASS (parent_class)->finalize) | ||||
| 	G_OBJECT_CLASS (parent_class)->finalize (object); | ||||
| } | ||||
|  | ||||
| glibtop_client * | ||||
| glibtop_client_new (void) | ||||
| { | ||||
|     return g_object_new (GLIBTOP_TYPE_CLIENT, NULL); | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_client_propagate_error (glibtop_client *client, GError *error) | ||||
| { | ||||
|     GValue params [2] = { { 0, }, { 0, } }; | ||||
|  | ||||
|     g_return_if_fail (GLIBTOP_IS_CLIENT (client)); | ||||
|  | ||||
|     if (error == NULL) | ||||
| 	return; | ||||
|  | ||||
|     g_value_init (params, GLIBTOP_CLIENT_TYPE (client)); | ||||
|     g_value_set_object (params, G_OBJECT (client)); | ||||
|  | ||||
|     g_value_init (params + 1, G_TYPE_POINTER); | ||||
|     g_value_set_pointer (params + 1, error); | ||||
|  | ||||
|     g_signal_emitv (params, | ||||
| 		    glibtop_client_signals [GLIBTOP_CLIENT_SIGNAL_ERROR], | ||||
| 		    0, NULL); | ||||
|    | ||||
|     g_value_unset (params + 1); | ||||
|     g_value_unset (params + 0); | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_client_propagate_warning (glibtop_client *client, GError *error) | ||||
| { | ||||
|     GValue params [2] = { { 0, }, { 0, } }; | ||||
|  | ||||
|     g_return_if_fail (GLIBTOP_IS_CLIENT (client)); | ||||
|  | ||||
|     if (error == NULL) | ||||
| 	return; | ||||
|  | ||||
|     g_value_init (params, GLIBTOP_CLIENT_TYPE (client)); | ||||
|     g_value_set_object (params, G_OBJECT (client)); | ||||
|  | ||||
|     g_value_init (params + 1, G_TYPE_POINTER); | ||||
|     g_value_set_pointer (params + 1, error); | ||||
|  | ||||
|     g_signal_emitv (params, | ||||
| 		    glibtop_client_signals [GLIBTOP_CLIENT_SIGNAL_WARNING], | ||||
| 		    0, NULL); | ||||
|    | ||||
|     g_value_unset (params + 1); | ||||
|     g_value_unset (params + 0); | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_client_open_backend (glibtop_client *client, const char *backend_name, | ||||
| 			     u_int64_t features, const char **backend_args) | ||||
| { | ||||
|     glibtop_backend *backend; | ||||
|     GError *error = NULL; | ||||
|  | ||||
|     g_return_if_fail (GLIBTOP_IS_CLIENT (client)); | ||||
|  | ||||
|     backend = glibtop_backend_get (backend_name, features, backend_args, | ||||
| 				   &error); | ||||
|     if (!backend) { | ||||
| 	glibtop_client_propagate_error (client, error); | ||||
| 	g_error_free (error); | ||||
| 	return; | ||||
|     } | ||||
|  | ||||
|     glibtop_client_add_backend (client, backend); | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_client_add_backend (glibtop_client *client, | ||||
| 			    glibtop_backend *backend) | ||||
| { | ||||
|     g_return_if_fail (GLIBTOP_IS_CLIENT (client)); | ||||
|     g_return_if_fail (GLIBTOP_IS_BACKEND (backend)); | ||||
|  | ||||
|     client->_priv->backend_list = g_slist_append | ||||
| 	(client->_priv->backend_list, backend); | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_client_remove_backend (glibtop_client *client, | ||||
| 			       glibtop_backend *backend) | ||||
| { | ||||
|     GSList *c; | ||||
|  | ||||
|     g_return_if_fail (GLIBTOP_IS_CLIENT (client)); | ||||
|     g_return_if_fail (GLIBTOP_IS_BACKEND (backend)); | ||||
|  | ||||
|     c = g_slist_find (client->_priv->backend_list, backend); | ||||
|     if (!c) return; | ||||
|  | ||||
|     g_slist_remove_link (client->_priv->backend_list, c); | ||||
|     g_object_unref (G_OBJECT (backend)); | ||||
| } | ||||
| @@ -1,38 +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_SERVER_PRIVATE_H__ | ||||
| #define __GLIBTOP_SERVER_PRIVATE_H__ | ||||
|  | ||||
| #include <glib.h> | ||||
|  | ||||
| typedef struct _glibtop_server_private glibtop_server_private; | ||||
|  | ||||
| struct _glibtop_server_private | ||||
| { | ||||
|     GSList *backend_list; | ||||
| }; | ||||
|  | ||||
| #endif | ||||
| @@ -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 2.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 <glibtop.h> | ||||
| #include <glibtop-server-private.h> | ||||
|  | ||||
| glibtop_server * | ||||
| glibtop_server_new (void) | ||||
| { | ||||
|     glibtop_server *retval; | ||||
|  | ||||
|     retval = g_new0 (glibtop_server, 1); | ||||
|     retval->info = g_new0 (glibtop_server_info, 1); | ||||
|     retval->_priv = g_new0 (glibtop_server_private, 1); | ||||
|     retval->refcount = 1; | ||||
|  | ||||
|     return retval; | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_server_ref (glibtop_server *server) | ||||
| { | ||||
|     server->refcount++; | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_server_unref (glibtop_server *server) | ||||
| { | ||||
|     server->refcount--; | ||||
|  | ||||
|     if (server->refcount <= 0) { | ||||
| 	g_free (server->_priv); | ||||
| 	g_free (server->info); | ||||
| 	g_free (server); | ||||
|     } | ||||
| } | ||||
| @@ -1,104 +0,0 @@ | ||||
| #!/usr/bin/perl | ||||
|  | ||||
| die "Usage: $0 features.def structures.def" unless $#ARGV == 2; | ||||
|  | ||||
| $[ = 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 $_; | ||||
| } | ||||
|  | ||||
| $structures{$structure_count++} = 'glibtop'; | ||||
|  | ||||
| open FEATURESDEF, $ARGV[1] or | ||||
|   die "open ($ARGV[1]): $!"; | ||||
|  | ||||
| while (<FEATURESDEF>) { | ||||
|   chop;				# strip record separator | ||||
|    | ||||
|   if (/^[^\#]/) { | ||||
|     &parse_features_def ($_); | ||||
|   } | ||||
| } | ||||
|  | ||||
| close FEATURESDEF; | ||||
|  | ||||
| open STRUCTDEF, $ARGV[2] or | ||||
|   die "open ($ARGV[2]): $!"; | ||||
|  | ||||
| while (<STRUCTDEF>) { | ||||
|   chop;				# strip record separator | ||||
|    | ||||
|   if (/^[^\#]/) { | ||||
|     &parse_structure_def ($_); | ||||
|   } | ||||
| } | ||||
|  | ||||
| close STRUCTDEF; | ||||
|  | ||||
| $init_structures_code = sprintf | ||||
|   (qq[\tscm_glibtop_structure_tags [GLIBTOP_STRUCTURE_GLIBTOP] = scm_make_structure_type\n\t\t("glibtop", sizeof (glibtop));\n]); | ||||
|  | ||||
| for ($nr = 0; $nr < $structure_count; $nr++) { | ||||
|   $structure = $structures{$nr}; | ||||
|  | ||||
|   $init_structures_code .= sprintf | ||||
|     (qq[\tscm_glibtop_structure_tags [GLIBTOP_STRUCTURE_%s] = scm_make_structure_type\n\t\t("%s", sizeof (%s));\n], | ||||
|      toupper($structure), $structure, $structure); | ||||
| } | ||||
|  | ||||
| print qq[/* structures.h */]; | ||||
| print qq[/* This is a generated file.  Please modify \`guile.pl\' */]; | ||||
| print ''; | ||||
| print qq[\#ifndef __GLIBTOP_STRUCTURES_H__]; | ||||
| print qq[\#define __GLIBTOP_STRUCTURES_H__]; | ||||
| print ''; | ||||
| print qq[\#include <glibtop.h>]; | ||||
| print ''; | ||||
| print qq[BEGIN_LIBGTOP_DECLS]; | ||||
| print ''; | ||||
|  | ||||
| for ($nr = 0; $nr < $structure_count; $nr++) { | ||||
|   $structure = $structures{$nr}; | ||||
|  | ||||
|   printf (qq[\#define %-40s\t%d\n], 'GLIBTOP_STRUCTURE_'.&toupper($structure), $nr); | ||||
| } | ||||
|  | ||||
| print ''; | ||||
| printf (qq[\#define %-40s\t%d\n], 'GLIBTOP_MAX_STRUCTURES', $structure_count); | ||||
| print ''; | ||||
| print qq[END_LIBGTOP_DECLS]; | ||||
| print ''; | ||||
| print qq[\#endif /* __GLIBTOP_STRUCTURES_H__ */]; | ||||
|  | ||||
| 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]; | ||||
|    | ||||
|   $feature =~ s/^@//; | ||||
|   $features{$feature} = $feature; | ||||
|  | ||||
|   $structures{$structure_count++} = 'glibtop_'.$feature; | ||||
| } | ||||
|  | ||||
| sub parse_structure_def { | ||||
|   local($line) = @_; | ||||
|   @line_fields = split(/\|/, $line, 9999); | ||||
|   $name = $line_fields[1]; | ||||
|  | ||||
|   $structures{$structure_count++} = $name; | ||||
| } | ||||
| @@ -1,74 +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 <glibtop.h> | ||||
|  | ||||
| #include <glibtop/cpu.h> | ||||
|  | ||||
| int | ||||
| main (int argc, char *argv []) | ||||
| { | ||||
|     glibtop_client *client; | ||||
|     glibtop_backend *backend_common; | ||||
|     glibtop_backend *backend_sysdeps; | ||||
|     GError *error = NULL; | ||||
|     glibtop_cpu cpu; | ||||
|  | ||||
|     g_type_init (); | ||||
|  | ||||
|     client = glibtop_client_new (); | ||||
|  | ||||
|     backend_common = glibtop_backend_get ("glibtop-backend-common", | ||||
| 					  0, NULL, &error); | ||||
|  | ||||
|     if (error != NULL) { | ||||
| 	glibtop_client_propagate_warning (client, error); | ||||
| 	g_error_free (error); | ||||
| 	error = NULL; | ||||
|     } | ||||
|  | ||||
|     g_message (G_STRLOC ": backend = %p", backend_common); | ||||
|  | ||||
|     if (backend_common != NULL) | ||||
| 	glibtop_client_add_backend (client, backend_common); | ||||
|  | ||||
|     backend_sysdeps = glibtop_backend_get ("glibtop-backend-sysdeps-stub", | ||||
| 					   0, NULL, &error); | ||||
|  | ||||
|     if (error != NULL) { | ||||
| 	glibtop_client_propagate_warning (client, error); | ||||
| 	g_error_free (error); | ||||
| 	error = NULL; | ||||
|     } | ||||
|  | ||||
|     g_message (G_STRLOC ": backend = %p", backend_sysdeps); | ||||
|  | ||||
|     if (backend_sysdeps != NULL) | ||||
| 	glibtop_client_add_backend (client, backend_sysdeps); | ||||
|  | ||||
|     glibtop_get_cpu_l (client, &cpu); | ||||
|  | ||||
|     exit (0); | ||||
| } | ||||
| @@ -1,98 +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 <glibtop/xmalloc.h> | ||||
|  | ||||
| #ifdef LIBGTOP_USE_GLIB_MALLOC | ||||
| #include <glib.h> | ||||
| #endif | ||||
|  | ||||
| /* Wrappers to malloc, calloc, realloc ... */ | ||||
|  | ||||
| void * | ||||
| glibtop_malloc_r (glibtop_server *server, size_t size) | ||||
| { | ||||
| #ifdef LIBGTOP_USE_GLIB_MALLOC | ||||
|     return g_malloc0 (size); | ||||
| #else | ||||
|     void *buf = malloc (size); | ||||
| 	 | ||||
|     if (!buf) | ||||
| 	glibtop_error_io_r (server, "malloc %d bytes", size); | ||||
| 	 | ||||
|     return buf; | ||||
| #endif | ||||
| } | ||||
|  | ||||
| void * | ||||
| glibtop_calloc_r (glibtop_server *server, size_t nmemb, size_t size) | ||||
| { | ||||
| #ifdef LIBGTOP_USE_GLIB_MALLOC | ||||
|     return g_malloc0 (size * nmemb); | ||||
| #else | ||||
|     void *buf = calloc (nmemb, size); | ||||
| 	 | ||||
|     if (!buf) | ||||
| 	glibtop_error_io_r (server, "calloc %d blocks (%d bytes each)", | ||||
| 			    nmemb, size); | ||||
| 	 | ||||
|     return buf; | ||||
| #endif | ||||
| } | ||||
|  | ||||
| void * | ||||
| glibtop_realloc_r (glibtop_server *server, void *ptr, size_t size) | ||||
| { | ||||
| #ifdef LIBGTOP_USE_GLIB_MALLOC | ||||
|     return g_realloc (ptr, size); | ||||
| #else | ||||
|     void *buf = realloc (ptr, size); | ||||
| 	 | ||||
|     if (!buf) | ||||
| 	glibtop_error_io_r (server, "realloc %d bytes", size); | ||||
| 	 | ||||
|     return buf; | ||||
| #endif | ||||
| } | ||||
|  | ||||
| char * | ||||
| glibtop_strdup_r (glibtop_server *server, const char *string) | ||||
| { | ||||
| #ifdef LIBGTOP_USE_GLIB_MALLOC | ||||
|     return g_strdup (string); | ||||
| #else | ||||
|     return strcpy (glibtop_malloc_r (server, strlen (string) + 1), string); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| void | ||||
| glibtop_free_r (glibtop_server *server, void *ptr) | ||||
| { | ||||
| #ifdef LIBGTOP_USE_GLIB_MALLOC | ||||
|     g_free (ptr); | ||||
| #else | ||||
|     if (ptr) free ((void *) ptr); | ||||
| #endif | ||||
| } | ||||
| @@ -7,7 +7,7 @@ Name: libgtop | ||||
| Description: Portable System Access Library | ||||
| Requires: glib-2.0 | ||||
| Version: @VERSION@ | ||||
| Libs: -L${libdir} @LIBGTOP_LIBS@ @LIBGTOP_EXTRA_LIBS@ | ||||
| Libs: -L${libdir} @LIBGTOP_LIBS@ | ||||
| Cflags: -I${includedir}/libgtop-2.0 | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -91,9 +91,6 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[ | ||||
| 	  linux*) | ||||
| 	    libgtop_smp=yes | ||||
| 	    ;; | ||||
| 	  aix*) | ||||
| 	    libgtop_smp=yes | ||||
| 	    ;; | ||||
| 	  *) | ||||
| 	    libgtop_smp=no | ||||
| 	    ;; | ||||
| @@ -133,13 +130,6 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[ | ||||
| 	  libgtop_need_server=yes | ||||
| 	  libgtop_postinstall='chgrp sys $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server' | ||||
| 	  ;; | ||||
| 	aix*) | ||||
| 	  libgtop_sysdeps_dir=aix | ||||
| 	  libgtop_use_machine_h=yes | ||||
| 	  libgtop_need_server=yes | ||||
| 	  libgtop_have_sysinfo=yes | ||||
| 	  libgtop_postinstall='chgrp system $(bindir)/libgtop_server && chmod g+s $(bindir)/libgtop_server2' | ||||
| 	  ;; | ||||
| 	*) | ||||
| 	  if test x$hacker_mode = xyes ; then | ||||
| 	    case "$host_os" in | ||||
|   | ||||
| @@ -1,8 +0,0 @@ | ||||
| The indentation in LibGTop was done with the following command: | ||||
|  | ||||
| 	find . -name \*.[ch] | xargs -i emacs -batch {} \ | ||||
| 		-l /gnome/compile/libgtop/misc/format.el -f save-buffer | ||||
|  | ||||
| December 26, 1999 | ||||
| Martin | ||||
|  | ||||
| @@ -1,5 +0,0 @@ | ||||
| (setq c-basic-offset 4) | ||||
| (if (not (word-search-forward "Mode: C" nil t)) | ||||
|     (insert-string "/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */\n\n")) | ||||
| (mark-whole-buffer) | ||||
| (indent-region (region-beginning) (region-end) nil) | ||||
| @@ -10,4 +10,3 @@ Makefile.in.in | ||||
| messages | ||||
| stamp-cat-id | ||||
| po2tbl.sed | ||||
| missing | ||||
|   | ||||
							
								
								
									
										431
									
								
								po/ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										431
									
								
								po/ChangeLog
									
									
									
									
									
								
							| @@ -1,422 +1,3 @@ | ||||
| 2003-10-25  Christian Neumair  <chris@gnome-de.org> | ||||
|  | ||||
| 	* de.po: Updated German translation. | ||||
|  | ||||
| 2003-10-22   Vincent van Adrighem  <adrighem@gnome.org> | ||||
|  | ||||
| 	* nl.po: Dutch translation updated by Vincent van Adrighem. | ||||
|  | ||||
| 2003-10-22  Christian Rose  <menthos@menthos.com> | ||||
|  | ||||
| 	* sv.po: Updated Swedish translation. | ||||
|  | ||||
| 2003-10-21  Christian Neumair  <chris@gnome-de.org> | ||||
|  | ||||
| 	* de.po: Updated German translation. | ||||
|  | ||||
| 2003-10-21  Christian Rose  <menthos@menthos.com> | ||||
|  | ||||
| 	* sv.po: Updated Swedish translation. | ||||
|  | ||||
| 2003-10-19  Carlos Perelló Marín <carlos@gnome.org> | ||||
|  | ||||
| 	* POTFILES.ignore: Removed, we use now POTFILES.skip | ||||
| 	 | ||||
| 2003-10-01  Gustavo Maciel Dias Vieira  <gdvieira@zaz.com.br> | ||||
|  | ||||
| 	* pt_BR.po: Applied revision by Augusta Marques da Silva | ||||
| 	<augusta.marques@gmx.net>. | ||||
|  | ||||
| 2003-09-30  Laurent Dhima  <laurenti@alblinux.net> | ||||
|  | ||||
| 	 * sq.po: Added Albanian translation. | ||||
|  | ||||
| 2003-09-17  Fatih Demir <kabalak@gtranslator.org> | ||||
|  | ||||
| 	* ta.po: Committed new Tamil translation by Dinesh. | ||||
|  | ||||
| 2003-09-13  Carlos Perelló Marín <carlos@gnome.org> | ||||
|  | ||||
| 	* es_ES.po, LEEME.es: Removed, it's only for one string that is a | ||||
| 	comment and procman is not using it. This modules is not maintained | ||||
| 	and all people tells that should die so I don't think that any other | ||||
| 	application will use it in the near future. This one is related with | ||||
| 	the bug #105676 | ||||
|  | ||||
| 2003-09-08  Mugurel Tudor  <mugurelu@go.ro> | ||||
|  | ||||
| 	* ro.po: Updated Romanian translation by | ||||
| 		Mişu Moldovan  <dumol@go.ro> | ||||
|  | ||||
| 2003-09-06  Taneem Ahmed  <taneem@bengalinux.org> | ||||
|  | ||||
| 	* bn.po: Added Bangla translation by Vat | ||||
| 	of Ankur group <gnome-translation@bengalinux.org>. | ||||
|  | ||||
| 2003-08-28  Pablo Gonzalo del Campo  <pablodc@bigfoot.com> | ||||
|  | ||||
|         * es.po: Revision of Spanish translation by | ||||
|                  Francisco Javier F. Serrador <serrador@arrakis.es>. | ||||
|  | ||||
| 2003-08-28  Alessio Frusciante  <algol@firenze.linux.it> | ||||
|  | ||||
| 	* it.po: Updated Italian translation. | ||||
|  | ||||
| 2003-08-25  Duarte Loreto <happyguy_pt@hotmail.com> | ||||
|  | ||||
| 	* pt.po: Fixed typos in Portuguese translation. | ||||
|  | ||||
| 2003-08-18  Metin Amiroff <metin@karegen.com> | ||||
|  | ||||
| 	* az.po: Updated Azerbaijani translation. | ||||
|  | ||||
| 2003-08-13  Guntupalli Karunakar  <karunakar@freedomink.org> | ||||
|  | ||||
| 	* hi.po: Added Hindi translation. | ||||
|  | ||||
| 2003-08-09  Dafydd Harries  <daf@parnassus.ath.cx> | ||||
|  | ||||
| 	* cy.po: Added Welsh translation. | ||||
|  | ||||
| 2003-08-09  Wang Jian  <lark@linux.net.cn> | ||||
|  | ||||
| 	* zh_CN.po: Updated Simplified Chinese translation by | ||||
| 	Funda Wang <fundawang@linux.net.cn>. | ||||
|  | ||||
| 2003-08-08  Danilo Šegan  <dsegan@gmx.net> | ||||
|  | ||||
| 	* sr.po, sr@Latn.po: Updated Serbian translation. | ||||
|  | ||||
| 2003-07-21  Arafat Medini <lumina@silverpen.de> | ||||
|  | ||||
| 	* ar.po: Updated Arabic translation. | ||||
|  | ||||
| 2003-07-19  Arafat Medini <lumina@silverpen.de> | ||||
|  | ||||
| 	* ar.po: Updated Arabic translation. | ||||
|  | ||||
| 2003-07-19  Arafat Medini  <lumina@silverpen.de> | ||||
|  | ||||
| 	 * ar.po: Updated Arabic translation. | ||||
|  | ||||
| 2003-07-13  Metin Amiroff  <metin@karegen.com> | ||||
|  | ||||
| 	* az.po: Updated Azerbaijani translation. | ||||
|  | ||||
| 2003-06-25  Mohammad DAMT  <mdamt@bisnisweb.com> | ||||
|  | ||||
| 	* id.po: Updated Indonesian translation | ||||
|  | ||||
| 2003-06-23  Vincent van Adrighem  <V.vanAdrighem@dirck.mine.nu> | ||||
|  | ||||
| 	* nl.po: Dutch translation updated by Kees van den Broek. | ||||
|  | ||||
| 2003-06-14  Arafat Medini  <lumina@silverpen.de> | ||||
|  | ||||
| 	 * ar.po: Updated Arabic translation. | ||||
|  | ||||
| 2003-06-12  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* zh_TW.po: Updated traditional Chinese translation. | ||||
|  | ||||
| 2003-06-04  Paul Duffy <dubhthach@frink.nuigalway.ie> | ||||
|  | ||||
|         * ga.po: Updated Irish Translation. | ||||
| 	 | ||||
| 2003-05-25  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* he.po: Mark wrong entry as fuzzy (msgfmt check failed). | ||||
|  | ||||
| 2003-05-16  Danilo ©egan  <dsegan@gmx.net> | ||||
|  | ||||
| 	* sr.po, sr@Latn.po: Updated Serbian translation by Serbian  | ||||
| 	team (Prevod.org). | ||||
|  | ||||
| 2003-05-10  Danilo Segan  <dsegan@gmx.net> | ||||
|  | ||||
| 	* sr.po, sr@Latn.po: Added Serbian translation by Serbian team  | ||||
| 	(Prevod.org). | ||||
|  | ||||
| 2003-04-20  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* zh_TW.po: Updated traditional Chinese translation. | ||||
|  | ||||
| 2003-03-18  Gil "Dolfin" Osher <dolfin@rpg.org.il> | ||||
|  | ||||
| 	* he.po: Updated Hebrew translation. | ||||
|  | ||||
| 2003-03-13  Christian Rose  <menthos@menthos.com> | ||||
|  | ||||
| 	* ml.po: Added Malayalam translation by | ||||
| 	FSF-India <locale@gnu.org.in>. | ||||
|  | ||||
| 2003-03-10  Roozbeh Pournader  <roozbeh@sharif.edu> | ||||
|  | ||||
| 	* fa.po: Added Persian translation. | ||||
|  | ||||
| 2003-03-08  Gil "Dolfin" Osher <dolfin@rpg.org.il> | ||||
|  | ||||
| 	* he.po: Added Hebrew translation. | ||||
|  | ||||
| 2003-03-06  Yuriy Syrota  <rasta renome.rovno.ua> | ||||
|  | ||||
| 	* uk.po: Updated Ukrainian translation. | ||||
|  | ||||
| 2003-02-25  T?µivo Leedj?€rv  <toivo@linux.ee> | ||||
|  | ||||
| 	* et.po: Added Estonian translation. | ||||
|  | ||||
| 2003-02-23  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* zh_TW.po: Updated traditional Chinese translation. | ||||
|  | ||||
| 2003-02-22  Jordi Mallach  <jordi@sindominio.net> | ||||
|  | ||||
| 	* ca.po: Barbarism fixes from Jordi Mas. | ||||
|  | ||||
| 2003-02-22  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* zh_TW.po: Updated traditional Chinese translation. | ||||
|  | ||||
| 2003-02-16  Mohammad DAMT  <mdamt@bisnisweb.com> | ||||
|  | ||||
| 	* id.po: Added Indonesian translation | ||||
|  | ||||
| 2003-02-09  Christian Rose  <menthos@menthos.com> | ||||
|  | ||||
| 	* sv.po: Some fixes for problems catched in translation review. | ||||
|  | ||||
| 2003-02-07  Miloslav Trmac  <mitr@volny.cz> | ||||
|  | ||||
| 	* cs.po: Fixed typos in Czech translation. | ||||
|  | ||||
| 2003-01-25  Alessio Frusciante  <algol@firenze.linux.it> | ||||
|  | ||||
| 	* it.po: Added Italian translation. | ||||
|  | ||||
| 2003-01-23  Marius Andreiana <marius galuna.ro> | ||||
|  | ||||
| 	* ro.po: added ( thanks to Mi?u Moldovan ) | ||||
|  | ||||
| 2003-01-22  Christian Rose  <menthos@menthos.com> | ||||
|  | ||||
| 	* mn.po: Added Mongolian translation by | ||||
| 	Sanlig Badral <badral@chinggis.com>. | ||||
|  | ||||
| 2003-01-20  Pablo Saratxaga  <pablo@mandrakesoft.com> | ||||
|  | ||||
| 	* vi.po: Updated Vietnamese file | ||||
|  | ||||
| 2003-01-18  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* zh_TW.po: Updated traditional Chinese translation. | ||||
|  | ||||
| 2003-01-16  Daniel Yacob <locales@geez.org> | ||||
|  | ||||
| 	* am.po: Added Amharic translation. | ||||
| 	 | ||||
| 2003-01-16  Pablo Saratxaga  <pablo@mandrakesoft.com> | ||||
|  | ||||
| 	* vi.po: Updated Vietnamese file | ||||
|  | ||||
| 2003-01-03  Andras Timar  <timar@gnome.hu> | ||||
|  | ||||
|         * hu.po: Updated Hungarian translation. | ||||
|  | ||||
| 2002-12-14  Christophe Merlet  <redfox@redfoxcenter.org> | ||||
|  | ||||
| 	* fr.po: Updated French translation and converted to UTF-8. | ||||
|  | ||||
| 2002-11-25  Yanko Kaneti  <yaneti@declera.com> | ||||
|  | ||||
| 	* *.po: Convert all to UTF-8. | ||||
|  | ||||
| 2002-11-07  Simos Xenitellis  <simos74@gmx.net> | ||||
|  | ||||
| 	* el.po: Updated Greek translation. | ||||
|  | ||||
| 2002-11-04  Vincent van Adrighem <V.vanAdrighem@dirck.mine.nu> | ||||
|  | ||||
| 	* nl.po: Jeroen van der Vegt updated Dutch translation. | ||||
|  | ||||
| 2002-11-03  Dmitry G. Mastrukov  <dmitry@taurussoft.org> | ||||
|  | ||||
| 	* be.po: Added Belarusian translation | ||||
| 	* from Belarusian team <i18n@infonet.by>. | ||||
|  | ||||
| 2002-09-26  Stanislav Brabec  <sbrabec@suse.cz> | ||||
|  | ||||
| 	* cs.po: Added Czech translation from Miloslav Trmac | ||||
| 	<mitr@volny.cz>. | ||||
|  | ||||
| 2002-09-19  Fatih Demir <kabalak@gtranslator.org> | ||||
|  | ||||
| 	* tr.po: Committed updated Turkish translation by ?mer. | ||||
|  | ||||
| 2002-09-02  Peteris Krisjanis <peteris.krisjanis@os.lv> | ||||
|  | ||||
| 	* lv.po: Updated Latvian translation. | ||||
|  | ||||
| 2002-08-22  Andras Timar  <timar@gnome.hu> | ||||
|  | ||||
|         * hu.po: Updated Hungarian translation. | ||||
|  | ||||
| 2002-08-20  Peteris Krisjanis <peteris.krisjanis@os.lv> | ||||
|  | ||||
| 	* lv.po (added): Latvian translation. | ||||
|  | ||||
| 2002-08-07  Christian Neumair  <christian-neumair@web.de> | ||||
|  | ||||
| 	* de.po: Updated German translation. | ||||
|  | ||||
| 2002-07-13  Jordi Mallach  <jordi@sindominio.net> | ||||
|  | ||||
| 	* ca.po: Updated Catalan translation. | ||||
|  | ||||
| 2002-06-25  Yanko Kaneti <yaneti@declera.com> | ||||
|  | ||||
| 	* bg.po (added): Bulgarian translation by | ||||
| 	Borislav Aleksandrov <B.Aleksandrov@cnsys.bg>. | ||||
|  | ||||
| 2002-06-22  Pablo Saratxaga  <pablo@mandrakesoft.com> | ||||
|  | ||||
| 	* ca.po: Updated Catalan file | ||||
|  | ||||
| 2002-06-17  Pablo Saratxaga  <pablo@mandrakesoft.com> | ||||
|  | ||||
| 	* vi.po: Updated Vietnamese file | ||||
|  | ||||
| 2002-06-13  Takayuki KUSANO  <AE5T-KSN@asahi-net.or.jp> | ||||
|  | ||||
| 	* ja.po: Updated Japanese translation. | ||||
|  | ||||
| 2002-06-10  Pablo Saratxaga  <pablo@mandrakesoft.com> | ||||
|  | ||||
| 	* vi.po: Updated Vientamese file | ||||
|  | ||||
| 2002-06-02  Germ??n Poo Caama?±o <gpoo@ubiobio.cl> | ||||
|  | ||||
| 	* es.po: Updated Spanish translation from | ||||
| 	Juan Manuel Garc?a Molina <juanma_gm@wanadoo.es> | ||||
|  | ||||
| 2002-06-02  Zbigniew Chyla  <cyba@gnome.pl> | ||||
|  | ||||
| 	* pl.po: Updated Polish translation by | ||||
| 	GNOME PL Team <translators@gnome.pl>. | ||||
|  | ||||
| 2002-06-02  Carlos Perell?³ Mar?n <carlos@gnome-db.org> | ||||
|  | ||||
| 	* es.po: Fixed. | ||||
|  | ||||
| 2002-05-28  Carlos Perello Marin <carlos@gnome-db.org> | ||||
|  | ||||
| 	* LEEME.es: Updated. | ||||
|  | ||||
| 2002-05-28  Carlos Perello Marin <carlos@gnome-db.org> | ||||
|  | ||||
| 	* es.po, es_ES.po: Updated so the contry dependent string is | ||||
| 	placed at es_ES.po for Spain and the US like number notation is | ||||
| 	stored at es.po. It's much more easy mantain the es_ES.po file than | ||||
| 	4 or 5 files from American countries. | ||||
| 	* es_DO.pom, es_GT.po, es_HN.po, es_MX.po, es_PA.po, es_PE.po, | ||||
| 	es_SV.po: Removed, we only need to update es.po and es_ES.po now. | ||||
|  | ||||
| 2002-05-19  Vlad Harchev  <hvv@hippo.ru> | ||||
|  | ||||
| 	* ru.po: updated russian translation from Dmitry G. Mastrukov | ||||
| 	<dmitry@taurussoft.org>. | ||||
|  | ||||
| 2002-05-10  Valek Filippov  <frob@df.ru> | ||||
|  | ||||
| 	* ru.po: Updated russian translation from Dmitry Mastrukov. | ||||
|  | ||||
| 2002-05-08  Zbigniew Chyla  <cyba@gnome.pl> | ||||
|  | ||||
| 	* pl.po: Updated Polish translation by | ||||
| 	GNOME PL Team <translators@gnome.pl>. | ||||
|  | ||||
| 2002-05-08  Pablo Saratxaga  <pablo@mandrakesoft.com> | ||||
|  | ||||
| 	* vi.po: Added Vietnamese file | ||||
|  | ||||
| 2002-05-06  Duarte Loreto <happyguy_pt@hotmail.com> | ||||
|  | ||||
|         * pt.po: Updated Portuguese translation and converted to UTF-8. | ||||
|  | ||||
| 2002-05-05  Christian Rose  <menthos@menthos.com> | ||||
|  | ||||
| 	* sv.po: Updated Swedish translation. | ||||
|  | ||||
| 2002-04-25  Changwoo Ryu  <cwryu@debian.org> | ||||
|  | ||||
| 	* ko.po: Updated Korean translation. | ||||
|  | ||||
| 2002-04-24  Stanislav Visnovsky  <visnovsky@nenya.ms.mff.cuni.cz> | ||||
|  | ||||
| 	* sk.po: Updated Slovak translation by Marcel Telka <marcel@telka.sk>. | ||||
|  | ||||
| 2002-04-23  Kjartan Maraas  <kmaraas@gnome.org> | ||||
|  | ||||
| 	* no.po: Updated Norwegian (bokm?¥l) translation. | ||||
| 	 | ||||
| 2002-04-19  Ole Laursen  <olau@hardworking.dk> | ||||
|  | ||||
| 	* da.po: Updated Danish translation. | ||||
|  | ||||
| 2002-04-19  Pauli Virtanen  <pauli.virtanen@hut.fi> | ||||
|  | ||||
| 	* fi.po: Updated Finnish translation. | ||||
|  | ||||
| 2002-04-09  Valek Filippov  <frob@df.ru> | ||||
|  | ||||
| 	* ru.po: Updated russian translation from Dmitry Mastrukov. | ||||
|  | ||||
| 2002-04-02  Duarte Loreto <happyguy_pt@hotmail.com> | ||||
|  | ||||
|         * pt.po: Updated Portuguese translation. | ||||
|  | ||||
| 2002-03-31  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* .cvsignore: Added file. | ||||
| 	* POTFILES.in: Added missing popt files. | ||||
|  | ||||
| 2002-03-25  Duarte Loreto <happyguy_pt@hotmail.com> | ||||
|  | ||||
|         * pt.po: Updated Portuguese translation.  | ||||
|  | ||||
| 2002-03-23  Hasbullah Bin Pit <sebol@ikhlas.com> | ||||
|  | ||||
| 	* ms.po: Updated Malay Translation. | ||||
|  | ||||
| 2002-03-15  Valek Filippov  <frob@df.ru> | ||||
|  | ||||
| 	* ru.po: Updated russian translation. | ||||
|  | ||||
| 2002-03-06  Kjartan Maraas  <kmaraas@gnome.org> | ||||
|  | ||||
| 	* no.po: Updated Norwegian (bokm?¥l) translation. | ||||
| 	 | ||||
| 2002-03-06  Germ??n Poo-Caama?±o <gpoo@ubiobio.cl> | ||||
|  | ||||
| 	* es.po: Fixed spanish translation encoding. | ||||
|  | ||||
| 2002-03-06  Germ??n Poo-Caama?±o <gpoo@ubiobio.cl> | ||||
|  | ||||
| 	* es.po: Update spanish translation. | ||||
|  | ||||
| 2002-03-05  Matthias Warkus  <mawarkus@gnome.org> | ||||
|  | ||||
| 	* de.po: Fixed German translation. | ||||
|  | ||||
| 2002-03-01  Zbigniew Chyla  <cyba@gnome.pl> | ||||
|  | ||||
| 	* pl.po: Updated Polish translation by | ||||
| 	GNOME PL Team <translators@gnome.pl>. | ||||
|  | ||||
| 2002-02-12  Kjartan Maraas  <kmaraas@gnome.org> | ||||
|  | ||||
| 	* no.po: Updated Norwegian (bokm?¥l) translation. | ||||
| 	 | ||||
| 2002-02-09  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* zh_TW.po: Updated traditional Chinese translation. | ||||
| @@ -448,7 +29,7 @@ | ||||
| 	* pl.po: Updated Polish translation by | ||||
| 	GNOME PL Team <translators@gnome.pl>. | ||||
|  | ||||
| 2001-10-17  Carlos Perell?³ Mar?n <carlos@gnome-db.org> | ||||
| 2001-10-17  Carlos Perell<EFBFBD> Mar<EFBFBD>n <carlos@gnome-db.org> | ||||
|  | ||||
| 	* pt.po: Added by Duarte Loreto <happyguy_pt@hotmail.com> | ||||
|  | ||||
| @@ -466,7 +47,7 @@ | ||||
|  | ||||
| 2001-03-23  Fatih Demir <kabalak@gtranslator.org> | ||||
|  | ||||
| 	* tr.po: Updated Turkish translation by G?¶rkem. | ||||
| 	* tr.po: Updated Turkish translation by G<EFBFBD>rkem. | ||||
|  | ||||
| 2001-03-15  Valek Filippov  <frob@df.ru> | ||||
|  | ||||
| @@ -513,7 +94,7 @@ | ||||
| 	* fi.po: Reverted Jarkko Ranta's change; please do | ||||
| 	not commit any compressed files in future. | ||||
|  | ||||
| 2001-02-10  Christophe Merlet  <christophe@merlet.net> | ||||
| 2001-02-10  Christophe Merlet  <redfox@eikonex.org> | ||||
|  | ||||
| 	* fr.po: Updated French translation. | ||||
|  | ||||
| @@ -529,7 +110,7 @@ | ||||
|  | ||||
| 	* ru.po: Updated russian translation. | ||||
|  | ||||
| 2001-02-05  Christophe Merlet  <christophe@merlet.net> | ||||
| 2001-02-05  Christophe Merlet  <redfox@eikonex.org> | ||||
|  | ||||
| 	* fr.po: Updated French translation. | ||||
|  | ||||
| @@ -576,7 +157,7 @@ | ||||
|  | ||||
| 	* es.po: Updated Spanish translation. | ||||
|  | ||||
| 2000-05-18  Martin Norb?€ck  <d95mback@dtek.chalmers.se> | ||||
| 2000-05-18  Martin Norb<EFBFBD>ck  <d95mback@dtek.chalmers.se> | ||||
|  | ||||
| 	* sv.po: Updated Swedish translation. | ||||
|  | ||||
| @@ -614,7 +195,7 @@ | ||||
|  | ||||
| 	* gl.po: Added Galician translation. | ||||
|  | ||||
| 1999-09-29  Kenneth ll?©phaane Christiansen  <kenneth@ripen.dk> | ||||
| 1999-09-29  Kenneth ll<EFBFBD>phaane Christiansen  <kenneth@ripen.dk> | ||||
|  | ||||
| 	* da.po: Updated. | ||||
|  | ||||
|   | ||||
							
								
								
									
										26
									
								
								po/LEEME.es
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								po/LEEME.es
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| [ This file explains why there are various incomplete es_??.po in adition | ||||
|   to the es.po; that is on purpose ] | ||||
|  | ||||
| Los diferentes archivos para las locales es_DO, es_GT, es_HN, es_MX, es_PA, | ||||
| es_PE y es_SV; solo existen porque en esos paises se usa una representaci<EFBFBD>n | ||||
| de los n<EFBFBD>meros diferente de la que se usa en los dem<EFBFBD>s paises de habla | ||||
| castellan (usan el sistema anglosaj<EFBFBD>n, esdecir 1,000 en vez de 1.000 para  | ||||
| 'mil'). | ||||
|  | ||||
| Por ello solo es necesario traducir aquellas ocurrencias donde aparezcan | ||||
| n<EFBFBD>meros; no hace falta perder el tiempo traduciendo en doble lo dem<EFBFBD>s; | ||||
| el sistema de internacionalizaci<EFBFBD>n de GNU gettext es lo suficientemente | ||||
| inteligente como para buscar las traducciones en la locale 'es' cuando no | ||||
| las encuentra en una 'es_XX' m<EFBFBD>s espec<EFBFBD>fica. | ||||
|  | ||||
| Tambi<EFBFBD>n podriase crear un es_ES para traducir aquellos terminos que difieren | ||||
| en Espa<EFBFBD>a y Am<EFBFBD>rica (ej: computadora/ordenador, archivo/fichero, <EFBFBD>cono/icono), | ||||
| si alg<EFBFBD>n espa<EFBFBD>ol tiene ganas de encargarse de ello, bienvenido. | ||||
| Notese que solo es necesario traducir aquellas cadenas de texto para las | ||||
| cuales se usan terminos diferentes en Espa<EFBFBD>a; no es necesario traducir las | ||||
| dem<EFBFBD>s, con que est<EFBFBD>n en la traducci<EFBFBD>n general 'es' ya basta.  | ||||
|   | ||||
| Pablo Saratxaga | ||||
| <srtxg@chanae.alphanet.ch> | ||||
|  | ||||
|  | ||||
| @@ -1,248 +0,0 @@ | ||||
| # Makefile for program source directory in GNU NLS utilities package. | ||||
| # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu> | ||||
| # | ||||
| # This file file be copied and used freely without restrictions.  It can | ||||
| # be used in projects which are not available under the GNU Public License | ||||
| # but which still want to provide support for the GNU gettext functionality. | ||||
| # Please note that the actual code is *not* freely available. | ||||
|  | ||||
| PACKAGE = @LIBGTOP_PACKAGE@ | ||||
| VERSION = @VERSION@ | ||||
|  | ||||
| SHELL = /bin/sh | ||||
| @SET_MAKE@ | ||||
|  | ||||
| srcdir = @srcdir@ | ||||
| top_srcdir = @top_srcdir@ | ||||
| VPATH = @srcdir@ | ||||
|  | ||||
| prefix = @prefix@ | ||||
| exec_prefix = @exec_prefix@ | ||||
| datadir = $(prefix)/@DATADIRNAME@ | ||||
| localedir = $(datadir)/locale | ||||
| gnulocaledir = $(prefix)/share/locale | ||||
| gettextsrcdir = $(prefix)/share/gettext/po | ||||
| subdir = po | ||||
|  | ||||
| INSTALL = @INSTALL@ | ||||
| INSTALL_DATA = @INSTALL_DATA@ | ||||
| MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@ | ||||
|  | ||||
| CC = @CC@ | ||||
| GENCAT = @GENCAT@ | ||||
| GMSGFMT = PATH=../src:$$PATH @GMSGFMT@ | ||||
| MSGFMT = @MSGFMT@ | ||||
| XGETTEXT = PATH=../src:$$PATH @XGETTEXT@ | ||||
| MSGMERGE = PATH=../src:$$PATH msgmerge | ||||
|  | ||||
| DEFS = @DEFS@ | ||||
| CFLAGS = @CFLAGS@ | ||||
| CPPFLAGS = @CPPFLAGS@ | ||||
|  | ||||
| INCLUDES = -I.. -I$(top_srcdir)/intl | ||||
|  | ||||
| COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) | ||||
|  | ||||
| SOURCES = cat-id-tbl.c | ||||
| POFILES = @POFILES@ | ||||
| GMOFILES = @GMOFILES@ | ||||
| DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ | ||||
| stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES) | ||||
|  | ||||
| POTFILES = \ | ||||
|  | ||||
| CATALOGS = @CATALOGS@ | ||||
| CATOBJEXT = @CATOBJEXT@ | ||||
| INSTOBJEXT = @INSTOBJEXT@ | ||||
|  | ||||
| .SUFFIXES: | ||||
| .SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat | ||||
|  | ||||
| .c.o: | ||||
| 	$(COMPILE) $< | ||||
|  | ||||
| .po.pox: | ||||
| 	$(MAKE) $(PACKAGE).pot | ||||
| 	$(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox | ||||
|  | ||||
| .po.mo: | ||||
| 	$(MSGFMT) -o $@ $< | ||||
|  | ||||
| .po.gmo: | ||||
| 	file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ | ||||
| 	  && rm -f $$file && $(GMSGFMT) -o $$file $< | ||||
|  | ||||
| .po.cat: | ||||
| 	sed -f ../intl/po2msg.sed < $< > $*.msg \ | ||||
| 	  && rm -f $@ && $(GENCAT) $@ $*.msg | ||||
|  | ||||
|  | ||||
| all: all-@USE_NLS@ | ||||
|  | ||||
| all-yes: cat-id-tbl.c $(CATALOGS) | ||||
| all-no: | ||||
|  | ||||
| $(srcdir)/$(PACKAGE).pot: $(POTFILES) | ||||
| 	$(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ | ||||
| 	  --add-comments --keyword=_ --keyword=N_ \ | ||||
| 	  --files-from=$(srcdir)/POTFILES.in \ | ||||
| 	&& test ! -f $(PACKAGE).po \ | ||||
| 	   || ( rm -f $(srcdir)/$(PACKAGE).pot \ | ||||
| 		&& mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot ) | ||||
|  | ||||
| $(srcdir)/cat-id-tbl.c: stamp-cat-id; @: | ||||
| $(srcdir)/stamp-cat-id: $(PACKAGE).pot | ||||
| 	rm -f cat-id-tbl.tmp | ||||
| 	sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \ | ||||
| 		| sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp | ||||
| 	if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \ | ||||
| 	  rm cat-id-tbl.tmp; \ | ||||
| 	else \ | ||||
| 	  echo cat-id-tbl.c changed; \ | ||||
| 	  rm -f $(srcdir)/cat-id-tbl.c; \ | ||||
| 	  mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \ | ||||
| 	fi | ||||
| 	cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id | ||||
|  | ||||
|  | ||||
| install: install-exec install-data | ||||
| install-exec: | ||||
| install-data: install-data-@USE_NLS@ | ||||
| install-data-no: all | ||||
| install-data-yes: all | ||||
| 	if test -r "$(MKINSTALLDIRS)"; then \ | ||||
| 	  $(MKINSTALLDIRS) $(datadir); \ | ||||
| 	else \ | ||||
| 	  $(SHELL) $(top_srcdir)/mkinstalldirs $(datadir); \ | ||||
| 	fi | ||||
| 	@catalogs='$(CATALOGS)'; \ | ||||
| 	for cat in $$catalogs; do \ | ||||
| 	  cat=`basename $$cat`; \ | ||||
| 	  case "$$cat" in \ | ||||
| 	    *.gmo) destdir=$(gnulocaledir);; \ | ||||
| 	    *)     destdir=$(localedir);; \ | ||||
| 	  esac; \ | ||||
| 	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ | ||||
| 	  dir=$$destdir/$$lang/LC_MESSAGES; \ | ||||
| 	  if test -r "$(MKINSTALLDIRS)"; then \ | ||||
| 	    $(MKINSTALLDIRS) $$dir; \ | ||||
| 	  else \ | ||||
| 	    $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \ | ||||
| 	  fi; \ | ||||
| 	  if test -r $$cat; then \ | ||||
| 	    $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ | ||||
| 	    echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \ | ||||
| 	  else \ | ||||
| 	    $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ | ||||
| 	    echo "installing $(srcdir)/$$cat as" \ | ||||
| 		 "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \ | ||||
| 	  fi; \ | ||||
| 	  if test -r $$cat.m; then \ | ||||
| 	    $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ | ||||
| 	    echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ | ||||
| 	  else \ | ||||
| 	    if test -r $(srcdir)/$$cat.m ; then \ | ||||
| 	      $(INSTALL_DATA) $(srcdir)/$$cat.m \ | ||||
| 		$$dir/$(PACKAGE)$(INSTOBJEXT).m; \ | ||||
| 	      echo "installing $(srcdir)/$$cat as" \ | ||||
| 		   "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ | ||||
| 	    else \ | ||||
| 	      true; \ | ||||
| 	    fi; \ | ||||
| 	  fi; \ | ||||
| 	done | ||||
| 	if test "$(PACKAGE)" = "gettext"; then \ | ||||
| 	  if test -r "$(MKINSTALLDIRS)"; then \ | ||||
| 	    $(MKINSTALLDIRS) $(gettextsrcdir); \ | ||||
| 	  else \ | ||||
| 	    $(SHELL) $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ | ||||
| 	  fi; \ | ||||
| 	  $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ | ||||
| 			  $(gettextsrcdir)/Makefile.in.in; \ | ||||
| 	else \ | ||||
| 	  : ; \ | ||||
| 	fi | ||||
|  | ||||
| # Define this as empty until I found a useful application. | ||||
| installcheck: | ||||
|  | ||||
| uninstall: | ||||
| 	catalogs='$(CATALOGS)'; \ | ||||
| 	for cat in $$catalogs; do \ | ||||
| 	  cat=`basename $$cat`; \ | ||||
| 	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ | ||||
| 	  rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ | ||||
| 	  rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ | ||||
| 	  rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ | ||||
| 	  rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ | ||||
| 	done | ||||
| 	rm -f $(gettextsrcdir)/po-Makefile.in.in | ||||
|  | ||||
| check: all | ||||
|  | ||||
| cat-id-tbl.o: ../intl/libgettext.h | ||||
|  | ||||
| dvi info tags TAGS ID: | ||||
|  | ||||
| mostlyclean: | ||||
| 	rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp | ||||
| 	rm -fr *.o | ||||
|  | ||||
| clean: mostlyclean | ||||
|  | ||||
| distclean: clean | ||||
| 	rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m | ||||
|  | ||||
| maintainer-clean: distclean | ||||
| 	@echo "This command is intended for maintainers to use;" | ||||
| 	@echo "it deletes files that may require special tools to rebuild." | ||||
| 	rm -f $(GMOFILES) | ||||
|  | ||||
| distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) | ||||
| dist distdir: update-po $(DISTFILES) | ||||
| 	dists="$(DISTFILES)"; \ | ||||
| 	for file in $$dists; do \ | ||||
| 	  ln $(srcdir)/$$file $(distdir) 2> /dev/null \ | ||||
| 	    || cp -p $(srcdir)/$$file $(distdir); \ | ||||
| 	done | ||||
|  | ||||
| update-po: Makefile | ||||
| 	$(MAKE) $(PACKAGE).pot | ||||
| 	PATH=`pwd`/../src:$$PATH; \ | ||||
| 	cd $(srcdir); \ | ||||
| 	catalogs='$(CATALOGS)'; \ | ||||
| 	for cat in $$catalogs; do \ | ||||
| 	  cat=`basename $$cat`; \ | ||||
| 	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ | ||||
| 	  mv $$lang.po $$lang.old.po; \ | ||||
| 	  echo "$$lang:"; \ | ||||
| 	  if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \ | ||||
| 	    rm -f $$lang.old.po; \ | ||||
| 	  else \ | ||||
| 	    echo "msgmerge for $$cat failed!"; \ | ||||
| 	    rm -f $$lang.po; \ | ||||
| 	    mv $$lang.old.po $$lang.po; \ | ||||
| 	  fi; \ | ||||
| 	done | ||||
|  | ||||
| POTFILES: POTFILES.in | ||||
| 	( if test 'x$(srcdir)' != 'x.'; then \ | ||||
| 	    posrcprefix='$(top_srcdir)/'; \ | ||||
| 	  else \ | ||||
| 	    posrcprefix="../"; \ | ||||
| 	  fi; \ | ||||
| 	  rm -f $@-t $@ \ | ||||
| 	    && (sed -e '/^#/d' -e '/^[ 	]*$$/d' \ | ||||
| 		    -e "s@.*@	$$posrcprefix& \\\\@" < $(srcdir)/$@.in \ | ||||
| 		| sed -e '$$s/\\$$//') > $@-t \ | ||||
| 	    && chmod a-w $@-t \ | ||||
| 	    && mv $@-t $@ ) | ||||
|  | ||||
| Makefile: Makefile.in.in ../config.status POTFILES | ||||
| 	cd .. \ | ||||
| 	  && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ | ||||
| 	       $(SHELL) ./config.status | ||||
|  | ||||
| # Tell versions [3.59,3.63) of GNU make not to export all variables. | ||||
| # Otherwise a system limit (for SysV at least) may be exceeded. | ||||
| .NOEXPORT: | ||||
							
								
								
									
										6
									
								
								po/POTFILES.ignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								po/POTFILES.ignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| #Please remember + in front of the files that should be ignored | ||||
| #Please keep these files in alphabetic order | ||||
|  | ||||
| #Shouldn't be translated according to Martin: | ||||
| +kernel/table20/unistd-i386.h | ||||
| +kernel/table21/unistd-i386.h | ||||
| @@ -57,8 +57,6 @@ support/easy-vsnprintf.c | ||||
| support/error.c | ||||
| support/error.h | ||||
| support/getopt.c | ||||
| support/popt.c | ||||
| support/popthelp.c | ||||
| sysdeps/common/error.c | ||||
| sysdeps/common/fsusage.c | ||||
| sysdeps/common/fsusage.h | ||||
|   | ||||
| @@ -1,4 +0,0 @@ | ||||
| support/error.c | ||||
| support/getopt.c | ||||
| support/popt.c | ||||
| support/popthelp.c | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user