Compare commits
	
		
			205 Commits
		
	
	
		
			LIBGTOP_2_
			...
			LIBGTOP_ST
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					6f6101afa2 | ||
| 
						 | 
					bdbb386789 | ||
| 
						 | 
					012ae5faea | ||
| 
						 | 
					34abd9ae80 | ||
| 
						 | 
					95ec34e5f8 | ||
| 
						 | 
					6f83f3603c | ||
| 
						 | 
					44f3bb3b32 | ||
| 
						 | 
					ab4e137fc3 | ||
| 
						 | 
					00e3604822 | ||
| 
						 | 
					319ff632ba | ||
| 
						 | 
					f0e9cb5319 | ||
| 
						 | 
					c276c375f5 | ||
| 
						 | 
					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 | 
@@ -13,6 +13,7 @@ gtopConf.sh
 | 
			
		||||
i386-bsdi
 | 
			
		||||
i686-pc-linux-gnu
 | 
			
		||||
intl
 | 
			
		||||
libgtop-0.01.tar.gz
 | 
			
		||||
libgtop-mirror.sh.swp
 | 
			
		||||
libgtopConf.sh
 | 
			
		||||
libtool
 | 
			
		||||
@@ -20,7 +21,6 @@ ltconfig
 | 
			
		||||
ltmain.sh
 | 
			
		||||
macros
 | 
			
		||||
stamp-h
 | 
			
		||||
stamp-h.in
 | 
			
		||||
sun4
 | 
			
		||||
sun4sol2
 | 
			
		||||
support
 | 
			
		||||
@@ -30,6 +30,7 @@ i686-pc-linux-gnu-linux
 | 
			
		||||
libgtop-config
 | 
			
		||||
ABOUT-NLS
 | 
			
		||||
libgtop.spec
 | 
			
		||||
libgtop*.tar.gz
 | 
			
		||||
libgtop-0.99.*.tar.gz
 | 
			
		||||
libgtop-0.99.*
 | 
			
		||||
*-debstamp
 | 
			
		||||
libgtop*.pc
 | 
			
		||||
libgtop-1.*.*.tar.gz
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										287
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										287
									
								
								ChangeLog
									
									
									
									
									
								
							@@ -1,225 +1,12 @@
 | 
			
		||||
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
 | 
			
		||||
	* up version to 1.0.14
 | 
			
		||||
 | 
			
		||||
2003-05-10  Danilo Šegan  <dsegan@gmx.net>
 | 
			
		||||
2002-12-11  Stanislav Brabec  <sbrabec@suse.cz>
 | 
			
		||||
 | 
			
		||||
	* 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
 | 
			
		||||
 | 
			
		||||
	* release 1.90.2
 | 
			
		||||
 | 
			
		||||
2002-02-09  Bastien Nocera  <hadess@hadess.net>
 | 
			
		||||
 | 
			
		||||
	reviewed by: Kevin Vandersloot <kfv101@psu.edu>
 | 
			
		||||
 | 
			
		||||
	* configure.in: remove need for dc, and clean up
 | 
			
		||||
	* stamp-h.in, .cvsignore: remove
 | 
			
		||||
	* sysdeps/guile/Makefile.am, sysdeps/guile/names/Makefile.am:
 | 
			
		||||
	Changed order of arguments for guile-snarf - .c file must be first
 | 
			
		||||
	(fixes bug #82684).
 | 
			
		||||
 | 
			
		||||
2002-02-05  Abel Cheung  <maddog@linux.org.hk>
 | 
			
		||||
 | 
			
		||||
@@ -227,68 +14,12 @@
 | 
			
		||||
 | 
			
		||||
2001-01-14  Hasbullah bin Pit <sebol@ikhlas.com>
 | 
			
		||||
 | 
			
		||||
	* configure.in: Added ms in ALL_LINGUAS.
 | 
			
		||||
	* po/ms.po: Added Malay Translation.
 | 
			
		||||
	* po/.cvsignore: Added 'libgtop-2.0.pot'.
 | 
			
		||||
        * configure.in: Added ms in ALL_LINGUAS.
 | 
			
		||||
        * po/ms.po: Added Malay Translation.
 | 
			
		||||
 | 
			
		||||
2001-01-14  Abel Cheung  <maddog@linux.org.hk>
 | 
			
		||||
2001-10-26  Kevin Vandersloot <kfv101@psu.edu>
 | 
			
		||||
 | 
			
		||||
	* configure.in: Sync'ed ALL_LINGUAS with files in po directory,
 | 
			
		||||
	and renamed GETTEXT_PACKAGE to avoid conflict with libgtop 1.0.x.
 | 
			
		||||
 | 
			
		||||
2002-01-10  Kevin Vandersloot <kfv101@psu.edu>
 | 
			
		||||
 | 
			
		||||
	* acininclude.m4: add back the support stuf but make it really
 | 
			
		||||
	work
 | 
			
		||||
 | 
			
		||||
	* configure.in: bump version number, add back GNOME_SUPPORT 
 | 
			
		||||
	check since that was causing a build failure
 | 
			
		||||
 | 
			
		||||
	* release 1.90.1
 | 
			
		||||
 | 
			
		||||
2002-01-09  Kevin Vandersloot <kfv101@psu.edu>
 | 
			
		||||
 | 
			
		||||
	* acinclude.m4: remove gnome support check. Fixes the build
 | 
			
		||||
	for those with automake < 1.4p5.
 | 
			
		||||
 | 
			
		||||
	* configure.in: remove check for GNOME_SUPPORT
 | 
			
		||||
 | 
			
		||||
2001-14-27  Miles Lane <miles@megapathdsl.net>
 | 
			
		||||
 | 
			
		||||
	* acconfig.h:  Added "#undef HAVE_GETTEXT" entry.
 | 
			
		||||
	* LIBGTOP_VERSION:  Removed file.
 | 
			
		||||
	* configure.in:  added glib-gettextize support and
 | 
			
		||||
	  moved in the *VERSION* stuff from LIBGTOP_VERSION.
 | 
			
		||||
 | 
			
		||||
2001-11-27  Kevin Vandersloot <kfv101@psu.edu>
 | 
			
		||||
 | 
			
		||||
	* acinclude.m4: copy some of the macros that were formerly
 | 
			
		||||
	in gnome-macros
 | 
			
		||||
 | 
			
		||||
	* configure.in, sysdeps/Makefile.am: comment out guile
 | 
			
		||||
	support for now.
 | 
			
		||||
 | 
			
		||||
	* release 1.90.0
 | 
			
		||||
 | 
			
		||||
2001-11-26  Kevin Vandersloot <kfv101@psu.edu>
 | 
			
		||||
 | 
			
		||||
	* src/daemon/gnuserv.c:  Apply patch fixing security issue from
 | 
			
		||||
        intexxia labs - #1048-261101
 | 
			
		||||
 | 
			
		||||
2001-11-26  Abel Cheung <maddog@linux.org.hk>
 | 
			
		||||
 | 
			
		||||
	* src/inodedb/file_by_inode.c: Rename to file_by_inode2.c
 | 
			
		||||
	* src/inodedb/mkinodedb.c: Rename to mkinodedb2.c
 | 
			
		||||
 | 
			
		||||
	* po/POTFILES.in: Reflect above change
 | 
			
		||||
 | 
			
		||||
	* */.cvsignore: Add various files
 | 
			
		||||
 | 
			
		||||
2001-11-25  Kevin Vandersloot <kfv101@psu.edu>
 | 
			
		||||
 | 
			
		||||
	* port stable libgtop to GNOME 2.0. Too much to detail.
 | 
			
		||||
	pkgconfig is now used. Libs are named libgtop-2.0 etc for
 | 
			
		||||
	parallel install. 
 | 
			
		||||
	* up version to 1.0.13
 | 
			
		||||
 | 
			
		||||
2001-10-17  Abel Chueng  <maddog@linux.org.hk>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,11 +7,11 @@
 | 
			
		||||
# set LIBGTOP_BINARY_AGE and LIBGTOP_INTERFACE_AGE to 0.
 | 
			
		||||
#
 | 
			
		||||
LIBGTOP_MAJOR_VERSION=1
 | 
			
		||||
LIBGTOP_MINOR_VERSION=90
 | 
			
		||||
LIBGTOP_MICRO_VERSION=0
 | 
			
		||||
LIBGTOP_MINOR_VERSION=0
 | 
			
		||||
LIBGTOP_MICRO_VERSION=14
 | 
			
		||||
 | 
			
		||||
LIBGTOP_INTERFACE_AGE=0
 | 
			
		||||
LIBGTOP_BINARY_AGE=0
 | 
			
		||||
LIBGTOP_INTERFACE_AGE=12
 | 
			
		||||
LIBGTOP_BINARY_AGE=12
 | 
			
		||||
# you can set this to `-snap' for instance to create
 | 
			
		||||
# a `libgtop-1.x.y-snap.tar.gz' tarball.
 | 
			
		||||
LIBGTOP_VERSION_SUFFIX=
 | 
			
		||||
 
 | 
			
		||||
@@ -1,2 +0,0 @@
 | 
			
		||||
Email: martin@home-of-linux.org
 | 
			
		||||
Email: dave@srce.hr
 | 
			
		||||
							
								
								
									
										35
									
								
								Makefile.am
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								Makefile.am
									
									
									
									
									
								
							@@ -10,16 +10,16 @@ if BUILD_GNOME_SUPPORT
 | 
			
		||||
support = support
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
SUBDIRS = . po $(support) misc include sysdeps lib src \
 | 
			
		||||
SUBDIRS = po intl $(support) macros misc include sysdeps lib src \
 | 
			
		||||
	  $(examples_SUBDIRS) doc
 | 
			
		||||
 | 
			
		||||
libgtopinclude_HEADERS = glibtop.h
 | 
			
		||||
libgtopincludedir = $(includedir)/libgtop-2.0
 | 
			
		||||
libgtopincludedir = $(includedir)/libgtop-1.0
 | 
			
		||||
 | 
			
		||||
EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt libgtopConf.sh.in \
 | 
			
		||||
	LIBGTOP-VERSION features.def libgtop-config.in RELNOTES-0.25 \
 | 
			
		||||
	RELNOTES-1.0 RELNOTES-1.0.x libgtop-sysdeps.m4 README \
 | 
			
		||||
	libgtop-mirror.sh libgtop-2.0.pc.in acinclude.m4
 | 
			
		||||
	libgtop-mirror.sh
 | 
			
		||||
 | 
			
		||||
dist-hook:
 | 
			
		||||
	cp libgtop.spec $(distdir)
 | 
			
		||||
@@ -29,22 +29,19 @@ release:
 | 
			
		||||
 | 
			
		||||
## Put `exec' in the name because this should be installed by
 | 
			
		||||
## `install-exec', not `install-data'.
 | 
			
		||||
## confexecdir	= $(libdir)
 | 
			
		||||
## confexec_DATA	= $(top_builddir)/libgtopConf.sh \
 | 
			
		||||
##		  $(top_builddir)/libgtop-features.def
 | 
			
		||||
		  
 | 
			
		||||
pkgconfigdir = $(libdir)/pkgconfig
 | 
			
		||||
pkgconfig_DATA = libgtop-2.0.pc
 | 
			
		||||
confexecdir	= $(libdir)
 | 
			
		||||
confexec_DATA	= $(top_builddir)/libgtopConf.sh \
 | 
			
		||||
		  $(top_builddir)/libgtop-features.def
 | 
			
		||||
 | 
			
		||||
CLEANFILES=libgtopConf.sh
 | 
			
		||||
 | 
			
		||||
## bin_SCRIPTS = $(top_builddir)/libgtop-config
 | 
			
		||||
bin_SCRIPTS = $(top_builddir)/libgtop-config
 | 
			
		||||
 | 
			
		||||
## to automatically rebuild aclocal.m4 if any of the macros in
 | 
			
		||||
## `macros/' change
 | 
			
		||||
## @MAINT@ include macros/macros.dep
 | 
			
		||||
## @MAINT@macros/macros.dep: macros/Makefile.am
 | 
			
		||||
## @MAINT@	cd macros && $(MAKE) macros.dep
 | 
			
		||||
@MAINT@ include macros/macros.dep
 | 
			
		||||
@MAINT@macros/macros.dep: macros/Makefile.am
 | 
			
		||||
@MAINT@	cd macros && $(MAKE) macros.dep
 | 
			
		||||
 | 
			
		||||
@MAINT@$(top_srcdir)/aclocal.m4: libgtop-sysdeps.m4 LIBGTOP-VERSION
 | 
			
		||||
 | 
			
		||||
@@ -55,7 +52,7 @@ CLEANFILES=libgtopConf.sh
 | 
			
		||||
libgtopConf.sh: libgtopConf.sh.in Makefile
 | 
			
		||||
## Use sed and then mv to avoid problems if the user interrupts.
 | 
			
		||||
	sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_INCLUDEDIR\@#$(includedir)/libgtop-2.0#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_INCLUDEDIR\@#$(includedir)/libgtop-1.0#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_DATADIR\@#$(datadir)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_EXTRA_LIBS\@#$(LIBGTOP_EXTRA_LIBS)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_LIBS\@#$(LIBGTOP_LIBS)#g' \
 | 
			
		||||
@@ -82,11 +79,11 @@ libgtopConf.sh: libgtopConf.sh.in Makefile
 | 
			
		||||
	      < $(srcdir)/libgtopConf.sh.in > libgtopConf.tmp \
 | 
			
		||||
	  && mv libgtopConf.tmp libgtopConf.sh
 | 
			
		||||
 | 
			
		||||
# libgtop-config: libgtop-config.in Makefile
 | 
			
		||||
#	sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \
 | 
			
		||||
#	      < $(srcdir)/libgtop-config.in > libgtop-config.tmp \
 | 
			
		||||
#	  && mv libgtop-config.tmp libgtop-config && \
 | 
			
		||||
#		chmod 755 libgtop-config
 | 
			
		||||
libgtop-config: libgtop-config.in Makefile
 | 
			
		||||
	sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \
 | 
			
		||||
	      < $(srcdir)/libgtop-config.in > libgtop-config.tmp \
 | 
			
		||||
	  && mv libgtop-config.tmp libgtop-config && \
 | 
			
		||||
		chmod 755 libgtop-config
 | 
			
		||||
 | 
			
		||||
libgtop-features.def: features.def
 | 
			
		||||
	@LN_S@ $< $@
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								NEWS
									
									
									
									
									
								
							@@ -1,3 +1,12 @@
 | 
			
		||||
November 26, 2001:
 | 
			
		||||
================
 | 
			
		||||
 | 
			
		||||
* Released LIbGTop 1.0.13
 | 
			
		||||
 | 
			
		||||
  - security fix
 | 
			
		||||
 | 
			
		||||
  - update for parallel install with libgtop-2.0
 | 
			
		||||
 | 
			
		||||
February 27, 2001:
 | 
			
		||||
=================
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
@@ -18,7 +18,6 @@
 | 
			
		||||
 | 
			
		||||
#undef ENABLE_NLS
 | 
			
		||||
#undef HAVE_CATGETS
 | 
			
		||||
#undef GETTEXT_PACKAGE
 | 
			
		||||
#undef HAVE_GETTEXT
 | 
			
		||||
#undef HAVE_LC_MESSAGES
 | 
			
		||||
#undef HAVE_STPCPY
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										880
									
								
								acinclude.m4
									
									
									
									
									
								
							
							
						
						
									
										880
									
								
								acinclude.m4
									
									
									
									
									
								
							@@ -1,880 +0,0 @@
 | 
			
		||||
dnl This is just copied m4s from need-declaration.m4 gnome-fileutils.m4
 | 
			
		||||
dnl gnome-supprt-checks.m4 and a little from gnome-libgtop-check.m4
 | 
			
		||||
dnl and finally libgtop-sysdeps.m4
 | 
			
		||||
 | 
			
		||||
dnl
 | 
			
		||||
dnl LIBGTOP_CHECK_TYPE
 | 
			
		||||
dnl
 | 
			
		||||
dnl Improved version of AC_CHECK_TYPE which takes into account
 | 
			
		||||
dnl that we need to #include some other header files on some
 | 
			
		||||
dnl systems to get some types.
 | 
			
		||||
 | 
			
		||||
dnl AC_LIBGTOP_CHECK_TYPE(TYPE, DEFAULT)
 | 
			
		||||
AC_DEFUN([AC_LIBGTOP_CHECK_TYPE],
 | 
			
		||||
[AC_REQUIRE([AC_HEADER_STDC])dnl
 | 
			
		||||
AC_MSG_CHECKING(for $1)
 | 
			
		||||
AC_CACHE_VAL(ac_cv_type_$1,
 | 
			
		||||
[AC_EGREP_CPP(dnl
 | 
			
		||||
changequote(<<,>>)dnl
 | 
			
		||||
<<(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]>>dnl
 | 
			
		||||
changequote([,]), [#include <sys/types.h>
 | 
			
		||||
#if STDC_HEADERS
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* For Tru64 */
 | 
			
		||||
#ifdef HAVE_SYS_BITYPES_H
 | 
			
		||||
#include <sys/bitypes.h>
 | 
			
		||||
#endif
 | 
			
		||||
], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl
 | 
			
		||||
AC_MSG_RESULT($ac_cv_type_$1)
 | 
			
		||||
if test $ac_cv_type_$1 = no; then
 | 
			
		||||
  AC_DEFINE($1, $2)
 | 
			
		||||
fi
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
dnl
 | 
			
		||||
dnl GNOME_LIBGTOP_TYPES
 | 
			
		||||
dnl
 | 
			
		||||
dnl some typechecks for libgtop.
 | 
			
		||||
dnl
 | 
			
		||||
 | 
			
		||||
AC_DEFUN([GNOME_LIBGTOP_TYPES],
 | 
			
		||||
[
 | 
			
		||||
        AC_CHECK_HEADERS(sys/bitypes.h)
 | 
			
		||||
        AC_LIBGTOP_CHECK_TYPE(u_int64_t, unsigned long long int)
 | 
			
		||||
        AC_LIBGTOP_CHECK_TYPE(int64_t, signed long long int)
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
dnl See whether we need a declaration for a function.
 | 
			
		||||
dnl GCC_NEED_DECLARATION(FUNCTION [, EXTRA-HEADER-FILES])
 | 
			
		||||
AC_DEFUN([GCC_NEED_DECLARATION],
 | 
			
		||||
[AC_MSG_CHECKING([whether $1 must be declared])
 | 
			
		||||
AC_CACHE_VAL(gcc_cv_decl_needed_$1,
 | 
			
		||||
[AC_TRY_COMPILE([
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#ifdef HAVE_STRING_H
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#else
 | 
			
		||||
#ifdef HAVE_STRINGS_H
 | 
			
		||||
#include <strings.h>
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef HAVE_STDLIB_H
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef HAVE_UNISTD_H
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#endif
 | 
			
		||||
$2],
 | 
			
		||||
[char *(*pfn) = (char *(*)) $1],
 | 
			
		||||
eval "gcc_cv_decl_needed_$1=no", eval "gcc_cv_decl_needed_$1=yes")])
 | 
			
		||||
if eval "test \"`echo '$gcc_cv_decl_needed_'$1`\" = yes"; then
 | 
			
		||||
  AC_MSG_RESULT(yes)
 | 
			
		||||
  gcc_need_declarations="$gcc_need_declarations $1"
 | 
			
		||||
  gcc_tr_decl=NEED_DECLARATION_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
 | 
			
		||||
  AC_DEFINE_UNQUOTED($gcc_tr_decl)
 | 
			
		||||
else
 | 
			
		||||
  AC_MSG_RESULT(no)
 | 
			
		||||
fi
 | 
			
		||||
])dnl
 | 
			
		||||
 | 
			
		||||
dnl Check multiple functions to see whether each needs a declaration.
 | 
			
		||||
dnl GCC_NEED_DECLARATIONS(FUNCTION... [, EXTRA-HEADER-FILES])
 | 
			
		||||
AC_DEFUN([GCC_NEED_DECLARATIONS],
 | 
			
		||||
[for ac_func in $1
 | 
			
		||||
do
 | 
			
		||||
GCC_NEED_DECLARATION($ac_func, $2)
 | 
			
		||||
done
 | 
			
		||||
]
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
dnl
 | 
			
		||||
dnl GNOME_FILEUTILS_CHECKS
 | 
			
		||||
dnl
 | 
			
		||||
dnl checks that are needed for the diskusage applet.
 | 
			
		||||
dnl
 | 
			
		||||
 | 
			
		||||
AC_DEFUN([GNOME_FILEUTILS_CHECKS],
 | 
			
		||||
[
 | 
			
		||||
AC_CHECK_HEADERS(fcntl.h sys/param.h sys/statfs.h sys/fstyp.h \
 | 
			
		||||
mnttab.h mntent.h sys/statvfs.h sys/vfs.h sys/mount.h \
 | 
			
		||||
sys/filsys.h sys/fs_types.h sys/fs/s5param.h)
 | 
			
		||||
 | 
			
		||||
AC_CHECK_FUNCS(bcopy endgrent endpwent fchdir ftime ftruncate \
 | 
			
		||||
getcwd getmntinfo gettimeofday isascii lchown \
 | 
			
		||||
listmntent memcpy mkfifo strchr strerror strrchr vprintf)
 | 
			
		||||
 | 
			
		||||
dnl Set some defaults when cross-compiling
 | 
			
		||||
 | 
			
		||||
if test x$cross_compiling = xyes ; then
 | 
			
		||||
        case "$host_os" in
 | 
			
		||||
        linux*)
 | 
			
		||||
          fu_cv_sys_mounted_getmntent1=yes
 | 
			
		||||
          fu_cv_sys_stat_statfs2_bsize=yes
 | 
			
		||||
          ;;
 | 
			
		||||
        sunos*)
 | 
			
		||||
          fu_cv_sys_stat_statfs4=yes
 | 
			
		||||
          ;;
 | 
			
		||||
        freebsd*)
 | 
			
		||||
          fu_cv_sys_stat_statfs2_bsize=yes
 | 
			
		||||
          ;;
 | 
			
		||||
        osf*)
 | 
			
		||||
          fu_cv_sys_stat_statfs3_osf1=yes
 | 
			
		||||
          ;;
 | 
			
		||||
        esac
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Determine how to get the list of mounted filesystems.
 | 
			
		||||
list_mounted_fs=
 | 
			
		||||
 | 
			
		||||
# If the getmntent function is available but not in the standard library,
 | 
			
		||||
# make sure LIBS contains -lsun (on Irix4) or -lseq (on PTX).
 | 
			
		||||
AC_FUNC_GETMNTENT
 | 
			
		||||
 | 
			
		||||
# This test must precede the ones for getmntent because Unicos-9 is
 | 
			
		||||
# reported to have the getmntent function, but its support is incompatible
 | 
			
		||||
# with other getmntent implementations.
 | 
			
		||||
 | 
			
		||||
# NOTE: Normally, I wouldn't use a check for system type as I've done for
 | 
			
		||||
# `CRAY' below since that goes against the whole autoconf philosophy.  But
 | 
			
		||||
# I think there is too great a chance that some non-Cray system has a
 | 
			
		||||
# function named listmntent to risk the false positive.
 | 
			
		||||
 | 
			
		||||
if test -z "$list_mounted_fs"; then
 | 
			
		||||
# Cray UNICOS 9
 | 
			
		||||
AC_MSG_CHECKING([for listmntent of Cray/Unicos-9])
 | 
			
		||||
AC_CACHE_VAL(fu_cv_sys_mounted_cray_listmntent,
 | 
			
		||||
[fu_cv_sys_mounted_cray_listmntent=no
 | 
			
		||||
AC_EGREP_CPP(yes,
 | 
			
		||||
[#ifdef _CRAY
 | 
			
		||||
yes
 | 
			
		||||
#endif
 | 
			
		||||
], [test $ac_cv_func_listmntent = yes \
 | 
			
		||||
&& fu_cv_sys_mounted_cray_listmntent=yes]
 | 
			
		||||
)
 | 
			
		||||
]
 | 
			
		||||
)
 | 
			
		||||
AC_MSG_RESULT($fu_cv_sys_mounted_cray_listmntent)
 | 
			
		||||
if test $fu_cv_sys_mounted_cray_listmntent = yes; then
 | 
			
		||||
list_mounted_fs=found
 | 
			
		||||
AC_DEFINE(MOUNTED_LISTMNTENT)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test $ac_cv_func_getmntent = yes; then
 | 
			
		||||
 | 
			
		||||
# This system has the getmntent function.
 | 
			
		||||
# Determine whether it's the one-argument variant or the two-argument one.
 | 
			
		||||
 | 
			
		||||
if test -z "$list_mounted_fs"; then
 | 
			
		||||
# 4.3BSD, SunOS, HP-UX, Dynix, Irix
 | 
			
		||||
AC_MSG_CHECKING([for one-argument getmntent function])
 | 
			
		||||
AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1,
 | 
			
		||||
[test $ac_cv_header_mntent_h = yes \
 | 
			
		||||
&& fu_cv_sys_mounted_getmntent1=yes \
 | 
			
		||||
|| fu_cv_sys_mounted_getmntent1=no])
 | 
			
		||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1)
 | 
			
		||||
if test $fu_cv_sys_mounted_getmntent1 = yes; then
 | 
			
		||||
list_mounted_fs=found
 | 
			
		||||
AC_DEFINE(MOUNTED_GETMNTENT1)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test -z "$list_mounted_fs"; then
 | 
			
		||||
# SVR4
 | 
			
		||||
AC_MSG_CHECKING([for two-argument getmntent function])
 | 
			
		||||
AC_CACHE_VAL(fu_cv_sys_mounted_getmntent2,
 | 
			
		||||
[AC_EGREP_HEADER(getmntent, sys/mnttab.h,
 | 
			
		||||
fu_cv_sys_mounted_getmntent2=yes,
 | 
			
		||||
fu_cv_sys_mounted_getmntent2=no)])
 | 
			
		||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntent2)
 | 
			
		||||
if test $fu_cv_sys_mounted_getmntent2 = yes; then
 | 
			
		||||
list_mounted_fs=found
 | 
			
		||||
AC_DEFINE(MOUNTED_GETMNTENT2)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test -z "$list_mounted_fs"; then
 | 
			
		||||
AC_MSG_ERROR([could not determine how to read list of mounted filesystems])
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test -z "$list_mounted_fs"; then
 | 
			
		||||
# DEC Alpha running OSF/1.
 | 
			
		||||
AC_MSG_CHECKING([for getfsstat function])
 | 
			
		||||
AC_CACHE_VAL(fu_cv_sys_mounted_getsstat,
 | 
			
		||||
[AC_TRY_LINK([
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/mount.h>
 | 
			
		||||
#include <sys/fs_types.h>],
 | 
			
		||||
[struct statfs *stats;
 | 
			
		||||
int numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT); ],
 | 
			
		||||
fu_cv_sys_mounted_getsstat=yes,
 | 
			
		||||
fu_cv_sys_mounted_getsstat=no)])
 | 
			
		||||
AC_MSG_RESULT($fu_cv_sys_mounted_getsstat)
 | 
			
		||||
if test $fu_cv_sys_mounted_getsstat = yes; then
 | 
			
		||||
list_mounted_fs=found
 | 
			
		||||
AC_DEFINE(MOUNTED_GETFSSTAT)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test -z "$list_mounted_fs"; then
 | 
			
		||||
# AIX.
 | 
			
		||||
AC_MSG_CHECKING([for mntctl function and struct vmount])
 | 
			
		||||
AC_CACHE_VAL(fu_cv_sys_mounted_vmount,
 | 
			
		||||
[AC_TRY_CPP([#include <fshelp.h>],
 | 
			
		||||
fu_cv_sys_mounted_vmount=yes,
 | 
			
		||||
fu_cv_sys_mounted_vmount=no)])
 | 
			
		||||
AC_MSG_RESULT($fu_cv_sys_mounted_vmount)
 | 
			
		||||
if test $fu_cv_sys_mounted_vmount = yes; then
 | 
			
		||||
list_mounted_fs=found
 | 
			
		||||
AC_DEFINE(MOUNTED_VMOUNT)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test -z "$list_mounted_fs"; then
 | 
			
		||||
# SVR3
 | 
			
		||||
AC_MSG_CHECKING([for FIXME existence of three headers])
 | 
			
		||||
AC_CACHE_VAL(fu_cv_sys_mounted_fread_fstyp,
 | 
			
		||||
[AC_TRY_CPP([
 | 
			
		||||
#include <sys/statfs.h>
 | 
			
		||||
#include <sys/fstyp.h>
 | 
			
		||||
#include <mnttab.h>],
 | 
			
		||||
fu_cv_sys_mounted_fread_fstyp=yes,
 | 
			
		||||
fu_cv_sys_mounted_fread_fstyp=no)])
 | 
			
		||||
AC_MSG_RESULT($fu_cv_sys_mounted_fread_fstyp)
 | 
			
		||||
if test $fu_cv_sys_mounted_fread_fstyp = yes; then
 | 
			
		||||
list_mounted_fs=found
 | 
			
		||||
AC_DEFINE(MOUNTED_FREAD_FSTYP)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test -z "$list_mounted_fs"; then
 | 
			
		||||
# 4.4BSD and DEC OSF/1.
 | 
			
		||||
AC_MSG_CHECKING([for getmntinfo function])
 | 
			
		||||
AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo,
 | 
			
		||||
[
 | 
			
		||||
ok=
 | 
			
		||||
if test $ac_cv_func_getmntinfo = yes; then
 | 
			
		||||
AC_EGREP_HEADER(f_type;, sys/mount.h,
 | 
			
		||||
ok=yes)
 | 
			
		||||
fi
 | 
			
		||||
test -n "$ok" \
 | 
			
		||||
&& fu_cv_sys_mounted_getmntinfo=yes \
 | 
			
		||||
|| fu_cv_sys_mounted_getmntinfo=no
 | 
			
		||||
])
 | 
			
		||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo)
 | 
			
		||||
if test $fu_cv_sys_mounted_getmntinfo = yes; then
 | 
			
		||||
list_mounted_fs=found
 | 
			
		||||
AC_DEFINE(MOUNTED_GETMNTINFO)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# FIXME: add a test for netbsd-1.1 here
 | 
			
		||||
 | 
			
		||||
if test -z "$list_mounted_fs"; then
 | 
			
		||||
# Ultrix
 | 
			
		||||
AC_MSG_CHECKING([for getmnt function])
 | 
			
		||||
AC_CACHE_VAL(fu_cv_sys_mounted_getmnt,
 | 
			
		||||
[AC_TRY_CPP([
 | 
			
		||||
#include <sys/fs_types.h>
 | 
			
		||||
#include <sys/mount.h>],
 | 
			
		||||
fu_cv_sys_mounted_getmnt=yes,
 | 
			
		||||
fu_cv_sys_mounted_getmnt=no)])
 | 
			
		||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmnt)
 | 
			
		||||
if test $fu_cv_sys_mounted_getmnt = yes; then
 | 
			
		||||
list_mounted_fs=found
 | 
			
		||||
AC_DEFINE(MOUNTED_GETMNT)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test -z "$list_mounted_fs"; then
 | 
			
		||||
# SVR2
 | 
			
		||||
AC_MSG_CHECKING([whether it is possible to resort to fread on /etc/mnttab])
 | 
			
		||||
AC_CACHE_VAL(fu_cv_sys_mounted_fread,
 | 
			
		||||
[AC_TRY_CPP([#include <mnttab.h>],
 | 
			
		||||
fu_cv_sys_mounted_fread=yes,
 | 
			
		||||
fu_cv_sys_mounted_fread=no)])
 | 
			
		||||
AC_MSG_RESULT($fu_cv_sys_mounted_fread)
 | 
			
		||||
if test $fu_cv_sys_mounted_fread = yes; then
 | 
			
		||||
list_mounted_fs=found
 | 
			
		||||
AC_DEFINE(MOUNTED_FREAD)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test -z "$list_mounted_fs"; then
 | 
			
		||||
AC_MSG_ERROR([could not determine how to read list of mounted filesystems])
 | 
			
		||||
# FIXME -- no need to abort building the whole package
 | 
			
		||||
# Cannot build mountlist.c or anything that needs its functions
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
AC_CHECKING(how to get filesystem space usage)
 | 
			
		||||
space=no
 | 
			
		||||
 | 
			
		||||
# Perform only the link test since it seems there are no variants of the
 | 
			
		||||
# statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
 | 
			
		||||
# because that got a false positive on SCO OSR5.  Adding the declaration
 | 
			
		||||
# of a `struct statvfs' causes this test to fail (as it should) on such
 | 
			
		||||
# systems.  That system is reported to work fine with STAT_STATFS4 which
 | 
			
		||||
# is what it gets when this test fails.
 | 
			
		||||
if test $space = no; then
 | 
			
		||||
# SVR4
 | 
			
		||||
AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
 | 
			
		||||
[AC_TRY_LINK([#include <sys/types.h>
 | 
			
		||||
#include <sys/statvfs.h>],
 | 
			
		||||
[struct statvfs fsd; statvfs (0, &fsd);],
 | 
			
		||||
fu_cv_sys_stat_statvfs=yes,
 | 
			
		||||
fu_cv_sys_stat_statvfs=no)])
 | 
			
		||||
if test $fu_cv_sys_stat_statvfs = yes; then
 | 
			
		||||
space=yes
 | 
			
		||||
AC_DEFINE(STAT_STATVFS)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test $space = no; then
 | 
			
		||||
# DEC Alpha running OSF/1
 | 
			
		||||
AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
 | 
			
		||||
AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
 | 
			
		||||
[AC_TRY_RUN([
 | 
			
		||||
#include <sys/param.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/mount.h>
 | 
			
		||||
int main ()
 | 
			
		||||
{
 | 
			
		||||
struct statfs fsd;
 | 
			
		||||
fsd.f_fsize = 0;
 | 
			
		||||
return (statfs (".", &fsd, sizeof (struct statfs)));
 | 
			
		||||
}],
 | 
			
		||||
fu_cv_sys_stat_statfs3_osf1=yes,
 | 
			
		||||
fu_cv_sys_stat_statfs3_osf1=no,
 | 
			
		||||
fu_cv_sys_stat_statfs3_osf1=no)])
 | 
			
		||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
 | 
			
		||||
if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
 | 
			
		||||
space=yes
 | 
			
		||||
AC_DEFINE(STAT_STATFS3_OSF1)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test $space = no; then
 | 
			
		||||
# AIX
 | 
			
		||||
AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
 | 
			
		||||
member (AIX, 4.3BSD)])
 | 
			
		||||
AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
 | 
			
		||||
[AC_TRY_RUN([
 | 
			
		||||
#ifdef HAVE_SYS_PARAM_H
 | 
			
		||||
#include <sys/param.h>
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef HAVE_SYS_MOUNT_H
 | 
			
		||||
#include <sys/mount.h>
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef HAVE_SYS_VFS_H
 | 
			
		||||
#include <sys/vfs.h>
 | 
			
		||||
#endif
 | 
			
		||||
int main ()
 | 
			
		||||
{
 | 
			
		||||
struct statfs fsd;
 | 
			
		||||
fsd.f_bsize = 0;
 | 
			
		||||
return (statfs (".", &fsd));
 | 
			
		||||
}],
 | 
			
		||||
fu_cv_sys_stat_statfs2_bsize=yes,
 | 
			
		||||
fu_cv_sys_stat_statfs2_bsize=no,
 | 
			
		||||
fu_cv_sys_stat_statfs2_bsize=no)])
 | 
			
		||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
 | 
			
		||||
if test $fu_cv_sys_stat_statfs2_bsize = yes; then
 | 
			
		||||
space=yes
 | 
			
		||||
AC_DEFINE(STAT_STATFS2_BSIZE)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test $space = no; then
 | 
			
		||||
# SVR3
 | 
			
		||||
AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
 | 
			
		||||
AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
 | 
			
		||||
[AC_TRY_RUN([#include <sys/types.h>
 | 
			
		||||
#include <sys/statfs.h>
 | 
			
		||||
int main ()
 | 
			
		||||
{
 | 
			
		||||
struct statfs fsd;
 | 
			
		||||
return (statfs (".", &fsd, sizeof fsd, 0));
 | 
			
		||||
}],
 | 
			
		||||
fu_cv_sys_stat_statfs4=yes,
 | 
			
		||||
fu_cv_sys_stat_statfs4=no,
 | 
			
		||||
fu_cv_sys_stat_statfs4=no)])
 | 
			
		||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
 | 
			
		||||
if test $fu_cv_sys_stat_statfs4 = yes; then
 | 
			
		||||
space=yes
 | 
			
		||||
AC_DEFINE(STAT_STATFS4)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test $space = no; then
 | 
			
		||||
# 4.4BSD and NetBSD
 | 
			
		||||
AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
 | 
			
		||||
member (4.4BSD and NetBSD)])
 | 
			
		||||
AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
 | 
			
		||||
[AC_TRY_RUN([#include <sys/types.h>
 | 
			
		||||
#ifdef HAVE_SYS_PARAM_H
 | 
			
		||||
#include <sys/param.h>
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef HAVE_SYS_MOUNT_H
 | 
			
		||||
#include <sys/mount.h>
 | 
			
		||||
#endif
 | 
			
		||||
int main ()
 | 
			
		||||
{
 | 
			
		||||
struct statfs fsd;
 | 
			
		||||
fsd.f_fsize = 0;
 | 
			
		||||
return (statfs (".", &fsd));
 | 
			
		||||
}],
 | 
			
		||||
fu_cv_sys_stat_statfs2_fsize=yes,
 | 
			
		||||
fu_cv_sys_stat_statfs2_fsize=no,
 | 
			
		||||
fu_cv_sys_stat_statfs2_fsize=no)])
 | 
			
		||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
 | 
			
		||||
if test $fu_cv_sys_stat_statfs2_fsize = yes; then
 | 
			
		||||
space=yes
 | 
			
		||||
AC_DEFINE(STAT_STATFS2_FSIZE)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test $space = no; then
 | 
			
		||||
# Ultrix
 | 
			
		||||
AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
 | 
			
		||||
AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
 | 
			
		||||
[AC_TRY_RUN([#include <sys/types.h>
 | 
			
		||||
#ifdef HAVE_SYS_PARAM_H
 | 
			
		||||
#include <sys/param.h>
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef HAVE_SYS_MOUNT_H
 | 
			
		||||
#include <sys/mount.h>
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef HAVE_SYS_FS_TYPES_H
 | 
			
		||||
#include <sys/fs_types.h>
 | 
			
		||||
#endif
 | 
			
		||||
int main ()
 | 
			
		||||
{
 | 
			
		||||
struct fs_data fsd;
 | 
			
		||||
/* Ultrix's statfs returns 1 for success,
 | 
			
		||||
0 for not mounted, -1 for failure.  */
 | 
			
		||||
return (statfs (".", &fsd) != 1);
 | 
			
		||||
}],
 | 
			
		||||
fu_cv_sys_stat_fs_data=yes,
 | 
			
		||||
fu_cv_sys_stat_fs_data=no,
 | 
			
		||||
fu_cv_sys_stat_fs_data=no)])
 | 
			
		||||
AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
 | 
			
		||||
if test $fu_cv_sys_stat_fs_data = yes; then
 | 
			
		||||
space=yes
 | 
			
		||||
AC_DEFINE(STAT_STATFS2_FS_DATA)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test $space = no; then
 | 
			
		||||
# SVR2
 | 
			
		||||
AC_TRY_CPP([#include <sys/filsys.h>],
 | 
			
		||||
AC_DEFINE(STAT_READ_FILSYS) space=yes)
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test -n "$list_mounted_fs" && test $space != no; then
 | 
			
		||||
DF_PROG="df"
 | 
			
		||||
# AC_LIBOBJ(fsusage)
 | 
			
		||||
# AC_LIBOBJ(mountlist)
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Check for SunOS statfs brokenness wrt partitions 2GB and larger.
 | 
			
		||||
# If <sys/vfs.h> exists and struct statfs has a member named f_spare,
 | 
			
		||||
# enable the work-around code in fsusage.c.
 | 
			
		||||
AC_MSG_CHECKING([for statfs that truncates block counts])
 | 
			
		||||
AC_CACHE_VAL(fu_cv_sys_truncating_statfs,
 | 
			
		||||
[AC_TRY_COMPILE([
 | 
			
		||||
#if !defined(sun) && !defined(__sun)
 | 
			
		||||
choke -- this is a workaround for a Sun-specific problem
 | 
			
		||||
#endif
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/vfs.h>],
 | 
			
		||||
[struct statfs t; long c = *(t.f_spare);],
 | 
			
		||||
fu_cv_sys_truncating_statfs=yes,
 | 
			
		||||
fu_cv_sys_truncating_statfs=no,
 | 
			
		||||
)])
 | 
			
		||||
if test $fu_cv_sys_truncating_statfs = yes; then
 | 
			
		||||
AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS)
 | 
			
		||||
fi
 | 
			
		||||
AC_MSG_RESULT($fu_cv_sys_truncating_statfs)
 | 
			
		||||
 | 
			
		||||
AC_CHECKING(for AFS)
 | 
			
		||||
test -d /afs && AC_DEFINE(AFS)
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
dnl GNOME_SUPPORT_CHECKS
 | 
			
		||||
dnl    Check for various support functions needed by the standard
 | 
			
		||||
dnl    Gnome libraries.  Sets LIBOBJS, might define some macros.
 | 
			
		||||
dnl    This should only be used when building the Gnome libs; 
 | 
			
		||||
dnl    Gnome clients should not need this macro.
 | 
			
		||||
AC_DEFUN([GNOME_SUPPORT_CHECKS],[
 | 
			
		||||
  # we need an `awk' to build `gnomesupport.h'
 | 
			
		||||
  AC_REQUIRE([AC_PROG_AWK])
 | 
			
		||||
 | 
			
		||||
  # this should go away soon
 | 
			
		||||
  need_gnome_support=yes
 | 
			
		||||
 | 
			
		||||
  AC_CHECK_FUNCS(getopt_long,,
 | 
			
		||||
   [AC_LIBOBJ(getopt)
 | 
			
		||||
    AC_LIBOBJ(getopt1)])
 | 
			
		||||
 | 
			
		||||
  # for `scandir'
 | 
			
		||||
  AC_HEADER_DIRENT
 | 
			
		||||
 | 
			
		||||
  # copied from `configure.in' of `libiberty'
 | 
			
		||||
  vars="program_invocation_short_name program_invocation_name sys_errlist"
 | 
			
		||||
  for v in $vars; do
 | 
			
		||||
    AC_MSG_CHECKING([for $v])
 | 
			
		||||
    AC_CACHE_VAL(gnome_cv_var_$v,
 | 
			
		||||
      [AC_TRY_LINK([int *p;], [extern int $v; p = &$v;],
 | 
			
		||||
		   [eval "gnome_cv_var_$v=yes"],
 | 
			
		||||
		   [eval "gnome_cv_var_$v=no"])])
 | 
			
		||||
    if eval "test \"`echo '$gnome_cv_var_'$v`\" = yes"; then
 | 
			
		||||
      AC_MSG_RESULT(yes)
 | 
			
		||||
      n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
 | 
			
		||||
      AC_DEFINE_UNQUOTED($n)
 | 
			
		||||
    else
 | 
			
		||||
      AC_MSG_RESULT(no)
 | 
			
		||||
    fi
 | 
			
		||||
  done
 | 
			
		||||
 | 
			
		||||
  AC_REPLACE_FUNCS(memmove mkstemp scandir strcasecmp strerror strndup strnlen)
 | 
			
		||||
  AC_REPLACE_FUNCS(strtok_r strtod strtol strtoul vasprintf vsnprintf)
 | 
			
		||||
 | 
			
		||||
  AC_CHECK_FUNCS(realpath,,AC_LIBOBJ(canonicalize))
 | 
			
		||||
 | 
			
		||||
  # to include `error.c' error.c has some HAVE_* checks
 | 
			
		||||
  AC_CHECK_FUNCS(vprintf doprnt strerror_r)
 | 
			
		||||
  # stolen from am_func_error_at_line
 | 
			
		||||
  AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line,
 | 
			
		||||
  [AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");],
 | 
			
		||||
              am_cv_lib_error_at_line=yes,
 | 
			
		||||
              am_cv_lib_error_at_line=no)])
 | 
			
		||||
  if test $am_cv_lib_error_at_line = no; then
 | 
			
		||||
    AC_LIBOBJ(error)
 | 
			
		||||
  fi
 | 
			
		||||
  
 | 
			
		||||
  # This is required if we declare setreuid () and setregid ().
 | 
			
		||||
  AC_TYPE_UID_T
 | 
			
		||||
 | 
			
		||||
  # see if we need to declare some functions.  Solaris is notorious for
 | 
			
		||||
  # putting functions into the `libc' but not listing them in the headers
 | 
			
		||||
  AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h dirent.h)
 | 
			
		||||
  GCC_NEED_DECLARATIONS(gethostname setreuid setregid getpagesize)
 | 
			
		||||
  GCC_NEED_DECLARATION(scandir,[
 | 
			
		||||
#ifdef HAVE_DIRENT_H
 | 
			
		||||
#include <dirent.h>
 | 
			
		||||
#endif
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
  AC_SUBST(need_gnome_support)
 | 
			
		||||
 | 
			
		||||
  AM_CONDITIONAL(BUILD_GNOME_SUPPORT, test "$need_gnome_support" = yes)
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dnl This file is intended for use both internally in libgtop and in every program
 | 
			
		||||
dnl that wants to use it.
 | 
			
		||||
dnl
 | 
			
		||||
dnl It defines the following variables:
 | 
			
		||||
dnl
 | 
			
		||||
dnl * 'libgtop_sysdeps_dir'    - sysdeps dir for libgtop.
 | 
			
		||||
dnl * 'libgtop_use_machine_h'  - some of system dependend parts of libgtop provide
 | 
			
		||||
dnl                              their own header file. In this case we need to
 | 
			
		||||
dnl                              define 'HAVE_GLIBTOP_MACHINE_H'.
 | 
			
		||||
dnl * 'libgtop_need_server'    - is the server really needed? Defines 'NEED_LIBGTOP'
 | 
			
		||||
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*)
 | 
			
		||||
	  if test $linux_table = yes ; then
 | 
			
		||||
	    AC_CHECK_HEADER(linux/table.h, linux_table=yes, linux_table=no)
 | 
			
		||||
	  elif test $linux_table = auto ; then
 | 
			
		||||
	    AC_MSG_CHECKING(for table function in Linux Kernel)
 | 
			
		||||
	    AC_TRY_RUN([
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <linux/unistd.h>
 | 
			
		||||
#include <linux/table.h>
 | 
			
		||||
 | 
			
		||||
#include <syscall.h>
 | 
			
		||||
 | 
			
		||||
static inline _syscall3 (int, table, int, type, union table *, tbl, const void *, param);
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
main (void)
 | 
			
		||||
{
 | 
			
		||||
	union table tbl;
 | 
			
		||||
	int ret;
 | 
			
		||||
 | 
			
		||||
	ret = table (TABLE_VERSION, NULL, NULL);
 | 
			
		||||
 | 
			
		||||
	if (ret == -1)
 | 
			
		||||
		exit (-errno);
 | 
			
		||||
 | 
			
		||||
	exit (ret < 1 ? ret : 0);
 | 
			
		||||
}
 | 
			
		||||
], linux_table=yes, linux_table=no, linux_table=no)
 | 
			
		||||
	    AC_MSG_RESULT($linux_table)
 | 
			
		||||
	  fi
 | 
			
		||||
	  if test $linux_table = yes ; then
 | 
			
		||||
	    AC_DEFINE(HAVE_LINUX_TABLE)
 | 
			
		||||
	  fi
 | 
			
		||||
	  ;;
 | 
			
		||||
	esac
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
 | 
			
		||||
	AC_REQUIRE([AC_CANONICAL_HOST])
 | 
			
		||||
 | 
			
		||||
	AC_SUBST(libgtop_sysdeps_dir)
 | 
			
		||||
	AC_SUBST(libgtop_use_machine_h)
 | 
			
		||||
	AC_SUBST(libgtop_need_server)
 | 
			
		||||
 | 
			
		||||
	AC_ARG_WITH(libgtop-examples,
 | 
			
		||||
	[  --with-libgtop-examples Build the libgtop examples (default=no)],[
 | 
			
		||||
	build_examples="$withval"], [build_examples=no])
 | 
			
		||||
 | 
			
		||||
	AM_CONDITIONAL(EXAMPLES, test x"$build_examples" = xyes)
 | 
			
		||||
 | 
			
		||||
	AC_ARG_ENABLE(hacker-mode,
 | 
			
		||||
	[  --enable-hacker-mode    Enable building of unstable sysdeps],
 | 
			
		||||
	[hacker_mode="$enableval"], [hacker_mode=no])
 | 
			
		||||
 | 
			
		||||
	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)],[
 | 
			
		||||
	libgtop_smp="$withval"],[libgtop_smp=auto])
 | 
			
		||||
 | 
			
		||||
	if test $libgtop_smp = auto ; then
 | 
			
		||||
	  AC_MSG_CHECKING(whether to enable SMP support)
 | 
			
		||||
	  case "$host_os" in
 | 
			
		||||
	  linux*)
 | 
			
		||||
	    libgtop_smp=yes
 | 
			
		||||
	    ;;
 | 
			
		||||
	  aix*)
 | 
			
		||||
	    libgtop_smp=yes
 | 
			
		||||
	    ;;
 | 
			
		||||
	  *)
 | 
			
		||||
	    libgtop_smp=no
 | 
			
		||||
	    ;;
 | 
			
		||||
	  esac
 | 
			
		||||
	  AC_MSG_RESULT($libgtop_smp)
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	if test $libgtop_smp = yes ; then
 | 
			
		||||
	  AC_DEFINE(HAVE_LIBGTOP_SMP)
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	AM_CONDITIONAL(LIBGTOP_SMP, test $libgtop_smp = yes)
 | 
			
		||||
 | 
			
		||||
	AC_MSG_CHECKING(for libgtop sysdeps directory)
 | 
			
		||||
 | 
			
		||||
	case "$host_os" in
 | 
			
		||||
	linux*)
 | 
			
		||||
	  if test x$linux_table = xyes ; then
 | 
			
		||||
	    libgtop_sysdeps_dir=kernel
 | 
			
		||||
	    libgtop_use_machine_h=no
 | 
			
		||||
	  else
 | 
			
		||||
	    libgtop_sysdeps_dir=linux
 | 
			
		||||
	    libgtop_use_machine_h=no
 | 
			
		||||
	    libgtop_have_sysinfo=yes
 | 
			
		||||
	  fi
 | 
			
		||||
	  libgtop_need_server=no
 | 
			
		||||
	  ;;
 | 
			
		||||
	freebsd*|netbsd*|openbsd*|bsdi*)
 | 
			
		||||
	  libgtop_sysdeps_dir=freebsd
 | 
			
		||||
	  libgtop_use_machine_h=yes
 | 
			
		||||
	  libgtop_need_server=yes
 | 
			
		||||
	  libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server'
 | 
			
		||||
	  ;;
 | 
			
		||||
	solaris*)
 | 
			
		||||
	  libgtop_sysdeps_dir=solaris
 | 
			
		||||
	  libgtop_use_machine_h=yes
 | 
			
		||||
	  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
 | 
			
		||||
	    sunos4*)
 | 
			
		||||
	      #Please note that this port is obsolete and not working at
 | 
			
		||||
	      #all. It is only useful for people who want to fix it ... :-)
 | 
			
		||||
	      libgtop_sysdeps_dir=sun4
 | 
			
		||||
	      libgtop_use_machine_h=yes
 | 
			
		||||
	      libgtop_need_server=yes
 | 
			
		||||
	      ;;
 | 
			
		||||
	    osf*)
 | 
			
		||||
	      libgtop_sysdeps_dir=osf1
 | 
			
		||||
	      libgtop_use_machine_h=yes
 | 
			
		||||
	      libgtop_need_server=yes
 | 
			
		||||
	      ;;
 | 
			
		||||
	    *)
 | 
			
		||||
	      libgtop_sysdeps_dir=stub
 | 
			
		||||
	      libgtop_use_machine_h=no
 | 
			
		||||
	      libgtop_need_server=no
 | 
			
		||||
	      ;;
 | 
			
		||||
	    esac
 | 
			
		||||
	  else
 | 
			
		||||
	    libgtop_sysdeps_dir=stub
 | 
			
		||||
	    libgtop_use_machine_h=no
 | 
			
		||||
	    libgtop_need_server=no
 | 
			
		||||
	  fi
 | 
			
		||||
	  ;;
 | 
			
		||||
	esac
 | 
			
		||||
 | 
			
		||||
	test -z "$libgtop_postinstall" && libgtop_postinstall=:
 | 
			
		||||
 | 
			
		||||
	AC_MSG_RESULT($libgtop_sysdeps_dir)
 | 
			
		||||
 | 
			
		||||
	AC_SUBST(libgtop_sysdeps_dir)
 | 
			
		||||
	AC_SUBST(libgtop_postinstall)
 | 
			
		||||
	AC_SUBST(libgtop_have_sysinfo)
 | 
			
		||||
 | 
			
		||||
	case "$host_os" in
 | 
			
		||||
	*bsd*)
 | 
			
		||||
	  AC_CHECK_HEADERS(net/if_var.h)
 | 
			
		||||
	  AC_MSG_CHECKING([for I4B])
 | 
			
		||||
	  AC_TRY_COMPILE([
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
 | 
			
		||||
#include <net/if.h>
 | 
			
		||||
#include <net/if_types.h>
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_NET_IF_VAR_H
 | 
			
		||||
#include <net/if_var.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <net/netisr.h>
 | 
			
		||||
#include <net/route.h>
 | 
			
		||||
 | 
			
		||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
 | 
			
		||||
#include <net/if_sppp.h>
 | 
			
		||||
#else
 | 
			
		||||
#include <i4b/sppp/if_sppp.h>
 | 
			
		||||
#endif
 | 
			
		||||
],[
 | 
			
		||||
	size_t size = sizeof (struct sppp);
 | 
			
		||||
], have_i4b=yes, have_i4b=no)
 | 
			
		||||
	  AC_MSG_RESULT($have_i4b)
 | 
			
		||||
	  if test x$have_i4b = xyes; then
 | 
			
		||||
	    AC_DEFINE(HAVE_I4B)
 | 
			
		||||
	    AC_MSG_CHECKING([for I4B accounting])
 | 
			
		||||
	    AC_TRY_COMPILE([
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
 | 
			
		||||
#include <net/if.h>
 | 
			
		||||
#include <net/if_types.h>
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_NET_IF_VAR_H
 | 
			
		||||
#include <net/if_var.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <net/netisr.h>
 | 
			
		||||
#include <net/route.h>
 | 
			
		||||
 | 
			
		||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
 | 
			
		||||
#include <net/if_sppp.h>
 | 
			
		||||
#else
 | 
			
		||||
#include <i4b/sppp/if_sppp.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <machine/i4b_acct.h>
 | 
			
		||||
],[
 | 
			
		||||
	size_t size = sizeof (struct i4bisppp_softc);
 | 
			
		||||
], have_i4b_acct=yes, have_i4b_acct=no)
 | 
			
		||||
	    AC_MSG_RESULT($have_i4b_acct)
 | 
			
		||||
	    if test x$have_i4b_acct = xyes ; then
 | 
			
		||||
	      AC_DEFINE(HAVE_I4B_ACCT)
 | 
			
		||||
	    else
 | 
			
		||||
	      AC_WARN([
 | 
			
		||||
*** I4B accounting disabled - you won't get any PPP statistics.
 | 
			
		||||
*** Read "misc/i4b_acct.txt" in the LibGTop source directory
 | 
			
		||||
*** to see how to enable it.])
 | 
			
		||||
	    fi
 | 
			
		||||
	  fi
 | 
			
		||||
	  ;;
 | 
			
		||||
	linux*)
 | 
			
		||||
	  os_major_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
 | 
			
		||||
	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
 | 
			
		||||
	  os_minor_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
 | 
			
		||||
	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
 | 
			
		||||
	  os_micro_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
 | 
			
		||||
	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
 | 
			
		||||
	  os_version_expr="$os_major_version 65536 * $os_minor_version 256 * + $os_micro_version + p q"
 | 
			
		||||
 | 
			
		||||
	  AC_CHECK_HEADERS(linux/version.h, have_linux_version_h=yes,
 | 
			
		||||
	    have_linux_version_h=no)
 | 
			
		||||
 | 
			
		||||
	  if test x$have_linux_version_h = xyes ; then
 | 
			
		||||
	    version_code=`cat /usr/include/linux/version.h | \
 | 
			
		||||
	      grep \#define | grep LINUX_VERSION_CODE`
 | 
			
		||||
	    os_version_code=`echo $version_code | \
 | 
			
		||||
	      sed 's/^.*LINUX_VERSION_CODE[[ \t]]*\([[0-9]]*\).*$/\1/'`
 | 
			
		||||
	  else
 | 
			
		||||
	    os_version_code=`echo "$os_version_expr" | dc`
 | 
			
		||||
	  fi
 | 
			
		||||
 | 
			
		||||
	  AC_MSG_CHECKING(for Linux kernel version code)
 | 
			
		||||
	  AC_DEFINE_UNQUOTED(GLIBTOP_LINUX_VERSION_CODE, $os_version_code)
 | 
			
		||||
	  AC_MSG_RESULT($os_version_code)
 | 
			
		||||
	  ;;
 | 
			
		||||
	solaris*)
 | 
			
		||||
	  os_major_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\1/'`
 | 
			
		||||
	  os_minor_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\2/'`
 | 
			
		||||
	  os_micro_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\3/'`
 | 
			
		||||
	  test -z "$os_micro_version" && os_micro_version=0
 | 
			
		||||
	  os_version_expr="$os_major_version 100 * $os_minor_version 10 * + $os_micro_version + p q"
 | 
			
		||||
	  os_version_code=`echo "$os_version_expr" | dc`
 | 
			
		||||
 | 
			
		||||
	  AC_MSG_CHECKING(for Solaris release code)
 | 
			
		||||
	  AC_DEFINE_UNQUOTED(GLIBTOP_SOLARIS_RELEASE, $os_version_code)
 | 
			
		||||
	  AC_MSG_RESULT($os_version_code)
 | 
			
		||||
	  ;;
 | 
			
		||||
	esac
 | 
			
		||||
 | 
			
		||||
	AC_MSG_CHECKING(for machine.h in libgtop sysdeps dir)
 | 
			
		||||
	AC_MSG_RESULT($libgtop_use_machine_h)
 | 
			
		||||
 | 
			
		||||
	AC_MSG_CHECKING(whether we need libgtop)
 | 
			
		||||
	AC_MSG_RESULT($libgtop_need_server)
 | 
			
		||||
 | 
			
		||||
	if test x$libgtop_need_server = xyes ; then
 | 
			
		||||
	  AC_DEFINE(NEED_LIBGTOP)
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	if test x$libgtop_use_machine_h = xyes ; then
 | 
			
		||||
	  AC_DEFINE(HAVE_GLIBTOP_MACHINE_H)
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	AM_CONDITIONAL(NEED_LIBGTOP, test x$libgtop_need_server = xyes)
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
@@ -14,8 +14,4 @@ PKG_NAME="Gnome Top Library"
 | 
			
		||||
    exit 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
which gnome-autogen.sh || {
 | 
			
		||||
    echo "You need to install gnome-common from the GNOME CVS"
 | 
			
		||||
    exit 1
 | 
			
		||||
}
 | 
			
		||||
USE_GNOME2_MACROS=1 . gnome-autogen.sh
 | 
			
		||||
. $srcdir/macros/autogen.sh
 | 
			
		||||
 
 | 
			
		||||
@@ -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 '';
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										171
									
								
								configure.in
									
									
									
									
									
								
							
							
						
						
									
										171
									
								
								configure.in
									
									
									
									
									
								
							@@ -6,23 +6,24 @@ 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_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
 | 
			
		||||
AM_INIT_AUTOMAKE(libgtop, $LIBGTOP_VERSION)
 | 
			
		||||
LIBGTOP_INTERFACE_AGE=5
 | 
			
		||||
LIBGTOP_BINARY_AGE=5
 | 
			
		||||
dnl This is required at several places
 | 
			
		||||
AC_CHECK_PROG(ac_dc_found, dc, yes, no)
 | 
			
		||||
if test x$ac_dc_found != xyes ; then
 | 
			
		||||
AC_MSG_ERROR([
 | 
			
		||||
*** The "dc" utility was not found on your system.
 | 
			
		||||
***
 | 
			
		||||
*** When using RedHat Linux, you need to install the "bc" package.
 | 
			
		||||
***
 | 
			
		||||
*** It is now part of the "bc" package, so you should look at
 | 
			
		||||
*** ftp://ftp.gnu.org/pub/gnu/bc/ if you want to compile it yourself.
 | 
			
		||||
***
 | 
			
		||||
*** Other systems and distributions may also have it in their "bc" package,
 | 
			
		||||
*** so if there's no "dc" one, please look for "bc".
 | 
			
		||||
***])
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# you can set this to `-snap' for instance to create
 | 
			
		||||
# a `libgtop-1.x.y-snap.tar.gz' tarball.
 | 
			
		||||
LIBGTOP_VERSION_SUFFIX=
 | 
			
		||||
 | 
			
		||||
# Increase each time you change the client/server protocol.
 | 
			
		||||
LIBGTOP_SERVER_VERSION=5
 | 
			
		||||
 | 
			
		||||
# Version code calculation
 | 
			
		||||
LIBGTOP_VERSION_CODE=`expr $LIBGTOP_MAJOR_VERSION \* 1000000 + $LIBGTOP_MINOR_VERSION \* 1000 + $LIBGTOP_MICRO_VERSION`
 | 
			
		||||
. $srcdir/LIBGTOP-VERSION
 | 
			
		||||
AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
 | 
			
		||||
 | 
			
		||||
AC_SUBST(LIBGTOP_MAJOR_VERSION)
 | 
			
		||||
AC_SUBST(LIBGTOP_MINOR_VERSION)
 | 
			
		||||
@@ -46,12 +47,12 @@ AC_SUBST(LT_CURRENT)
 | 
			
		||||
AC_SUBST(LT_REVISION)
 | 
			
		||||
AC_SUBST(LT_AGE)
 | 
			
		||||
 | 
			
		||||
ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I ."
 | 
			
		||||
AM_ACLOCAL_INCLUDE(. macros)
 | 
			
		||||
 | 
			
		||||
AC_ISC_POSIX
 | 
			
		||||
AC_PROG_CC
 | 
			
		||||
AC_STDC_HEADERS
 | 
			
		||||
dnl AC_ARG_PROGRAM
 | 
			
		||||
AC_ARG_PROGRAM
 | 
			
		||||
 | 
			
		||||
dnl We need this at some places.
 | 
			
		||||
libgtop_top_builddir=`pwd`
 | 
			
		||||
@@ -70,8 +71,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
 | 
			
		||||
@@ -82,44 +85,42 @@ export cross_compiling
 | 
			
		||||
AM_PROG_LIBTOOL
 | 
			
		||||
 | 
			
		||||
dnl Let the user enable compiler warnings
 | 
			
		||||
dnl GNOME_COMPILE_WARNINGS
 | 
			
		||||
GNOME_COMPILE_WARNINGS
 | 
			
		||||
 | 
			
		||||
dnl GNOME_INIT_HOOK(gnome_found=yes)
 | 
			
		||||
GNOME_INIT_HOOK(gnome_found=yes)
 | 
			
		||||
 | 
			
		||||
dnl if test "x$gnome_found" != xyes; then
 | 
			
		||||
dnl   if test "x$want_gnome" != xno ; then
 | 
			
		||||
dnl     AC_MSG_ERROR([
 | 
			
		||||
dnl *** GNOME was not found on this system. ***
 | 
			
		||||
dnl 
 | 
			
		||||
dnl *** If you want to use LibGTop without GNOME, you need
 | 
			
		||||
dnl *** to give configure the --without-gnome parameter.
 | 
			
		||||
dnl ])
 | 
			
		||||
dnl   else
 | 
			
		||||
dnl     AC_DEFINE(WITHOUT_GNOME)
 | 
			
		||||
dnl   fi
 | 
			
		||||
dnl   GNOME_SUPPORT_CHECKS
 | 
			
		||||
dnl else
 | 
			
		||||
dnl   if test "x$want_gnome" != xno ; then
 | 
			
		||||
dnl     AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false)
 | 
			
		||||
dnl   else
 | 
			
		||||
dnl     GNOME_SUPPORT_CHECKS
 | 
			
		||||
dnl   fi
 | 
			
		||||
dnl fi
 | 
			
		||||
if test "x$gnome_found" != xyes; then
 | 
			
		||||
  if test "x$want_gnome" != xno ; then
 | 
			
		||||
    AC_MSG_ERROR([
 | 
			
		||||
*** GNOME was not found on this system. ***
 | 
			
		||||
 | 
			
		||||
AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false)
 | 
			
		||||
*** If you want to use LibGTop without GNOME, you need
 | 
			
		||||
*** to give configure the --without-gnome parameter.
 | 
			
		||||
])
 | 
			
		||||
  else
 | 
			
		||||
    AC_DEFINE(WITHOUT_GNOME)
 | 
			
		||||
  fi
 | 
			
		||||
  GNOME_SUPPORT_CHECKS
 | 
			
		||||
else
 | 
			
		||||
  if test "x$want_gnome" != xno ; then
 | 
			
		||||
    AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false)
 | 
			
		||||
  else
 | 
			
		||||
    GNOME_SUPPORT_CHECKS
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
 | 
			
		||||
 | 
			
		||||
GNOME_LIBGTOP_SYSDEPS
 | 
			
		||||
GNOME_LIBGTOP_TYPES
 | 
			
		||||
 | 
			
		||||
dnl AC_ARG_WITH(libgtop-guile,
 | 
			
		||||
dnl [  --with-libgtop-guile    Build the libgtop guile interface (default=no)],
 | 
			
		||||
dnl [build_guile="$withval"], [build_guile=yes])
 | 
			
		||||
AC_ARG_WITH(libgtop-guile,
 | 
			
		||||
[  --with-libgtop-guile    Build the libgtop guile interface (default=no)],
 | 
			
		||||
[build_guile="$withval"], [build_guile=yes])
 | 
			
		||||
 | 
			
		||||
dnl if test x$build_guile != xno ; then
 | 
			
		||||
dnl  GNOME_CHECK_GUILE
 | 
			
		||||
dnl fi
 | 
			
		||||
if test x$build_guile != xno ; then
 | 
			
		||||
  GNOME_CHECK_GUILE
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
AC_ARG_WITH(libgtop-inodedb,
 | 
			
		||||
[  --with-libgtop-inodedb  Build the inodedb stuff (default=no)],
 | 
			
		||||
@@ -177,17 +178,11 @@ AC_SUBST(guile_subdirs)
 | 
			
		||||
 | 
			
		||||
AM_PROG_LIBTOOL
 | 
			
		||||
 | 
			
		||||
GLIB_REQUIRED=2.0.0
 | 
			
		||||
 | 
			
		||||
PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED)
 | 
			
		||||
AC_SUBST(GLIB_CFLAGS)
 | 
			
		||||
AC_SUBST(GLIB_LIBS)
 | 
			
		||||
 | 
			
		||||
dnl (1.2.0,,AC_MSG_ERROR(GLIB >= 1.2.0 is required for LibGTop))
 | 
			
		||||
AM_PATH_GLIB(1.2.0,,AC_MSG_ERROR(GLIB >= 1.2.0 is required for LibGTop))
 | 
			
		||||
 | 
			
		||||
dnl You need to uncomment the following line if you want to use
 | 
			
		||||
dnl libGTop without Gnome.
 | 
			
		||||
GNOME_SUPPORT_CHECKS
 | 
			
		||||
dnl GNOME_SUPPORT_CHECKS
 | 
			
		||||
 | 
			
		||||
dnl Checks for typedefs, structures, and compiler characteristics.
 | 
			
		||||
AC_C_CONST
 | 
			
		||||
@@ -221,10 +216,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)
 | 
			
		||||
@@ -252,18 +243,18 @@ AC_CHECK_LIB(kvm, kvm_open,[
 | 
			
		||||
dnl For DEC OSF1
 | 
			
		||||
AC_CHECK_LIB(mach, vm_statistics)
 | 
			
		||||
 | 
			
		||||
dnl For some broken libc5 systems (Debian 1.3)
 | 
			
		||||
saved_CFLAGS=$CFLAGS
 | 
			
		||||
CFLAGS="$CFLAGS -D_GNU_SOURCE"
 | 
			
		||||
dnl For some broken libc5 systems (Debian 1.3)                                                           
 | 
			
		||||
saved_CFLAGS=$CFLAGS                                                                                     
 | 
			
		||||
CFLAGS="$CFLAGS -D_GNU_SOURCE"                                                                           
 | 
			
		||||
GCC_NEED_DECLARATION(program_invocation_name, [                           
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
CFLAGS=$saved_CFLAGS
 | 
			
		||||
 | 
			
		||||
#include <errno.h>                                                                                       
 | 
			
		||||
#include <stdio.h>                                                                                       
 | 
			
		||||
#include <stdlib.h>                                                                                      
 | 
			
		||||
#include <string.h>                                                                                      
 | 
			
		||||
])                                                                                                       
 | 
			
		||||
CFLAGS=$saved_CFLAGS                                                                                     
 | 
			
		||||
                                                                                                         
 | 
			
		||||
dnl Check for Internet sockets.
 | 
			
		||||
AC_CHECK_FUNC(socket,
 | 
			
		||||
 [AC_CHECK_HEADER(netinet/in.h,
 | 
			
		||||
   [AC_CHECK_HEADER(arpa/inet.h, [
 | 
			
		||||
@@ -285,13 +276,9 @@ 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"
 | 
			
		||||
 | 
			
		||||
GETTEXT_PACKAGE=libgtop-2.0
 | 
			
		||||
AC_SUBST(GETTEXT_PACKAGE)
 | 
			
		||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE")
 | 
			
		||||
 | 
			
		||||
AM_GLIB_GNU_GETTEXT
 | 
			
		||||
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 no pl pt pt_BR ru sk sl sv tr uk zh_CN zh_TW"
 | 
			
		||||
AM_GNOME_GETTEXT
 | 
			
		||||
 | 
			
		||||
AC_PATH_XTRA
 | 
			
		||||
 | 
			
		||||
@@ -335,7 +322,7 @@ if test "x$gnome_found" = xyes ; then
 | 
			
		||||
  LIBSUPPORT="$GNOME_LIBDIR -lgnomesupport"
 | 
			
		||||
  SUPPORTINCS="$GNOME_INCLUDEDIR"
 | 
			
		||||
else
 | 
			
		||||
  LIBSUPPORT='$(top_builddir)/support/libgnomesupport-2.0.la'
 | 
			
		||||
  LIBSUPPORT='$(top_builddir)/support/libgnomesupport.la'
 | 
			
		||||
  SUPPORTINCS='-DNEED_GNOMESUPPORT_H -I$(top_builddir)/support -I$(top_srcdir)/support'
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -351,7 +338,7 @@ AC_SUBST(SUPPORTINCS)
 | 
			
		||||
 | 
			
		||||
dnl These definitions are expanded in make.
 | 
			
		||||
LIBGTOP_LIBS='-L$(libdir)'
 | 
			
		||||
LIBGTOP_INCS='-I$(includedir)/libgtop-2.0'
 | 
			
		||||
LIBGTOP_INCS='-I$(includedir)/libgtop-1.0'
 | 
			
		||||
 | 
			
		||||
if test x$libgtop_use_machine_h = xyes ; then
 | 
			
		||||
  LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_GLIBTOP_MACHINE_H"
 | 
			
		||||
@@ -374,13 +361,13 @@ 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)
 | 
			
		||||
 | 
			
		||||
if test x$ac_cv_guile_found = xyes ; then
 | 
			
		||||
  LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile-2.0"
 | 
			
		||||
  LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile"
 | 
			
		||||
  libgtop_guile_found=yes
 | 
			
		||||
else
 | 
			
		||||
  libgtop_guile_found=no
 | 
			
		||||
@@ -396,11 +383,11 @@ fi
 | 
			
		||||
 | 
			
		||||
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS"
 | 
			
		||||
 | 
			
		||||
LIBGTOP_LIBS="$LIBGTOP_LIBS -lgtop-2.0 -lgtop_sysdeps-2.0 -lgtop_common-2.0"
 | 
			
		||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop-2.0 -lgtop_sysdeps-2.0 -lgtop_common-2.0"
 | 
			
		||||
LIBGTOP_LIBS="$LIBGTOP_LIBS -lgtop -lgtop_sysdeps -lgtop_common"
 | 
			
		||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop -lgtop_sysdeps -lgtop_common"
 | 
			
		||||
 | 
			
		||||
LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS -lgtop_names-2.0"
 | 
			
		||||
LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile_names-2.0 -lgtop_names-2.0"
 | 
			
		||||
LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS -lgtop_names"
 | 
			
		||||
LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile_names -lgtop_names"
 | 
			
		||||
 | 
			
		||||
LIBGTOP_LIBS="$LIBGTOP_LIBS" 
 | 
			
		||||
LIBGTOP_NAMES_LIBS="$LIBGTOP_NAMES_LIBS"
 | 
			
		||||
@@ -424,12 +411,12 @@ else
 | 
			
		||||
  guile_def=""
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include $SUPPORTINCS $GLIB_CFLAGS $CFLAGS $X_CFLAGS $guile_def "'-DGTOPLOCALEDIR=\"$(datadir)/locale\" -DLIBGTOP_VERSION=\"'"$LIBGTOP_VERSION"'\" -DLIBGTOP_SERVER_VERSION=\"'"$LIBGTOP_SERVER_VERSION"'\" -DLIBGTOP_VERSION_CODE='$LIBGTOP_VERSION_CODE' -DLIBGTOP_SERVER=\"'"$LIBGTOP_SERVER"'\"'
 | 
			
		||||
INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include -I\$(top_srcdir)/intl $SUPPORTINCS $GLIB_CFLAGS $CFLAGS $X_CFLAGS $guile_def "'-DGTOPLOCALEDIR=\"$(datadir)/locale\" -DLIBGTOP_VERSION=\"'"$LIBGTOP_VERSION"'\" -DLIBGTOP_SERVER_VERSION=\"'"$LIBGTOP_SERVER_VERSION"'\" -DLIBGTOP_VERSION_CODE='$LIBGTOP_VERSION_CODE' -DLIBGTOP_SERVER=\"'"$LIBGTOP_SERVER"'\"'
 | 
			
		||||
 | 
			
		||||
AC_SUBST(INCLUDES)
 | 
			
		||||
 | 
			
		||||
AC_SUBST(LIBGTOP_EXTRA_LIBS)
 | 
			
		||||
AC_SUBST(GLIB_LIBS)
 | 
			
		||||
 | 
			
		||||
AC_SUBST(LIBGTOP_LIBS)
 | 
			
		||||
AC_SUBST(LIBGTOP_INCS)
 | 
			
		||||
AC_SUBST(LIBGTOP_NAMES_LIBS)
 | 
			
		||||
@@ -442,8 +429,8 @@ AC_SUBST(LIBGTOP_BINDIR)
 | 
			
		||||
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'
 | 
			
		||||
   sysdeps_suid_lib="\$(top_builddir)/sysdeps/\$(sysdeps_dir)/libgtop_sysdeps_suid.la"
 | 
			
		||||
   server_programs='libgtop_server'
 | 
			
		||||
else
 | 
			
		||||
   sysdeps_suid_lib=
 | 
			
		||||
   server_programs=
 | 
			
		||||
@@ -455,6 +442,7 @@ AC_OUTPUT([
 | 
			
		||||
Makefile
 | 
			
		||||
libgtop.spec
 | 
			
		||||
po/Makefile.in
 | 
			
		||||
intl/Makefile
 | 
			
		||||
misc/Makefile
 | 
			
		||||
include/Makefile
 | 
			
		||||
include/glibtop/Makefile
 | 
			
		||||
@@ -471,7 +459,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 +466,4 @@ lib/Makefile
 | 
			
		||||
examples/Makefile
 | 
			
		||||
doc/Makefile
 | 
			
		||||
support/Makefile
 | 
			
		||||
support/gnome-support-2.0.pc
 | 
			
		||||
libgtop-2.0.pc
 | 
			
		||||
])
 | 
			
		||||
macros/Makefile])
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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,10 +0,0 @@
 | 
			
		||||
texinfo.tex
 | 
			
		||||
*.info
 | 
			
		||||
Makefile.in
 | 
			
		||||
Makefile
 | 
			
		||||
*.log *.toc *.dvi *.aux *.cp *.fn *.vr *.tp *.ky *.pg
 | 
			
		||||
*.ps
 | 
			
		||||
auto-macros.texi
 | 
			
		||||
version.texi
 | 
			
		||||
stamp-vti
 | 
			
		||||
*.html *.pdf
 | 
			
		||||
@@ -1,49 +0,0 @@
 | 
			
		||||
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
 | 
			
		||||
	* about.texi: Very minor update.
 | 
			
		||||
 | 
			
		||||
1999-10-18  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* about.texi: Added a note about LibGTop and GNOME.
 | 
			
		||||
 | 
			
		||||
	* reference.texi (glibtop_proc_state): Fix description of the `state'
 | 
			
		||||
 	field for LibGTop 1.0.x.
 | 
			
		||||
 | 
			
		||||
1999-09-29  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* Makefile.am (MAKEINFO): Add `-I @libgtop_top_builddir@/doc' here.
 | 
			
		||||
 | 
			
		||||
1999-05-16  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* main.texi: This is now the main file which will @include all
 | 
			
		||||
	chapter files so we can use `texinfo-multiple-files-update'.
 | 
			
		||||
 | 
			
		||||
	* reference.texi: Added all missing sections with a "not yet written"
 | 
			
		||||
	notice.
 | 
			
		||||
 | 
			
		||||
1999-05-16  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* white-paper.texi: Initial version of the LibGTop White Paper.
 | 
			
		||||
 | 
			
		||||
	* Makefile.am: Create `auto-macros.texi' from `auto-macros.texi.in'
 | 
			
		||||
 	which will contain some `@set' commands for the LibGTop version etc.
 | 
			
		||||
 | 
			
		||||
	* auto-macros.texi.in: New file. This is a template for
 | 
			
		||||
	`auto-macros.texi' which will be automatically generated.
 | 
			
		||||
 | 
			
		||||
1999-05-09  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* about.texi: Split the `libgtop.texi' into one file pro chapter,
 | 
			
		||||
	this is the "About LibGTop".
 | 
			
		||||
 | 
			
		||||
	* reference.texi: The "LibGTop Reference Manual".
 | 
			
		||||
 | 
			
		||||
	* libgtop.texi: Initial version of the new LibGTop Manual.
 | 
			
		||||
 | 
			
		||||
@@ -1,45 +0,0 @@
 | 
			
		||||
info_TEXINFOS		= libgtop2.texi
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
EXTRA_DIST		= auto-macros.texi.in
 | 
			
		||||
 | 
			
		||||
auto-macros.texi: auto-macros.texi.in Makefile
 | 
			
		||||
## Use sed and then mv to avoid problems if the user interrupts.
 | 
			
		||||
	sed -e 's#\%LIBGTOP_LIBDIR\%#$(libdir)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_INCLUDEDIR\%#$(includedir)/libgtop-2.0#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_DATADIR\%#$(datadir)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_EXTRA_LIBS\%#$(LIBGTOP_EXTRA_LIBS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_LIBS\%#$(LIBGTOP_LIBS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_INCS\%#$(LIBGTOP_INCS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_NAMES_LIBS\%#$(LIBGTOP_NAMES_LIBS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_NAMES_INCS\%#$(LIBGTOP_NAMES_INCS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_GUILE_LIBS\%#$(LIBGTOP_GUILE_LIBS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_GUILE_INCS\%#$(LIBGTOP_GUILE_INCS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_GUILE_NAMES_LIBS\%#$(LIBGTOP_GUILE_NAMES_LIBS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_GUILE_NAMES_INCS\%#$(LIBGTOP_GUILE_NAMES_INCS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_BINDIR\%#$(LIBGTOP_BINDIR)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_SERVER\%#$(LIBGTOP_SERVER)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_MAJOR_VERSION\%#$(LIBGTOP_MAJOR_VERSION)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_MINOR_VERSION\%#$(LIBGTOP_MINOR_VERSION)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_MICRO_VERSION\%#$(LIBGTOP_MICRO_VERSION)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_VERSION\%#$(LIBGTOP_VERSION)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_VERSION_CODE\%#$(LIBGTOP_VERSION_CODE)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_SERVER_VERSION\%#$(LIBGTOP_SERVER_VERSION)#g' \
 | 
			
		||||
	  -e 's#\%libgtop_sysdeps_dir\%#$(libgtop_sysdeps_dir)#g' \
 | 
			
		||||
	  -e 's#\%libgtop_need_server\%#$(libgtop_need_server)#g' \
 | 
			
		||||
	  -e 's#\%libgtop_use_machine_h\%#$(libgtop_use_machine_h)#g' \
 | 
			
		||||
	  -e 's#\%libgtop_guile_found\%#$(libgtop_guile_found)#g' \
 | 
			
		||||
	  -e 's#\%libgtop_want_examples\%#$(libgtop_want_examples)#g' \
 | 
			
		||||
	      < $(srcdir)/auto-macros.texi.in > auto-macros.tmp
 | 
			
		||||
	echo '@c Set this if this is LibGTop 1.1.x' >> auto-macros.tmp
 | 
			
		||||
	if [ $(LIBGTOP_VERSION_CODE) -ge 1001000 ] ; then \
 | 
			
		||||
	  echo '@set LIBGTOP-1-1' >> auto-macros.tmp ; \
 | 
			
		||||
	else \
 | 
			
		||||
	  echo '@clear LIBGTOP-1-1' >> auto-macros.tmp ; \
 | 
			
		||||
	fi
 | 
			
		||||
	mv auto-macros.tmp auto-macros.texi
 | 
			
		||||
@@ -33,10 +33,10 @@ latest release tarballs from
 | 
			
		||||
@noindent
 | 
			
		||||
or any of its mirror sites.
 | 
			
		||||
 | 
			
		||||
The latest stable version of LibGTop is 1.0.12 which is also the one that comes
 | 
			
		||||
together with GNOME 1.0. It belongs to @code{LIBGTOP_STABLE_1_0} branch in CVS.
 | 
			
		||||
Actual development occurs in the @code{libgtop-GNOME-2-0-port} which is
 | 
			
		||||
currently versioned 1.90.0.
 | 
			
		||||
The latest stable version of LibGTop is 1.0.1 which is also the one that comes
 | 
			
		||||
together with GNOME 1.0. In CVS, there is a @code{LIBGTOP_STABLE_1_0} branch
 | 
			
		||||
which is rooted at the @code{LIBGTOP_1_0_1} tag while actual development occurs
 | 
			
		||||
in the @code{HEAD} which currently has version 1.1.0.
 | 
			
		||||
 | 
			
		||||
@node Supported Platforms, Mailing List, Availability, About
 | 
			
		||||
@section Supported Platforms
 | 
			
		||||
@@ -47,7 +47,7 @@ The stable branch currently supports the following platforms:
 | 
			
		||||
@item All versions of Linux
 | 
			
		||||
 | 
			
		||||
LibGTop was tested under Linux 2.0.x and 2.2.x on the ix86 and the alpha, but
 | 
			
		||||
it should also work without problems on SparcLinux or Linux 2.4.x.
 | 
			
		||||
it should also work without problems on SparcLinux.
 | 
			
		||||
 | 
			
		||||
Note: I'm speaking of the Linux kernel here, not the GNU/Linux operating system.
 | 
			
		||||
 | 
			
		||||
@@ -116,7 +116,6 @@ me a lot in the early beginning.
 | 
			
		||||
@item Timur Bakeyev for the BSDI port.
 | 
			
		||||
@item Drazen Kacar and the other people on the LibGTop development mailing
 | 
			
		||||
list for the Solaris port.
 | 
			
		||||
@item Kevin Vandersloot for the effort to port to GNOME 2.0.
 | 
			
		||||
@item All people sending me patches, having good ideas, ...
 | 
			
		||||
@item Everyone I have forgotten in this list ...
 | 
			
		||||
@end itemize
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +0,0 @@
 | 
			
		||||
@c LibGTop major, minor and micro version.
 | 
			
		||||
@set LIBGTOP_MAJOR_VERSION %LIBGTOP_MAJOR_VERSION%
 | 
			
		||||
@set LIBGTOP_MINOR_VERSION %LIBGTOP_MINOR_VERSION%
 | 
			
		||||
@set LIBGTOP_MICRO_VERSION %LIBGTOP_MICRO_VERSION%
 | 
			
		||||
 | 
			
		||||
@c LibGTop version and numerical version code ("1.234.567" -> 1234567).
 | 
			
		||||
@set LIBGTOP_VERSION "%LIBGTOP_VERSION%"
 | 
			
		||||
@set LIBGTOP_VERSION_CODE %LIBGTOP_VERSION_CODE%
 | 
			
		||||
 | 
			
		||||
@c LibGTop server version, increased each time the protocol changes.
 | 
			
		||||
@set LIBGTOP_SERVER_VERSION %LIBGTOP_SERVER_VERSION%
 | 
			
		||||
 | 
			
		||||
@@ -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,89 +0,0 @@
 | 
			
		||||
\input texinfo   @c -*-texinfo-*-
 | 
			
		||||
@c %**start of header
 | 
			
		||||
@setfilename libgtop2.info
 | 
			
		||||
@settitle LibGTop Reference Manual
 | 
			
		||||
@setchapternewpage odd
 | 
			
		||||
@c %**end of header
 | 
			
		||||
 | 
			
		||||
@include auto-macros.texi
 | 
			
		||||
@include version.texi
 | 
			
		||||
 | 
			
		||||
@ifinfo
 | 
			
		||||
This is the LibGTop Reference Manual version @value{VERSION}
 | 
			
		||||
(last modified @value{UPDATED}).
 | 
			
		||||
 | 
			
		||||
Copyright 1999 Free Software Foundation, Inc.
 | 
			
		||||
     
 | 
			
		||||
Permission is granted to make and distribute verbatim
 | 
			
		||||
copies of this manual provided the copyright notice and
 | 
			
		||||
this permission notice are preserved on all copies.
 | 
			
		||||
     
 | 
			
		||||
@ignore
 | 
			
		||||
Permission is granted to process this file through TeX
 | 
			
		||||
and print the results, provided the printed document
 | 
			
		||||
carries a copying permission notice identical to this
 | 
			
		||||
one except for the removal of this paragraph (this
 | 
			
		||||
paragraph not being relevant to the printed manual).
 | 
			
		||||
     
 | 
			
		||||
@end ignore
 | 
			
		||||
Permission is granted to copy and distribute modified
 | 
			
		||||
versions of this manual under the conditions for
 | 
			
		||||
verbatim copying, provided also that the sections
 | 
			
		||||
entitled ``Copying'' and ``GNU General Public License''
 | 
			
		||||
are included exactly as in the original, and provided
 | 
			
		||||
that the entire resulting derived work is distributed
 | 
			
		||||
under the terms of a permission notice identical to this
 | 
			
		||||
one.
 | 
			
		||||
     
 | 
			
		||||
Permission is granted to copy and distribute
 | 
			
		||||
translations of this manual into another language,
 | 
			
		||||
under the above conditions for modified versions,
 | 
			
		||||
except that this permission notice may be stated in a
 | 
			
		||||
translation approved by the Free Software Foundation.
 | 
			
		||||
 | 
			
		||||
@format
 | 
			
		||||
@dircategory Libraries:
 | 
			
		||||
@direntry
 | 
			
		||||
* LibGTop2: (libgtop2).			Library to get system specific data
 | 
			
		||||
					such as cpu and memory usage, active
 | 
			
		||||
					processes
 | 
			
		||||
@end direntry
 | 
			
		||||
@end format
 | 
			
		||||
 | 
			
		||||
@end ifinfo
 | 
			
		||||
 | 
			
		||||
@titlepage
 | 
			
		||||
@title LibGTop Reference Manual
 | 
			
		||||
@subtitle Version @value{VERSION} - @value{UPDATED}
 | 
			
		||||
@author Martin Baulig
 | 
			
		||||
 | 
			
		||||
@page
 | 
			
		||||
@vskip 0pt plus 1filll
 | 
			
		||||
Copyright @copyright{} 1999 Free Software Foundation, Inc.
 | 
			
		||||
 | 
			
		||||
Permission is granted to make and distribute verbatim
 | 
			
		||||
copies of this manual provided the copyright notice and
 | 
			
		||||
this permission notice are preserved on all copies.
 | 
			
		||||
     
 | 
			
		||||
Permission is granted to copy and distribute modified
 | 
			
		||||
versions of this manual under the conditions for
 | 
			
		||||
verbatim copying, provided also that the sections
 | 
			
		||||
entitled ``Copying'' and ``GNU General Public License''
 | 
			
		||||
are included exactly as in the original, and provided
 | 
			
		||||
that the entire resulting derived work is distributed
 | 
			
		||||
under the terms of a permission notice identical to this
 | 
			
		||||
one.
 | 
			
		||||
     
 | 
			
		||||
Permission is granted to copy and distribute
 | 
			
		||||
translations of this manual into another language,
 | 
			
		||||
under the above conditions for modified versions,
 | 
			
		||||
except that this permission notice may be stated in a
 | 
			
		||||
translation approved by the Free Software Foundation.
 | 
			
		||||
@end titlepage
 | 
			
		||||
 | 
			
		||||
@contents
 | 
			
		||||
 | 
			
		||||
@include main.texi
 | 
			
		||||
 | 
			
		||||
@bye
 | 
			
		||||
 | 
			
		||||
@@ -1,90 +0,0 @@
 | 
			
		||||
@node White Paper, Reference Manual, About, Top
 | 
			
		||||
@chapter LibGTop White Paper
 | 
			
		||||
 | 
			
		||||
@menu
 | 
			
		||||
* Introduction::                Introduction
 | 
			
		||||
* Overview::                    Overview
 | 
			
		||||
@end menu
 | 
			
		||||
 | 
			
		||||
@node Introduction, Overview, White Paper, White Paper
 | 
			
		||||
@section Introduction
 | 
			
		||||
 | 
			
		||||
Many modern UNIX systems like Solaris, BSD or Digitial Unix only allow
 | 
			
		||||
priviledged processes to read information like CPU and Memory Usage or
 | 
			
		||||
information about running processes.
 | 
			
		||||
 | 
			
		||||
@itemize @bullet
 | 
			
		||||
@item
 | 
			
		||||
BSD, for instance, doesn't have any other way to get those data than reading
 | 
			
		||||
directly from @file{/dev/kmem} and you need to be in the @code{kmem} group to
 | 
			
		||||
be able to read this.
 | 
			
		||||
 | 
			
		||||
@item
 | 
			
		||||
Other systems, like Digital Unix, allow all users to get things like CPU and
 | 
			
		||||
Memory statistics, but only root may read information about any process other
 | 
			
		||||
than the current one (you may not even get information about your own processes
 | 
			
		||||
if you're not root).
 | 
			
		||||
 | 
			
		||||
@item
 | 
			
		||||
Linux has a very nice @file{/proc} filesystem, but reading and parsing
 | 
			
		||||
@file{/proc} is very slow and inefficient.
 | 
			
		||||
 | 
			
		||||
@item
 | 
			
		||||
Solaris is a bit better, but you still need to be in the @code{sys} group or
 | 
			
		||||
even root to get some data.
 | 
			
		||||
@end itemize
 | 
			
		||||
 | 
			
		||||
Because of this system utilities like @code{ps}, @code{uptime} or @code{top}
 | 
			
		||||
often are setgid kmem or setuid root. Usually, they're also very specific to
 | 
			
		||||
the system they're written for and not easily portable to other systems without
 | 
			
		||||
a lot of work.
 | 
			
		||||
 | 
			
		||||
This, of cause, becomes a problem for graphical tools like @code{gtop} - making
 | 
			
		||||
a GTK+ program setgid or even setuid would be a security hole as big as you can
 | 
			
		||||
drive the entire X11 source code through. For the GNOME project, we also needed
 | 
			
		||||
some kind of library which provides all the required information in a portable
 | 
			
		||||
since there's more than just one single program that wants to use them - for
 | 
			
		||||
instance @code{gtop} and the @code{multiload}, @code{cpumemusage} and
 | 
			
		||||
@code{netload} panel applets.
 | 
			
		||||
 | 
			
		||||
@node Overview,  , Introduction, White Paper
 | 
			
		||||
@section Overview
 | 
			
		||||
 | 
			
		||||
This section should give you a short overview on how LibGTop was developed, which
 | 
			
		||||
things needed to be considered and how it works.
 | 
			
		||||
 | 
			
		||||
@menu
 | 
			
		||||
* Interface Design::            Things that need to be considered
 | 
			
		||||
* Server Implementation::       The LibGTop "server"
 | 
			
		||||
@end menu
 | 
			
		||||
 | 
			
		||||
@node Interface Design, Server Implementation, Overview, Overview
 | 
			
		||||
@subsection Interface Design
 | 
			
		||||
 | 
			
		||||
At the very beginning, it was necessary to collect all the data the library part
 | 
			
		||||
should provide and put them into some C structures. This was not that easiy as it
 | 
			
		||||
might sound since LibGTop should be portable to any modern UNIX system with a common
 | 
			
		||||
library part on all those systems, but the data that should be returned vary from
 | 
			
		||||
system to system. For instance some systems support shared memory, but some others
 | 
			
		||||
may not.
 | 
			
		||||
 | 
			
		||||
The header files where we define these C structures (which are system-independent) are
 | 
			
		||||
shared between client and server. This way we can call the system dependent code
 | 
			
		||||
directly where we do not need any special privileges to do so.
 | 
			
		||||
 | 
			
		||||
All of those structures contain a @code{flags} member which is interpreted as a bit
 | 
			
		||||
mask and tells the caller of the library functions which of the fields in the returned
 | 
			
		||||
structure are valid and which are not.
 | 
			
		||||
 | 
			
		||||
@node Server Implementation,  , Interface Design, Overview
 | 
			
		||||
@subsection Server Implementation
 | 
			
		||||
 | 
			
		||||
The LibGTop @dfn{server} is a setgid/setuid binary which contains all the system
 | 
			
		||||
dependent code which needs special privileges. It is only build if it's required
 | 
			
		||||
on the current system (for instance, the Linux kernel provides all the required
 | 
			
		||||
data via its @file{/proc} filesystem so we do not need the server at all) and it
 | 
			
		||||
only contains the @dfn{features} which need privileges.
 | 
			
		||||
 | 
			
		||||
Whenever we do not need any privileges to get all the data for some of the requested
 | 
			
		||||
structures (here called @dfn{features}) the library calls the sysdeps code directly
 | 
			
		||||
rather than using the server.
 | 
			
		||||
@@ -1,2 +0,0 @@
 | 
			
		||||
Makefile.in
 | 
			
		||||
Makefile
 | 
			
		||||
@@ -1,9 +0,0 @@
 | 
			
		||||
backenddir	= @LIBGTOP_BACKEND_DIR@
 | 
			
		||||
 | 
			
		||||
backend_DATA	= \
 | 
			
		||||
	libgtop-backends.dtd	\
 | 
			
		||||
	libgtop-backend-info.dtd
 | 
			
		||||
 | 
			
		||||
EXTRA_DIST	= |
 | 
			
		||||
	$(backend_DATA)
 | 
			
		||||
 | 
			
		||||
@@ -1,23 +0,0 @@
 | 
			
		||||
<!ELEMENT BackendInfo (name,description?,comments?,authors,legalnotice)>
 | 
			
		||||
<!ELEMENT name (short_name,long_name?)>
 | 
			
		||||
<!ELEMENT short_name (#PCDATA)>
 | 
			
		||||
<!ELEMENT long_name (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT description (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT authors (author)+>
 | 
			
		||||
<!ELEMENT author (author_name,author_email?)>
 | 
			
		||||
<!ELEMENT author_name (#PCDATA)>
 | 
			
		||||
<!ELEMENT author_email (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT legalnotice (license,copyright?)>
 | 
			
		||||
<!ELEMENT license (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT copyright (holder)+>
 | 
			
		||||
<!ELEMENT holder (holder_year?,holder_name,holder_email?)>
 | 
			
		||||
<!ELEMENT holder_year (#PCDATA)>
 | 
			
		||||
<!ELEMENT holder_name (#PCDATA)>
 | 
			
		||||
<!ELEMENT holder_email (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT comments (comment)+>
 | 
			
		||||
<!ELEMENT comment (#PCDATA)>
 | 
			
		||||
@@ -1,11 +0,0 @@
 | 
			
		||||
<!ELEMENT Backends (Backend)+>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT Backend (Name,Location)>
 | 
			
		||||
<!ELEMENT Name (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT Location (LibtoolName?,ShlibName,ExtraLibs?)>
 | 
			
		||||
<!ELEMENT LibtoolName (#PCDATA)>
 | 
			
		||||
<!ELEMENT ShlibName (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT ExtraLibs (ExtraLib)+>
 | 
			
		||||
<!ELEMENT ExtraLib (LibtoolName?,ShlibName)>
 | 
			
		||||
@@ -1,11 +1,3 @@
 | 
			
		||||
2001-01-14  Abel Cheung  <maddog@linux.org.hk>
 | 
			
		||||
 | 
			
		||||
	* \*.c: bindtextdomain and textdomain uses GETTEXT_PACKAGE.
 | 
			
		||||
 | 
			
		||||
	* Makefile.am, first.c, second.c, sysdeps.c: Make them at least
 | 
			
		||||
	compile for now, by disabling chunks which should belong to
 | 
			
		||||
	HEAD branch.
 | 
			
		||||
 | 
			
		||||
1999-05-28  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* first.c, second.c, sysdeps.c: Use LibGTop version conditionals
 | 
			
		||||
 
 | 
			
		||||
@@ -22,9 +22,9 @@ EXTRA_PROGRAMS		= first_static second_static \
 | 
			
		||||
			  timings_static
 | 
			
		||||
 | 
			
		||||
first_SOURCES		= first.c
 | 
			
		||||
first_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
 | 
			
		||||
first_LDADD		= $(top_builddir)/lib/libgtop.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
 | 
			
		||||
			  @LIBSUPPORT@ @INTLLIBS@
 | 
			
		||||
 | 
			
		||||
first_static_SOURCES	= $(first_SOURCES)
 | 
			
		||||
@@ -32,9 +32,9 @@ first_static_LDADD	= $(first_LDADD)
 | 
			
		||||
first_static_LDFLAGS	= -static
 | 
			
		||||
 | 
			
		||||
second_SOURCES		= second.c
 | 
			
		||||
second_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
 | 
			
		||||
second_LDADD		= $(top_builddir)/lib/libgtop.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
 | 
			
		||||
			  @LIBSUPPORT@ @INTLLIBS@
 | 
			
		||||
 | 
			
		||||
second_static_SOURCES	= $(second_SOURCES)
 | 
			
		||||
@@ -42,9 +42,9 @@ second_static_LDADD	= $(second_LDADD)
 | 
			
		||||
second_static_LDFLAGS	= -static
 | 
			
		||||
 | 
			
		||||
procmap_SOURCES		= procmap.c
 | 
			
		||||
procmap_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
 | 
			
		||||
procmap_LDADD		= $(top_builddir)/lib/libgtop.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
 | 
			
		||||
			  @LIBSUPPORT@ @INTLLIBS@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -54,9 +54,9 @@ procmap_static_LDADD	= $(procmap_LDADD)
 | 
			
		||||
procmap_static_LDFLAGS	= -static
 | 
			
		||||
 | 
			
		||||
netload_SOURCES		= netload.c
 | 
			
		||||
netload_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
 | 
			
		||||
netload_LDADD		= $(top_builddir)/lib/libgtop.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
 | 
			
		||||
			  @LIBSUPPORT@ @INTLLIBS@
 | 
			
		||||
 | 
			
		||||
netload_static_SOURCES	= $(netload_SOURCES)
 | 
			
		||||
@@ -64,24 +64,24 @@ netload_static_LDADD	= $(netload_LDADD)
 | 
			
		||||
netload_static_LDFLAGS	= -static
 | 
			
		||||
 | 
			
		||||
sysdeps_SOURCES		= sysdeps.c
 | 
			
		||||
sysdeps_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
 | 
			
		||||
sysdeps_LDADD		= $(top_builddir)/lib/libgtop.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
 | 
			
		||||
			  @LIBSUPPORT@ @INTLLIBS@
 | 
			
		||||
 | 
			
		||||
sysdeps_static_SOURCES	= $(sysdeps_SOURCES)
 | 
			
		||||
sysdeps_static_LDADD	= $(sysdeps_LDADD)
 | 
			
		||||
sysdeps_static_LDFLAGS	= -static
 | 
			
		||||
 | 
			
		||||
third_guile_names_LIBS	= $(top_builddir)/sysdeps/guile/names/libgtop_guile_names-2.0.la
 | 
			
		||||
third_names_LIBS	= $(top_builddir)/sysdeps/names/libgtop_names-2.0.la
 | 
			
		||||
third_guile_names_LIBS	= $(top_builddir)/sysdeps/guile/names/libgtop_guile_names.la
 | 
			
		||||
third_names_LIBS	= $(top_builddir)/sysdeps/names/libgtop_names.la
 | 
			
		||||
 | 
			
		||||
third_SOURCES		= third.c
 | 
			
		||||
third_LDADD		= $(top_builddir)/sysdeps/guile/libgtop_guile-2.0.la \
 | 
			
		||||
third_LDADD		= $(top_builddir)/sysdeps/guile/libgtop_guile.la \
 | 
			
		||||
			  $(third_guile_names_LIBS) $(third_names_LIBS) \
 | 
			
		||||
			  $(top_builddir)/lib/libgtop-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
 | 
			
		||||
			  $(top_builddir)/lib/libgtop.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
 | 
			
		||||
			  @GUILE_LIBS@ @LIBSUPPORT@ @INTLLIBS@
 | 
			
		||||
 | 
			
		||||
third_static_SOURCES	= $(third_SOURCES)
 | 
			
		||||
@@ -89,9 +89,9 @@ third_static_LDADD	= $(third_LDADD)
 | 
			
		||||
third_static_LDFLAGS	= -static
 | 
			
		||||
 | 
			
		||||
mountlist_SOURCES	= mountlist.c
 | 
			
		||||
mountlist_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
 | 
			
		||||
mountlist_LDADD		= $(top_builddir)/lib/libgtop.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
 | 
			
		||||
			  @LIBSUPPORT@ @INTLLIBS@
 | 
			
		||||
 | 
			
		||||
mountlist_static_SOURCES= $(mountlist_SOURCES)
 | 
			
		||||
@@ -100,9 +100,9 @@ mountlist_static_LDFLAGS= -static
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
smp_SOURCES		= smp.c
 | 
			
		||||
smp_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
 | 
			
		||||
smp_LDADD		= $(top_builddir)/lib/libgtop.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
 | 
			
		||||
			  @LIBSUPPORT@ @INTLLIBS@
 | 
			
		||||
 | 
			
		||||
smp_static_SOURCES	= $(smp_SOURCES)
 | 
			
		||||
@@ -110,9 +110,9 @@ smp_static_LDADD	= $(smp_LDADD)
 | 
			
		||||
smp_static_LDFLAGS	= -static
 | 
			
		||||
 | 
			
		||||
timings_SOURCES		= timings.c
 | 
			
		||||
timings_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
 | 
			
		||||
timings_LDADD		= $(top_builddir)/lib/libgtop.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/common/libgtop_common.la \
 | 
			
		||||
			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
 | 
			
		||||
			  @LIBSUPPORT@ @INTLLIBS@
 | 
			
		||||
 | 
			
		||||
timings_static_SOURCES	= $(timings_SOURCES)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										242
									
								
								examples/first.c
									
									
									
									
									
								
							
							
						
						
									
										242
									
								
								examples/first.c
									
									
									
									
									
								
							@@ -52,8 +52,8 @@ main (int argc, char *argv [])
 | 
			
		||||
	count = PROFILE_COUNT;
 | 
			
		||||
 | 
			
		||||
	setlocale (LC_ALL, "");
 | 
			
		||||
	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (GETTEXT_PACKAGE);
 | 
			
		||||
	bindtextdomain (PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (PACKAGE);
 | 
			
		||||
	
 | 
			
		||||
	glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
 | 
			
		||||
 | 
			
		||||
@@ -116,9 +116,16 @@ main (int argc, char *argv [])
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_uptime (&data.uptime);
 | 
			
		||||
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000
 | 
			
		||||
	printf ("Uptime       (0x%08lx): %f, %f, %lu\n",
 | 
			
		||||
		(unsigned long) data.uptime.flags,
 | 
			
		||||
		data.uptime.uptime, data.uptime.idletime,
 | 
			
		||||
		(unsigned long) data.uptime.boot_time);
 | 
			
		||||
#else
 | 
			
		||||
	printf ("Uptime       (0x%08lx): %f, %f\n",
 | 
			
		||||
		(unsigned long) data.uptime.flags,
 | 
			
		||||
		data.uptime.uptime, data.uptime.idletime);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_loadavg (&data.loadavg);
 | 
			
		||||
@@ -242,15 +249,52 @@ main (int argc, char *argv [])
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_state (&data.proc_state, pid);
 | 
			
		||||
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000
 | 
			
		||||
	printf ("Proc_State   PID  %5d (0x%08lx): '%s', %u - "
 | 
			
		||||
		"%u, %u, %u, %u - %u, %u, %u\n", (int) pid,
 | 
			
		||||
		(unsigned long) data.proc_state.flags,
 | 
			
		||||
		data.proc_state.cmd, data.proc_state.state,
 | 
			
		||||
		data.proc_state.uid, data.proc_state.gid,
 | 
			
		||||
		data.proc_state.ruid, data.proc_state.rgid,
 | 
			
		||||
		data.proc_state.has_cpu, data.proc_state.processor,
 | 
			
		||||
		data.proc_state.last_processor);
 | 
			
		||||
#else
 | 
			
		||||
	printf ("Proc_State   PID  %5d (0x%08lx): '%s', %c, %lu, %lu\n",
 | 
			
		||||
		(int) pid, (unsigned long) data.proc_state.flags,
 | 
			
		||||
		data.proc_state.cmd, data.proc_state.state,
 | 
			
		||||
		(unsigned long) data.proc_state.uid,
 | 
			
		||||
		(unsigned long) data.proc_state.gid);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_uid (&data.proc_uid, pid);
 | 
			
		||||
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000
 | 
			
		||||
	printf ("Proc_Uid     PID  %5d (0x%08lx): "
 | 
			
		||||
		"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d - %d",
 | 
			
		||||
		(int) pid, (unsigned long) data.proc_uid.flags,
 | 
			
		||||
		data.proc_uid.uid, data.proc_uid.euid,
 | 
			
		||||
		data.proc_uid.gid, data.proc_uid.egid,
 | 
			
		||||
		data.proc_uid.suid, data.proc_uid.sgid,
 | 
			
		||||
		data.proc_uid.fsuid, data.proc_uid.fsgid,
 | 
			
		||||
		data.proc_uid.pid, data.proc_uid.ppid,
 | 
			
		||||
		data.proc_uid.pgrp, data.proc_uid.session,
 | 
			
		||||
		data.proc_uid.tty, data.proc_uid.tpgid,
 | 
			
		||||
		data.proc_uid.priority, data.proc_uid.nice,
 | 
			
		||||
		data.proc_uid.ngroups);
 | 
			
		||||
 | 
			
		||||
	if (data.proc_uid.ngroups) {
 | 
			
		||||
		for (i = 0; i < data.proc_uid.ngroups; i++) {
 | 
			
		||||
			if (i)
 | 
			
		||||
				printf (" %d", data.proc_uid.groups [i]);
 | 
			
		||||
			else
 | 
			
		||||
				printf (" (%d", data.proc_uid.groups [i]);
 | 
			
		||||
		}
 | 
			
		||||
		printf (")");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	printf ("\n");
 | 
			
		||||
#else
 | 
			
		||||
	printf ("Proc_Uid     PID  %5d (0x%08lx): "
 | 
			
		||||
		"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) pid,
 | 
			
		||||
		(unsigned long) data.proc_uid.flags,
 | 
			
		||||
@@ -260,6 +304,7 @@ main (int argc, char *argv [])
 | 
			
		||||
		data.proc_uid.pgrp, data.proc_uid.session,
 | 
			
		||||
		data.proc_uid.tty, data.proc_uid.tpgid,
 | 
			
		||||
		data.proc_uid.priority, data.proc_uid.nice);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_mem (&data.proc_mem, pid);
 | 
			
		||||
@@ -277,6 +322,30 @@ main (int argc, char *argv [])
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_segment (&data.proc_segment, pid);
 | 
			
		||||
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000
 | 
			
		||||
	printf ("Proc_Segment PID  %5d (0x%08lx): "
 | 
			
		||||
		"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx "
 | 
			
		||||
		"0x%lx 0x%lx 0x%lx 0x%lx 0x%lx "
 | 
			
		||||
		"0x%lx 0x%lx 0x%lx 0x%lx\n", (int) pid,
 | 
			
		||||
		(unsigned long) data.proc_segment.flags,
 | 
			
		||||
		(unsigned long) data.proc_segment.text_rss,
 | 
			
		||||
		(unsigned long) data.proc_segment.shlib_rss,
 | 
			
		||||
		(unsigned long) data.proc_segment.data_rss,
 | 
			
		||||
		(unsigned long) data.proc_segment.stack_rss,
 | 
			
		||||
		(unsigned long) data.proc_segment.dirty_size,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_code,
 | 
			
		||||
		(unsigned long) data.proc_segment.end_code,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_data,
 | 
			
		||||
		(unsigned long) data.proc_segment.end_data,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_brk,
 | 
			
		||||
		(unsigned long) data.proc_segment.end_brk,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_stack,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_mmap,
 | 
			
		||||
		(unsigned long) data.proc_segment.arg_start,
 | 
			
		||||
		(unsigned long) data.proc_segment.arg_end,
 | 
			
		||||
		(unsigned long) data.proc_segment.env_start,
 | 
			
		||||
		(unsigned long) data.proc_segment.env_end);
 | 
			
		||||
#else
 | 
			
		||||
	printf ("Proc_Segment PID  %5d (0x%08lx): "
 | 
			
		||||
		"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
 | 
			
		||||
		(unsigned long) data.proc_segment.flags,
 | 
			
		||||
@@ -288,6 +357,7 @@ main (int argc, char *argv [])
 | 
			
		||||
		(unsigned long) data.proc_segment.start_code,
 | 
			
		||||
		(unsigned long) data.proc_segment.end_code,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_stack);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_time (&data.proc_time, pid);
 | 
			
		||||
@@ -308,6 +378,19 @@ main (int argc, char *argv [])
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_signal (&data.proc_signal, pid);
 | 
			
		||||
	
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000
 | 
			
		||||
	printf ("Proc_Signal  PID  %5d (0x%08lx): "
 | 
			
		||||
		"%lx %lx %lx %lx %lx %lx %lx %lx\n", (int) pid,
 | 
			
		||||
		(unsigned long) data.proc_signal.flags,
 | 
			
		||||
		(unsigned long) data.proc_signal.signal [0],
 | 
			
		||||
		(unsigned long) data.proc_signal.signal [1],
 | 
			
		||||
		(unsigned long) data.proc_signal.blocked [0],
 | 
			
		||||
		(unsigned long) data.proc_signal.blocked [1],
 | 
			
		||||
		(unsigned long) data.proc_signal.sigignore [0],
 | 
			
		||||
		(unsigned long) data.proc_signal.sigignore [1],
 | 
			
		||||
		(unsigned long) data.proc_signal.sigcatch [0],
 | 
			
		||||
		(unsigned long) data.proc_signal.sigcatch [1]);
 | 
			
		||||
#else
 | 
			
		||||
	printf ("Proc_Signal  PID  %5d (0x%08lx): "
 | 
			
		||||
		"%lu %lu %lu %lu\n", (int) pid,
 | 
			
		||||
		(unsigned long) data.proc_signal.flags,
 | 
			
		||||
@@ -315,6 +398,7 @@ main (int argc, char *argv [])
 | 
			
		||||
		(unsigned long) data.proc_signal.blocked,
 | 
			
		||||
		(unsigned long) data.proc_signal.sigignore,
 | 
			
		||||
		(unsigned long) data.proc_signal.sigcatch);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_kernel (&data.proc_kernel, pid);
 | 
			
		||||
@@ -353,15 +437,52 @@ main (int argc, char *argv [])
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_state (&data.proc_state, ppid);
 | 
			
		||||
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000
 | 
			
		||||
	printf ("Proc_State   PPID %5d (0x%08lx): '%s', %u - "
 | 
			
		||||
		"%u, %u, %u, %u - %u, %u, %u\n", (int) ppid,
 | 
			
		||||
		(unsigned long) data.proc_state.flags,
 | 
			
		||||
		data.proc_state.cmd, data.proc_state.state,
 | 
			
		||||
		data.proc_state.uid, data.proc_state.gid,
 | 
			
		||||
		data.proc_state.ruid, data.proc_state.rgid,
 | 
			
		||||
		data.proc_state.has_cpu, data.proc_state.processor,
 | 
			
		||||
		data.proc_state.last_processor);
 | 
			
		||||
#else
 | 
			
		||||
	printf ("Proc_State   PPID %5d (0x%08lx): '%s', %c, %lu, %lu\n",
 | 
			
		||||
		(int) ppid, (unsigned long) data.proc_state.flags,
 | 
			
		||||
		data.proc_state.cmd, data.proc_state.state,
 | 
			
		||||
		(unsigned long) data.proc_state.uid,
 | 
			
		||||
		(unsigned long) data.proc_state.gid);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_uid (&data.proc_uid, ppid);
 | 
			
		||||
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000
 | 
			
		||||
	printf ("Proc_Uid     PPID %5d (0x%08lx): "
 | 
			
		||||
		"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d - %d",
 | 
			
		||||
		(int) ppid, (unsigned long) data.proc_uid.flags,
 | 
			
		||||
		data.proc_uid.uid, data.proc_uid.euid,
 | 
			
		||||
		data.proc_uid.gid, data.proc_uid.egid,
 | 
			
		||||
		data.proc_uid.suid, data.proc_uid.sgid,
 | 
			
		||||
		data.proc_uid.fsuid, data.proc_uid.fsgid,
 | 
			
		||||
		data.proc_uid.pid, data.proc_uid.ppid,
 | 
			
		||||
		data.proc_uid.pgrp, data.proc_uid.session,
 | 
			
		||||
		data.proc_uid.tty, data.proc_uid.tpgid,
 | 
			
		||||
		data.proc_uid.priority, data.proc_uid.nice,
 | 
			
		||||
		data.proc_uid.ngroups);
 | 
			
		||||
 | 
			
		||||
	if (data.proc_uid.ngroups) {
 | 
			
		||||
		for (i = 0; i < data.proc_uid.ngroups; i++) {
 | 
			
		||||
			if (i)
 | 
			
		||||
				printf (" %d", data.proc_uid.groups [i]);
 | 
			
		||||
			else
 | 
			
		||||
				printf (" (%d", data.proc_uid.groups [i]);
 | 
			
		||||
		}
 | 
			
		||||
		printf (")");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	printf ("\n");
 | 
			
		||||
#else
 | 
			
		||||
	printf ("Proc_Uid     PPID %5d (0x%08lx): "
 | 
			
		||||
		"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) ppid,
 | 
			
		||||
		(unsigned long) data.proc_uid.flags,
 | 
			
		||||
@@ -371,6 +492,7 @@ main (int argc, char *argv [])
 | 
			
		||||
		data.proc_uid.pgrp, data.proc_uid.session,
 | 
			
		||||
		data.proc_uid.tty, data.proc_uid.tpgid,
 | 
			
		||||
		data.proc_uid.priority, data.proc_uid.nice);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_mem (&data.proc_mem, ppid);
 | 
			
		||||
@@ -388,6 +510,30 @@ main (int argc, char *argv [])
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_segment (&data.proc_segment, ppid);
 | 
			
		||||
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000
 | 
			
		||||
	printf ("Proc_Segment PPID %5d (0x%08lx): "
 | 
			
		||||
		"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx "
 | 
			
		||||
		"0x%lx 0x%lx 0x%lx 0x%lx 0x%lx "
 | 
			
		||||
		"0x%lx 0x%lx 0x%lx 0x%lx\n", (int) ppid,
 | 
			
		||||
		(unsigned long) data.proc_segment.flags,
 | 
			
		||||
		(unsigned long) data.proc_segment.text_rss,
 | 
			
		||||
		(unsigned long) data.proc_segment.shlib_rss,
 | 
			
		||||
		(unsigned long) data.proc_segment.data_rss,
 | 
			
		||||
		(unsigned long) data.proc_segment.stack_rss,
 | 
			
		||||
		(unsigned long) data.proc_segment.dirty_size,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_code,
 | 
			
		||||
		(unsigned long) data.proc_segment.end_code,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_data,
 | 
			
		||||
		(unsigned long) data.proc_segment.end_data,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_brk,
 | 
			
		||||
		(unsigned long) data.proc_segment.end_brk,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_stack,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_mmap,
 | 
			
		||||
		(unsigned long) data.proc_segment.arg_start,
 | 
			
		||||
		(unsigned long) data.proc_segment.arg_end,
 | 
			
		||||
		(unsigned long) data.proc_segment.env_start,
 | 
			
		||||
		(unsigned long) data.proc_segment.env_end);
 | 
			
		||||
#else
 | 
			
		||||
	printf ("Proc_Segment PPID %5d (0x%08lx): "
 | 
			
		||||
		"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) ppid,
 | 
			
		||||
		(unsigned long) data.proc_segment.flags,
 | 
			
		||||
@@ -399,6 +545,7 @@ main (int argc, char *argv [])
 | 
			
		||||
		(unsigned long) data.proc_segment.start_code,
 | 
			
		||||
		(unsigned long) data.proc_segment.end_code,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_stack);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_time (&data.proc_time, ppid);
 | 
			
		||||
@@ -419,12 +566,26 @@ main (int argc, char *argv [])
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_signal (&data.proc_signal, ppid);
 | 
			
		||||
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000
 | 
			
		||||
	printf ("Proc_Signal  PPID %5d (0x%08lx): "
 | 
			
		||||
		"%lx %lx %lx %lx %lx %lx %lx %lx\n",
 | 
			
		||||
		(int) ppid, (unsigned long) data.proc_signal.flags,
 | 
			
		||||
		(unsigned long) data.proc_signal.signal [0],
 | 
			
		||||
		(unsigned long) data.proc_signal.signal [1],
 | 
			
		||||
		(unsigned long) data.proc_signal.blocked [0],
 | 
			
		||||
		(unsigned long) data.proc_signal.blocked [1],
 | 
			
		||||
		(unsigned long) data.proc_signal.sigignore [0],
 | 
			
		||||
		(unsigned long) data.proc_signal.sigignore [1],
 | 
			
		||||
		(unsigned long) data.proc_signal.sigcatch [0],
 | 
			
		||||
		(unsigned long) data.proc_signal.sigcatch [1]);
 | 
			
		||||
#else
 | 
			
		||||
	printf ("Proc_Signal  PPID %5d (0x%08lx): %lu %lu %lu %lu\n",
 | 
			
		||||
		(int) ppid, (unsigned long) data.proc_signal.flags,
 | 
			
		||||
		(unsigned long) data.proc_signal.signal,
 | 
			
		||||
		(unsigned long) data.proc_signal.blocked,
 | 
			
		||||
		(unsigned long) data.proc_signal.sigignore,
 | 
			
		||||
		(unsigned long) data.proc_signal.sigcatch);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_kernel (&data.proc_kernel, ppid);
 | 
			
		||||
@@ -463,15 +624,52 @@ main (int argc, char *argv [])
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_state (&data.proc_state, 1);
 | 
			
		||||
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000
 | 
			
		||||
	printf ("Proc_State   INIT %5d (0x%08lx): '%s', %u - "
 | 
			
		||||
		"%u, %u, %u, %u - %u, %u, %u\n", 1,
 | 
			
		||||
		(unsigned long) data.proc_state.flags,
 | 
			
		||||
		data.proc_state.cmd, data.proc_state.state,
 | 
			
		||||
		data.proc_state.uid, data.proc_state.gid,
 | 
			
		||||
		data.proc_state.ruid, data.proc_state.rgid,
 | 
			
		||||
		data.proc_state.has_cpu, data.proc_state.processor,
 | 
			
		||||
		data.proc_state.last_processor);
 | 
			
		||||
#else
 | 
			
		||||
	printf ("Proc_State   INIT %5d (0x%08lx): '%s', %c, %lu, %lu\n", 1,
 | 
			
		||||
		(unsigned long) data.proc_state.flags,
 | 
			
		||||
		data.proc_state.cmd, data.proc_state.state,
 | 
			
		||||
		(unsigned long) data.proc_state.uid,
 | 
			
		||||
		(unsigned long) data.proc_state.gid);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_uid (&data.proc_uid, 1);
 | 
			
		||||
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000
 | 
			
		||||
	printf ("Proc_Uid     INIT %5d (0x%08lx): "
 | 
			
		||||
		"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d - %d", 1,
 | 
			
		||||
		(unsigned long) data.proc_uid.flags,
 | 
			
		||||
		data.proc_uid.uid, data.proc_uid.euid,
 | 
			
		||||
		data.proc_uid.gid, data.proc_uid.egid,
 | 
			
		||||
		data.proc_uid.suid, data.proc_uid.sgid,
 | 
			
		||||
		data.proc_uid.fsuid, data.proc_uid.fsgid,
 | 
			
		||||
		data.proc_uid.pid, data.proc_uid.ppid,
 | 
			
		||||
		data.proc_uid.pgrp, data.proc_uid.session,
 | 
			
		||||
		data.proc_uid.tty, data.proc_uid.tpgid,
 | 
			
		||||
		data.proc_uid.priority, data.proc_uid.nice,
 | 
			
		||||
		data.proc_uid.ngroups);
 | 
			
		||||
 | 
			
		||||
	if (data.proc_uid.ngroups) {
 | 
			
		||||
		for (i = 0; i < data.proc_uid.ngroups; i++) {
 | 
			
		||||
			if (i)
 | 
			
		||||
				printf (" %d", data.proc_uid.groups [i]);
 | 
			
		||||
			else
 | 
			
		||||
				printf (" (%d", data.proc_uid.groups [i]);
 | 
			
		||||
		}
 | 
			
		||||
		printf (")");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	printf ("\n");
 | 
			
		||||
#else
 | 
			
		||||
	printf ("Proc_Uid     INIT %5d (0x%08lx): "
 | 
			
		||||
		"%d %d %d %d %d %d %d %d %d %d %d %d\n", 1,
 | 
			
		||||
		(unsigned long) data.proc_uid.flags,
 | 
			
		||||
@@ -481,6 +679,7 @@ main (int argc, char *argv [])
 | 
			
		||||
		data.proc_uid.pgrp, data.proc_uid.session,
 | 
			
		||||
		data.proc_uid.tty, data.proc_uid.tpgid,
 | 
			
		||||
		data.proc_uid.priority, data.proc_uid.nice);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_mem (&data.proc_mem, 1);
 | 
			
		||||
@@ -498,6 +697,30 @@ main (int argc, char *argv [])
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_segment (&data.proc_segment, 1);
 | 
			
		||||
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000
 | 
			
		||||
	printf ("Proc_Segment INIT %5d (0x%08lx): "
 | 
			
		||||
		"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx "
 | 
			
		||||
		"0x%lx 0x%lx 0x%lx 0x%lx 0x%lx "
 | 
			
		||||
		"0x%lx 0x%lx 0x%lx 0x%lx\n", 1,
 | 
			
		||||
		(unsigned long) data.proc_segment.flags,
 | 
			
		||||
		(unsigned long) data.proc_segment.text_rss,
 | 
			
		||||
		(unsigned long) data.proc_segment.shlib_rss,
 | 
			
		||||
		(unsigned long) data.proc_segment.data_rss,
 | 
			
		||||
		(unsigned long) data.proc_segment.stack_rss,
 | 
			
		||||
		(unsigned long) data.proc_segment.dirty_size,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_code,
 | 
			
		||||
		(unsigned long) data.proc_segment.end_code,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_data,
 | 
			
		||||
		(unsigned long) data.proc_segment.end_data,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_brk,
 | 
			
		||||
		(unsigned long) data.proc_segment.end_brk,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_stack,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_mmap,
 | 
			
		||||
		(unsigned long) data.proc_segment.arg_start,
 | 
			
		||||
		(unsigned long) data.proc_segment.arg_end,
 | 
			
		||||
		(unsigned long) data.proc_segment.env_start,
 | 
			
		||||
		(unsigned long) data.proc_segment.env_end);
 | 
			
		||||
#else
 | 
			
		||||
	printf ("Proc_Segment INIT %5d (0x%08lx): "
 | 
			
		||||
		"%lu %lu %lu %lu %lu %lu %lu %lu\n", 1,
 | 
			
		||||
		(unsigned long) data.proc_segment.flags,
 | 
			
		||||
@@ -509,6 +732,7 @@ main (int argc, char *argv [])
 | 
			
		||||
		(unsigned long) data.proc_segment.start_code,
 | 
			
		||||
		(unsigned long) data.proc_segment.end_code,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_stack);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_time (&data.proc_time, 1);
 | 
			
		||||
@@ -529,6 +753,19 @@ main (int argc, char *argv [])
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_signal (&data.proc_signal, 1);
 | 
			
		||||
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000
 | 
			
		||||
	printf ("Proc_Signal  INIT %5d (0x%08lx): "
 | 
			
		||||
		"%lx %lx %lx %lx %lx %lx %lx %lx\n", 1,
 | 
			
		||||
		(unsigned long) data.proc_signal.flags,
 | 
			
		||||
		(unsigned long) data.proc_signal.signal [0],
 | 
			
		||||
		(unsigned long) data.proc_signal.signal [1],
 | 
			
		||||
		(unsigned long) data.proc_signal.blocked [0],
 | 
			
		||||
		(unsigned long) data.proc_signal.blocked [1],
 | 
			
		||||
		(unsigned long) data.proc_signal.sigignore [0],
 | 
			
		||||
		(unsigned long) data.proc_signal.sigignore [1],
 | 
			
		||||
		(unsigned long) data.proc_signal.sigcatch [0],
 | 
			
		||||
		(unsigned long) data.proc_signal.sigcatch [1]);
 | 
			
		||||
#else
 | 
			
		||||
	printf ("Proc_Signal  INIT %5d (0x%08lx): "
 | 
			
		||||
		"%lu %lu %lu %lu\n", 1,
 | 
			
		||||
		(unsigned long) data.proc_signal.flags,
 | 
			
		||||
@@ -536,6 +773,7 @@ main (int argc, char *argv [])
 | 
			
		||||
		(unsigned long) data.proc_signal.blocked,
 | 
			
		||||
		(unsigned long) data.proc_signal.sigignore,
 | 
			
		||||
		(unsigned long) data.proc_signal.sigcatch);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++)
 | 
			
		||||
		glibtop_get_proc_kernel (&data.proc_kernel, 1);
 | 
			
		||||
 
 | 
			
		||||
@@ -47,8 +47,8 @@ main (int argc, char *argv [])
 | 
			
		||||
	char buffer [BUFSIZ];
 | 
			
		||||
 | 
			
		||||
	setlocale (LC_ALL, "");
 | 
			
		||||
	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (GETTEXT_PACKAGE);
 | 
			
		||||
	bindtextdomain (PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (PACKAGE);
 | 
			
		||||
	
 | 
			
		||||
	glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -51,8 +51,8 @@ main (int argc, char *argv [])
 | 
			
		||||
	count = PROFILE_COUNT;
 | 
			
		||||
 | 
			
		||||
	setlocale (LC_ALL, "");
 | 
			
		||||
	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (GETTEXT_PACKAGE);
 | 
			
		||||
	bindtextdomain (PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (PACKAGE);
 | 
			
		||||
	
 | 
			
		||||
	glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -58,8 +58,8 @@ main (int argc, char *argv [])
 | 
			
		||||
	count = PROFILE_COUNT;
 | 
			
		||||
 | 
			
		||||
	setlocale (LC_ALL, "");
 | 
			
		||||
	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (GETTEXT_PACKAGE);
 | 
			
		||||
	bindtextdomain (PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (PACKAGE);
 | 
			
		||||
	
 | 
			
		||||
	glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,6 @@
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <locale.h>
 | 
			
		||||
#include <math.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/open.h>
 | 
			
		||||
@@ -52,15 +51,52 @@ output (pid_t pid)
 | 
			
		||||
		
 | 
			
		||||
	glibtop_get_proc_state (&data.proc_state, pid);
 | 
			
		||||
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000		
 | 
			
		||||
	printf ("Proc_State   PID  %5d (0x%08lx): '%s', %u - "
 | 
			
		||||
		"%u, %u, %u, %u - %u, %u, %u\n", (int) pid,
 | 
			
		||||
		(unsigned long) data.proc_state.flags,
 | 
			
		||||
		data.proc_state.cmd, data.proc_state.state,
 | 
			
		||||
		data.proc_state.uid, data.proc_state.gid,
 | 
			
		||||
		data.proc_state.ruid, data.proc_state.rgid,
 | 
			
		||||
		data.proc_state.has_cpu, data.proc_state.processor,
 | 
			
		||||
		data.proc_state.last_processor);
 | 
			
		||||
#else
 | 
			
		||||
	printf ("Proc_State   PID  %5d (0x%08lx): "
 | 
			
		||||
		"'%s', %c, %lu, %lu\n", (int) pid,
 | 
			
		||||
		(unsigned long) data.proc_state.flags,
 | 
			
		||||
		data.proc_state.cmd, data.proc_state.state,
 | 
			
		||||
		(unsigned long) data.proc_state.uid,
 | 
			
		||||
		(unsigned long) data.proc_state.gid);
 | 
			
		||||
#endif
 | 
			
		||||
		
 | 
			
		||||
	glibtop_get_proc_uid (&data.proc_uid, pid);
 | 
			
		||||
	
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000	
 | 
			
		||||
	printf ("Proc_Uid     PID  %5d (0x%08lx): "
 | 
			
		||||
		"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d - %d",
 | 
			
		||||
		(int) pid, (unsigned long) data.proc_uid.flags,
 | 
			
		||||
		data.proc_uid.uid, data.proc_uid.euid,
 | 
			
		||||
		data.proc_uid.gid, data.proc_uid.egid,
 | 
			
		||||
		data.proc_uid.suid, data.proc_uid.sgid,
 | 
			
		||||
		data.proc_uid.fsuid, data.proc_uid.fsgid,
 | 
			
		||||
		data.proc_uid.pid, data.proc_uid.ppid,
 | 
			
		||||
		data.proc_uid.pgrp, data.proc_uid.session,
 | 
			
		||||
		data.proc_uid.tty, data.proc_uid.tpgid,
 | 
			
		||||
		data.proc_uid.priority, data.proc_uid.nice,
 | 
			
		||||
		data.proc_uid.ngroups);
 | 
			
		||||
		
 | 
			
		||||
	if (data.proc_uid.ngroups) {
 | 
			
		||||
		for (i = 0; i < data.proc_uid.ngroups; i++) {
 | 
			
		||||
			if (i)
 | 
			
		||||
				printf (" %d", data.proc_uid.groups [i]);
 | 
			
		||||
			else
 | 
			
		||||
				printf (" (%d", data.proc_uid.groups [i]);
 | 
			
		||||
		}
 | 
			
		||||
		printf (")");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	printf ("\n");
 | 
			
		||||
#else
 | 
			
		||||
	printf ("Proc_Uid     PID  %5d (0x%08lx): "
 | 
			
		||||
		"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) pid,
 | 
			
		||||
		(unsigned long) data.proc_uid.flags,
 | 
			
		||||
@@ -70,6 +106,7 @@ output (pid_t pid)
 | 
			
		||||
		data.proc_uid.pgrp, data.proc_uid.session,
 | 
			
		||||
		data.proc_uid.tty, data.proc_uid.tpgid,
 | 
			
		||||
		data.proc_uid.priority, data.proc_uid.nice);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	glibtop_get_proc_mem (&data.proc_mem, pid);
 | 
			
		||||
		
 | 
			
		||||
@@ -85,6 +122,30 @@ output (pid_t pid)
 | 
			
		||||
		
 | 
			
		||||
	glibtop_get_proc_segment (&data.proc_segment, pid);
 | 
			
		||||
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000
 | 
			
		||||
	printf ("Proc_Segment PID  %5d (0x%08lx): "
 | 
			
		||||
		"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx "
 | 
			
		||||
		"0x%lx 0x%lx 0x%lx 0x%lx 0x%lx "
 | 
			
		||||
		"0x%lx 0x%lx 0x%lx 0x%lx\n", (int) pid,
 | 
			
		||||
		(unsigned long) data.proc_segment.flags,
 | 
			
		||||
		(unsigned long) data.proc_segment.text_rss,
 | 
			
		||||
		(unsigned long) data.proc_segment.shlib_rss,
 | 
			
		||||
		(unsigned long) data.proc_segment.data_rss,
 | 
			
		||||
		(unsigned long) data.proc_segment.stack_rss,
 | 
			
		||||
		(unsigned long) data.proc_segment.dirty_size,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_code,
 | 
			
		||||
		(unsigned long) data.proc_segment.end_code,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_data,
 | 
			
		||||
		(unsigned long) data.proc_segment.end_data,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_brk,
 | 
			
		||||
		(unsigned long) data.proc_segment.end_brk,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_stack,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_mmap,
 | 
			
		||||
		(unsigned long) data.proc_segment.arg_start,
 | 
			
		||||
		(unsigned long) data.proc_segment.arg_end,
 | 
			
		||||
		(unsigned long) data.proc_segment.env_start,
 | 
			
		||||
		(unsigned long) data.proc_segment.env_end);
 | 
			
		||||
#else
 | 
			
		||||
	printf ("Proc_Segment PID  %5d (0x%08lx): "
 | 
			
		||||
		"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
 | 
			
		||||
		(unsigned long) data.proc_segment.flags,
 | 
			
		||||
@@ -96,6 +157,7 @@ output (pid_t pid)
 | 
			
		||||
		(unsigned long) data.proc_segment.start_code,
 | 
			
		||||
		(unsigned long) data.proc_segment.end_code,
 | 
			
		||||
		(unsigned long) data.proc_segment.start_stack);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	glibtop_get_proc_time (&data.proc_time, pid);
 | 
			
		||||
		
 | 
			
		||||
@@ -114,6 +176,19 @@ output (pid_t pid)
 | 
			
		||||
 | 
			
		||||
	glibtop_get_proc_signal (&data.proc_signal, pid);
 | 
			
		||||
	
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000
 | 
			
		||||
	printf ("Proc_Signal  PID  %5d (0x%08lx): "
 | 
			
		||||
		"%lx %lx %lx %lx %lx %lx %lx %lx\n", (int) pid,
 | 
			
		||||
		(unsigned long) data.proc_signal.flags,
 | 
			
		||||
		(unsigned long) data.proc_signal.signal [0],
 | 
			
		||||
		(unsigned long) data.proc_signal.signal [1],
 | 
			
		||||
		(unsigned long) data.proc_signal.blocked [0],
 | 
			
		||||
		(unsigned long) data.proc_signal.blocked [1],
 | 
			
		||||
		(unsigned long) data.proc_signal.sigignore [0],
 | 
			
		||||
		(unsigned long) data.proc_signal.sigignore [1],
 | 
			
		||||
		(unsigned long) data.proc_signal.sigcatch [0],
 | 
			
		||||
		(unsigned long) data.proc_signal.sigcatch [1]);
 | 
			
		||||
#else
 | 
			
		||||
	printf ("Proc_Signal  PID  %5d (0x%08lx): "
 | 
			
		||||
		"%lu %lu %lu %lu\n", (int) pid,
 | 
			
		||||
		(unsigned long) data.proc_signal.flags,
 | 
			
		||||
@@ -121,6 +196,7 @@ output (pid_t pid)
 | 
			
		||||
		(unsigned long) data.proc_signal.blocked,
 | 
			
		||||
		(unsigned long) data.proc_signal.sigignore,
 | 
			
		||||
		(unsigned long) data.proc_signal.sigcatch);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	glibtop_get_proc_kernel (&data.proc_kernel, pid);
 | 
			
		||||
 | 
			
		||||
@@ -239,8 +315,8 @@ main (int argc, char *argv [])
 | 
			
		||||
	unsigned *ptr, pid, i;
 | 
			
		||||
 | 
			
		||||
	setlocale (LC_ALL, "");
 | 
			
		||||
	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (GETTEXT_PACKAGE);
 | 
			
		||||
	bindtextdomain (PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (PACKAGE);
 | 
			
		||||
	
 | 
			
		||||
	glibtop_init ();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,6 @@
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <locale.h>
 | 
			
		||||
#include <math.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/cpu.h>
 | 
			
		||||
@@ -40,11 +39,9 @@ main (int argc, char *argv [])
 | 
			
		||||
	int ncpu, i;
 | 
			
		||||
 | 
			
		||||
	setlocale (LC_ALL, "");
 | 
			
		||||
	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (GETTEXT_PACKAGE);
 | 
			
		||||
	bindtextdomain (PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (PACKAGE);
 | 
			
		||||
	
 | 
			
		||||
	glibtop_init();
 | 
			
		||||
 | 
			
		||||
	glibtop_get_cpu (&cpu);
 | 
			
		||||
 | 
			
		||||
	ncpu = glibtop_global_server->ncpu ? glibtop_global_server->ncpu : 1;
 | 
			
		||||
 
 | 
			
		||||
@@ -44,8 +44,8 @@ main (int argc, char *argv [])
 | 
			
		||||
	count = PROFILE_COUNT;
 | 
			
		||||
 | 
			
		||||
	setlocale (LC_ALL, "");
 | 
			
		||||
	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (GETTEXT_PACKAGE);
 | 
			
		||||
	bindtextdomain (PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (PACKAGE);
 | 
			
		||||
	
 | 
			
		||||
	glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
 | 
			
		||||
 | 
			
		||||
@@ -73,6 +73,9 @@ main (int argc, char *argv [])
 | 
			
		||||
 | 
			
		||||
	printf ("Sysdeps (0x%08lx):\n\n"
 | 
			
		||||
		"\tfeatures:\t\t0x%08lx\n\n"
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000
 | 
			
		||||
		"\tpointer_size:\t\t0x%08lx\n\n"
 | 
			
		||||
#endif
 | 
			
		||||
		"\tcpu:\t\t%d\t0x%08lx\n"
 | 
			
		||||
		"\tmem:\t\t%d\t0x%08lx\n"
 | 
			
		||||
		"\tswap:\t\t%d\t0x%08lx\n\n"
 | 
			
		||||
@@ -97,6 +100,9 @@ main (int argc, char *argv [])
 | 
			
		||||
		"\tppp:\t\t%d\t0x%08lx\n\n",
 | 
			
		||||
		(unsigned long) sysdeps.flags,
 | 
			
		||||
		(unsigned long) sysdeps.features,
 | 
			
		||||
#if LIBGTOP_VERSION_CODE > 1001000
 | 
			
		||||
		(unsigned long) sysdeps.pointer_size,
 | 
			
		||||
#endif
 | 
			
		||||
		FEATURE_CHECK(CPU),
 | 
			
		||||
		(unsigned long) sysdeps.cpu,
 | 
			
		||||
		FEATURE_CHECK(MEM),
 | 
			
		||||
 
 | 
			
		||||
@@ -38,8 +38,8 @@ int
 | 
			
		||||
main (int argc, char *argv[])
 | 
			
		||||
{
 | 
			
		||||
	setlocale (LC_ALL, "");
 | 
			
		||||
	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (GETTEXT_PACKAGE);
 | 
			
		||||
	bindtextdomain (PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (PACKAGE);
 | 
			
		||||
 | 
			
		||||
	gh_enter (argc, argv, main_prog);
 | 
			
		||||
	exit (0);
 | 
			
		||||
 
 | 
			
		||||
@@ -79,8 +79,8 @@ main (int argc, char *argv [])
 | 
			
		||||
	count = PROFILE_COUNT;
 | 
			
		||||
 | 
			
		||||
	setlocale (LC_ALL, "");
 | 
			
		||||
	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (GETTEXT_PACKAGE);
 | 
			
		||||
	bindtextdomain (PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (PACKAGE);
 | 
			
		||||
 | 
			
		||||
	printf ("%-12s (%-10s): %7s - %9s - %9s\n",
 | 
			
		||||
		"Feature", "Flags", "Count", "utime", "stime");
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
glibtopdir		= $(includedir)/libgtop-2.0/glibtop
 | 
			
		||||
glibtopdir		= $(includedir)/libgtop-1.0/glibtop
 | 
			
		||||
 | 
			
		||||
glibtop_HEADERS		= close.h loadavg.h prockernel.h procstate.h \
 | 
			
		||||
			  sem_limits.h uptime.h command.h mem.h proclist.h \
 | 
			
		||||
 
 | 
			
		||||
@@ -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}
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
@@ -2,14 +2,13 @@ LINK				= $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
 | 
			
		||||
 | 
			
		||||
INCLUDES			= @INCLUDES@
 | 
			
		||||
 | 
			
		||||
lib_LTLIBRARIES			= libgtop-2.0.la
 | 
			
		||||
lib_LTLIBRARIES			= libgtop.la
 | 
			
		||||
 | 
			
		||||
libgtop_2_0_la_SOURCES		= init.c open.c close.c command.c read.c \
 | 
			
		||||
libgtop_la_SOURCES		= init.c open.c close.c command.c read.c \
 | 
			
		||||
				  read_data.c write.c lib.c parameter.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)
 | 
			
		||||
libgtop_la_LDFLAGS		= $(LT_VERSION_INFO)
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
}
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user