Compare commits
	
		
			337 Commits
		
	
	
		
			LIBGTOP_2_
			...
			LIBGTOP_2_
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					d096dc3e63 | ||
| 
						 | 
					528c4d6362 | ||
| 
						 | 
					143c3dafe1 | ||
| 
						 | 
					629d9a0392 | ||
| 
						 | 
					798350fcef | ||
| 
						 | 
					8eaf7b99cf | ||
| 
						 | 
					194c0548b5 | ||
| 
						 | 
					97167e7add | ||
| 
						 | 
					6a96719e58 | ||
| 
						 | 
					8181cef8e3 | ||
| 
						 | 
					45b8a9a361 | ||
| 
						 | 
					6794524344 | ||
| 
						 | 
					9840ef9650 | ||
| 
						 | 
					8f1961056a | ||
| 
						 | 
					60d4f03319 | ||
| 
						 | 
					31ec86124b | ||
| 
						 | 
					21768e8e99 | ||
| 
						 | 
					ab0bfbcf3c | ||
| 
						 | 
					d807950ce2 | ||
| 
						 | 
					68cebe2aaf | ||
| 
						 | 
					36ba38cdc4 | ||
| 
						 | 
					47aad7d822 | ||
| 
						 | 
					82e6de4aa2 | ||
| 
						 | 
					ef825aa1c0 | ||
| 
						 | 
					5516366d00 | ||
| 
						 | 
					ca0915e32c | ||
| 
						 | 
					594e4f0079 | ||
| 
						 | 
					7163fa842b | ||
| 
						 | 
					83bf982682 | ||
| 
						 | 
					95fc1fb662 | ||
| 
						 | 
					aafbeadcf0 | ||
| 
						 | 
					5666bf9d33 | ||
| 
						 | 
					3110b3d491 | ||
| 
						 | 
					f80e0ea5d8 | ||
| 
						 | 
					2679063df2 | ||
| 
						 | 
					98b04a6165 | ||
| 
						 | 
					173785bf09 | ||
| 
						 | 
					bd721cf53d | ||
| 
						 | 
					2b5bc90451 | ||
| 
						 | 
					635eefba48 | ||
| 
						 | 
					6da87f745d | ||
| 
						 | 
					ed3e3212bb | ||
| 
						 | 
					fb34b3bb6e | ||
| 
						 | 
					fce31c179d | ||
| 
						 | 
					9d43d5d272 | ||
| 
						 | 
					f91299a487 | ||
| 
						 | 
					1e3f2ba5d0 | ||
| 
						 | 
					6066288d72 | ||
| 
						 | 
					f53e526dec | ||
| 
						 | 
					84b9a1e768 | ||
| 
						 | 
					fcd114ff1b | ||
| 
						 | 
					0fb561662e | ||
| 
						 | 
					beff584d14 | ||
| 
						 | 
					45a31cd564 | ||
| 
						 | 
					bb0b77e0ae | ||
| 
						 | 
					50e34421f7 | ||
| 
						 | 
					ab60fc3dd1 | ||
| 
						 | 
					2661891d6a | ||
| 
						 | 
					ba096bfae2 | ||
| 
						 | 
					9b56e502eb | ||
| 
						 | 
					99ec1e3ff3 | ||
| 
						 | 
					735102a5c1 | ||
| 
						 | 
					72a46436d9 | ||
| 
						 | 
					47cd681c0e | ||
| 
						 | 
					1451a36a04 | ||
| 
						 | 
					358b0610f5 | ||
| 
						 | 
					1401fdd5bd | ||
| 
						 | 
					16f6fab592 | ||
| 
						 | 
					c140390f1d | ||
| 
						 | 
					5a681b7bea | ||
| 
						 | 
					cc2790545c | ||
| 
						 | 
					a13877776b | ||
| 
						 | 
					243ed7fdd0 | ||
| 
						 | 
					dc8687227a | ||
| 
						 | 
					d627a9a601 | ||
| 
						 | 
					f84fe9edc7 | ||
| 
						 | 
					6a53807bb8 | ||
| 
						 | 
					2f2bbe236b | ||
| 
						 | 
					8180a1936a | ||
| 
						 | 
					b1b7355ea8 | ||
| 
						 | 
					a105dbecdc | ||
| 
						 | 
					060dd70e09 | ||
| 
						 | 
					739db1b32d | ||
| 
						 | 
					fd525d3fa3 | ||
| 
						 | 
					78add589c6 | ||
| 
						 | 
					c234586bfa | ||
| 
						 | 
					8d25899dc6 | ||
| 
						 | 
					b7def65c7a | ||
| 
						 | 
					9939d070b9 | ||
| 
						 | 
					206c620fd6 | ||
| 
						 | 
					057b16ec01 | ||
| 
						 | 
					ef899af6f3 | ||
| 
						 | 
					730c36e1fd | ||
| 
						 | 
					96f9b4f199 | ||
| 
						 | 
					3dbb6f1eca | ||
| 
						 | 
					52ea02ba87 | ||
| 
						 | 
					1b5fe965df | ||
| 
						 | 
					7b274d19e4 | ||
| 
						 | 
					934c7dca93 | ||
| 
						 | 
					5fe502317e | ||
| 
						 | 
					0e5efea6f1 | ||
| 
						 | 
					b1111e2b2a | ||
| 
						 | 
					64af09a8a2 | ||
| 
						 | 
					77ced38c16 | ||
| 
						 | 
					8963e38a7c | ||
| 
						 | 
					a8f4eec9e6 | ||
| 
						 | 
					a9e9fe07ef | ||
| 
						 | 
					85b34b98af | ||
| 
						 | 
					ab8bd67cdf | ||
| 
						 | 
					5650b49719 | ||
| 
						 | 
					71426ed454 | ||
| 
						 | 
					4458d6ba13 | ||
| 
						 | 
					70210721e0 | ||
| 
						 | 
					b81f82e9a2 | ||
| 
						 | 
					4df359b9d3 | ||
| 
						 | 
					1c248d7e93 | ||
| 
						 | 
					b2368f46ca | ||
| 
						 | 
					890398bbb5 | ||
| 
						 | 
					84cc3242fc | ||
| 
						 | 
					2456c458c2 | ||
| 
						 | 
					a6710fbfad | ||
| 
						 | 
					6dca1e55d8 | ||
| 
						 | 
					1516e5e192 | ||
| 
						 | 
					f659523856 | ||
| 
						 | 
					6b81006d08 | ||
| 
						 | 
					b70be80aca | ||
| 
						 | 
					f8fb49a428 | ||
| 
						 | 
					18356c6ae6 | ||
| 
						 | 
					807d4bf6ae | ||
| 
						 | 
					c0350d38ae | ||
| 
						 | 
					d3a9e47ffb | ||
| 
						 | 
					c8a3e46433 | ||
| 
						 | 
					222706a0d4 | ||
| 
						 | 
					2168cc5f71 | ||
| 
						 | 
					08808384f4 | ||
| 
						 | 
					0f1306a20f | ||
| 
						 | 
					84b05c0219 | ||
| 
						 | 
					6916ada308 | ||
| 
						 | 
					5943c96d35 | ||
| 
						 | 
					909a3e6512 | ||
| 
						 | 
					ca94618e27 | ||
| 
						 | 
					a478d380f4 | ||
| 
						 | 
					af80d4d3d2 | ||
| 
						 | 
					973dc2d37c | ||
| 
						 | 
					97b32c7046 | ||
| 
						 | 
					fb8184afba | ||
| 
						 | 
					16643866cf | ||
| 
						 | 
					aa9299f344 | ||
| 
						 | 
					6f69cd863b | ||
| 
						 | 
					7262bf39d8 | ||
| 
						 | 
					9e773390cc | ||
| 
						 | 
					54cbdb8158 | ||
| 
						 | 
					c70b11ee00 | ||
| 
						 | 
					965b26c926 | ||
| 
						 | 
					384cd6b2db | ||
| 
						 | 
					b055e3710b | ||
| 
						 | 
					669c6fd670 | ||
| 
						 | 
					617c4568d2 | ||
| 
						 | 
					93c998cf7a | ||
| 
						 | 
					46a0750736 | ||
| 
						 | 
					e9227d1a2e | ||
| 
						 | 
					41b7120527 | ||
| 
						 | 
					0ad6ae0a12 | ||
| 
						 | 
					6197e3ad47 | ||
| 
						 | 
					e577717013 | ||
| 
						 | 
					6b19a0090a | ||
| 
						 | 
					a515242f17 | ||
| 
						 | 
					a7b13c7d83 | ||
| 
						 | 
					849d2da085 | ||
| 
						 | 
					d4b195045a | ||
| 
						 | 
					c269f0adb8 | ||
| 
						 | 
					4f65ee018c | ||
| 
						 | 
					8a8b975d08 | ||
| 
						 | 
					64955004a0 | ||
| 
						 | 
					4ef82847fe | ||
| 
						 | 
					9da5658ba1 | ||
| 
						 | 
					b300842f47 | ||
| 
						 | 
					9a49872026 | ||
| 
						 | 
					1aa7aae2f6 | ||
| 
						 | 
					70ba9e2559 | ||
| 
						 | 
					13323e55ee | ||
| 
						 | 
					57d96878de | ||
| 
						 | 
					10de82e256 | ||
| 
						 | 
					29240a5a96 | ||
| 
						 | 
					1baa2ef8ff | ||
| 
						 | 
					0bd5a6c082 | ||
| 
						 | 
					2698263164 | ||
| 
						 | 
					85d53a69cf | ||
| 
						 | 
					0a42a8d018 | ||
| 
						 | 
					9d772e3c07 | ||
| 
						 | 
					ddd9d11c71 | ||
| 
						 | 
					b161b5bb72 | ||
| 
						 | 
					5607fefe30 | ||
| 
						 | 
					9d9aed4023 | ||
| 
						 | 
					62edf91314 | ||
| 
						 | 
					38e55efd2d | ||
| 
						 | 
					67c9c8e3e3 | ||
| 
						 | 
					013ab1841d | ||
| 
						 | 
					88c5d4fd61 | ||
| 
						 | 
					adbe42cda3 | ||
| 
						 | 
					2e6e310a3e | ||
| 
						 | 
					818e941413 | ||
| 
						 | 
					dfa868ce82 | ||
| 
						 | 
					dc353a4172 | ||
| 
						 | 
					4da65d5d0b | ||
| 
						 | 
					a2043e3aaf | ||
| 
						 | 
					f03304a920 | ||
| 
						 | 
					beedc57724 | ||
| 
						 | 
					3049619931 | ||
| 
						 | 
					ddb0c913c1 | ||
| 
						 | 
					c7244ba1ba | ||
| 
						 | 
					146ccb2511 | ||
| 
						 | 
					91c35548e4 | ||
| 
						 | 
					8705ef6b65 | ||
| 
						 | 
					d5b27269d8 | ||
| 
						 | 
					6915f098ca | ||
| 
						 | 
					376613ddd4 | ||
| 
						 | 
					6a9cd61fd9 | ||
| 
						 | 
					18a3526ea7 | ||
| 
						 | 
					333c85736c | ||
| 
						 | 
					df5ec3c02a | ||
| 
						 | 
					368e94c8e1 | ||
| 
						 | 
					f5de8e4ead | ||
| 
						 | 
					715975f7ed | ||
| 
						 | 
					f13099194c | ||
| 
						 | 
					1dd8a8e8fc | ||
| 
						 | 
					d9fb27e57c | ||
| 
						 | 
					dde1a2c1aa | ||
| 
						 | 
					5bff21b7b4 | ||
| 
						 | 
					e58c732f54 | ||
| 
						 | 
					48404428a2 | ||
| 
						 | 
					d009071e40 | ||
| 
						 | 
					33b1fcf4f9 | ||
| 
						 | 
					c0a9dedc4b | ||
| 
						 | 
					7ab96d212d | ||
| 
						 | 
					bd6e248adf | ||
| 
						 | 
					9abfb85080 | ||
| 
						 | 
					fdef2d5b38 | ||
| 
						 | 
					641eb24a8b | ||
| 
						 | 
					8754f434d1 | ||
| 
						 | 
					f656208234 | ||
| 
						 | 
					0df1594f31 | ||
| 
						 | 
					1ab7936ced | ||
| 
						 | 
					dcd43f8a15 | ||
| 
						 | 
					7f7c5506f7 | ||
| 
						 | 
					b0a4cb2379 | ||
| 
						 | 
					8c06ed1516 | ||
| 
						 | 
					56154e50f2 | ||
| 
						 | 
					902670623f | ||
| 
						 | 
					0e5d856065 | ||
| 
						 | 
					35b6acfc22 | ||
| 
						 | 
					0830a0b8a7 | ||
| 
						 | 
					f4be080d63 | ||
| 
						 | 
					a599e04eb6 | ||
| 
						 | 
					0dec9a7b70 | ||
| 
						 | 
					75958ce2ab | ||
| 
						 | 
					20bbc17f6b | ||
| 
						 | 
					19ffa1419a | ||
| 
						 | 
					1e568f294e | ||
| 
						 | 
					7752a312e9 | ||
| 
						 | 
					23c7449898 | ||
| 
						 | 
					64b3db2dc0 | ||
| 
						 | 
					e94b4882b6 | ||
| 
						 | 
					1e629c9a86 | ||
| 
						 | 
					6b6e1261f1 | ||
| 
						 | 
					bbc872138b | ||
| 
						 | 
					3555a6ca0c | ||
| 
						 | 
					e5928d0b13 | ||
| 
						 | 
					5bb7e07e95 | ||
| 
						 | 
					043f4a498f | ||
| 
						 | 
					94297b8460 | ||
| 
						 | 
					0f5b941b15 | ||
| 
						 | 
					df6d645afd | ||
| 
						 | 
					9ac47c7839 | ||
| 
						 | 
					8d734d1296 | ||
| 
						 | 
					7fa43bba5d | ||
| 
						 | 
					e2e01a9405 | ||
| 
						 | 
					5530697ab8 | ||
| 
						 | 
					95f279d1a7 | ||
| 
						 | 
					1904a463e2 | ||
| 
						 | 
					7ce1f9e9d7 | ||
| 
						 | 
					5221f6d4f8 | ||
| 
						 | 
					ac175a4cbf | ||
| 
						 | 
					f53d1a69bc | ||
| 
						 | 
					adaa9cad97 | ||
| 
						 | 
					7201ec7790 | ||
| 
						 | 
					113525a7d7 | ||
| 
						 | 
					d6e62e85d2 | ||
| 
						 | 
					ee153445f0 | ||
| 
						 | 
					50b43a0f41 | ||
| 
						 | 
					25c26a6620 | ||
| 
						 | 
					0438b9d69a | ||
| 
						 | 
					90c01f24fe | ||
| 
						 | 
					dc0f442247 | ||
| 
						 | 
					017f4d20c7 | ||
| 
						 | 
					c021ce7851 | ||
| 
						 | 
					93ab9882c3 | ||
| 
						 | 
					a0477c6212 | ||
| 
						 | 
					6780e78a6b | ||
| 
						 | 
					d8871029eb | ||
| 
						 | 
					6799ce187b | ||
| 
						 | 
					2b6b2578be | ||
| 
						 | 
					1b0a9fd291 | ||
| 
						 | 
					43e070dd8b | ||
| 
						 | 
					b0d18119ff | ||
| 
						 | 
					be05f8163a | ||
| 
						 | 
					d6cdf95d83 | ||
| 
						 | 
					2256a9127f | ||
| 
						 | 
					e6507a80be | ||
| 
						 | 
					8411e566b4 | ||
| 
						 | 
					40854f4179 | ||
| 
						 | 
					41062d0262 | ||
| 
						 | 
					58c882a860 | ||
| 
						 | 
					789d156972 | ||
| 
						 | 
					19c24da036 | ||
| 
						 | 
					929a025f53 | ||
| 
						 | 
					6a7c289305 | ||
| 
						 | 
					b65a4a7dcb | ||
| 
						 | 
					39b2fffe83 | ||
| 
						 | 
					efb913acff | ||
| 
						 | 
					79e756a2f7 | ||
| 
						 | 
					b08968e644 | ||
| 
						 | 
					dff497d2fa | ||
| 
						 | 
					38de742ca4 | ||
| 
						 | 
					e0d3401bc4 | ||
| 
						 | 
					aae2b5a94d | ||
| 
						 | 
					a5bd38fc19 | ||
| 
						 | 
					931b8f065e | ||
| 
						 | 
					f7885e488f | ||
| 
						 | 
					8122db69ee | ||
| 
						 | 
					ab13d4919d | ||
| 
						 | 
					1d955fbf1f | ||
| 
						 | 
					8af25a2003 | ||
| 
						 | 
					12eb6a25ec | ||
| 
						 | 
					77ced087a1 | ||
| 
						 | 
					983475d0c1 | ||
| 
						 | 
					70b65c05e5 | 
							
								
								
									
										53
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								ChangeLog
									
									
									
									
									
								
							@@ -1,56 +1,3 @@
 | 
			
		||||
2003-10-21  Bastien Nocera  <hadess@hadess.net>
 | 
			
		||||
 | 
			
		||||
	* lib/read.c: (glibtop_read_l):
 | 
			
		||||
	* lib/read_data.c: (glibtop_read_data_l):
 | 
			
		||||
	* lib/write.c: (glibtop_write_l): 
 | 
			
		||||
	reverted string freeze breakage
 | 
			
		||||
 | 
			
		||||
2003-10-20  Bastien Nocera  <hadess@hadess.net>
 | 
			
		||||
 | 
			
		||||
	* lib/read.c: (glibtop_read_l):
 | 
			
		||||
	* lib/read_data.c: (glibtop_read_data_l):
 | 
			
		||||
	* lib/write.c: (glibtop_write_l): apply patch for ngettext support
 | 
			
		||||
	by Christian Neumair <chris@gnome-de.org>
 | 
			
		||||
 | 
			
		||||
2003-10-20  Bastien Nocera  <hadess@hadess.net>
 | 
			
		||||
 | 
			
		||||
	* src/inodedb/Makefile.am: link to libgtop_suid_common-2.0.la
 | 
			
		||||
	(Closes: #107990)
 | 
			
		||||
 | 
			
		||||
2003-10-20  Bastien Nocera  <hadess@hadess.net>
 | 
			
		||||
 | 
			
		||||
	* configure.in: make it compile
 | 
			
		||||
 | 
			
		||||
2003-10-19  Carlos Perelló Marín <carlos@gnome.org>
 | 
			
		||||
 | 
			
		||||
	* support/*: Reverted libgtop changes. It's a common module
 | 
			
		||||
	and I should not modify it.
 | 
			
		||||
	* Added/removed files. Now the move should be done.
 | 
			
		||||
 | 
			
		||||
2003-10-19  Carlos Perelló Marín <carlos@gnome.org>
 | 
			
		||||
 | 
			
		||||
	* libgtop-GNOME-2-0-branch moved to HEAD.
 | 
			
		||||
 | 
			
		||||
2003-09-30  Laurent Dhima  <laurenti@alblinux.net>
 | 
			
		||||
 | 
			
		||||
	* configure.in: Added "sq" to ALL_LINGUAS.
 | 
			
		||||
 | 
			
		||||
2003-09-17  Fatih Demir <kabalak@gtranslator.org>
 | 
			
		||||
 | 
			
		||||
	* configure.in: Added "ta" (Tamil) to the languages' list.
 | 
			
		||||
 | 
			
		||||
2003-09-13  Carlos Perelló Marín <carlos@gnome.org>
 | 
			
		||||
 | 
			
		||||
	* configure.in (ALL_LINGUAS):  Removed es_ES.
 | 
			
		||||
 | 
			
		||||
2003-09-08  Kevin Vandersloot
 | 
			
		||||
 | 
			
		||||
	* configure.in: release 2.0.5
 | 
			
		||||
 | 
			
		||||
2003-09-06  Taneem Ahmed  <taneem@bengalinux.org>
 | 
			
		||||
 | 
			
		||||
	* configure.in: Added "bn" to ALL_LINGUAS.
 | 
			
		||||
 | 
			
		||||
2003-08-24  Kevin Vandersloot
 | 
			
		||||
 | 
			
		||||
	* configure.in: release 2.0.4
 | 
			
		||||
 
 | 
			
		||||
@@ -1,2 +0,0 @@
 | 
			
		||||
Email: martin@home-of-linux.org
 | 
			
		||||
Email: dave@srce.hr
 | 
			
		||||
@@ -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
 | 
			
		||||
@@ -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 '';
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										18
									
								
								configure.in
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								configure.in
									
									
									
									
									
								
							@@ -5,22 +5,14 @@ dnl
 | 
			
		||||
AC_INIT(copyright.txt)
 | 
			
		||||
AM_CONFIG_HEADER(config.h)
 | 
			
		||||
AC_CANONICAL_SYSTEM
 | 
			
		||||
# Making releases:
 | 
			
		||||
#   LIBGTOP_MICRO_VERSION += 1;
 | 
			
		||||
#   LIBGTOP_INTERFACE_AGE += 1;
 | 
			
		||||
#   LIBGTOP_BINARY_AGE += 1;
 | 
			
		||||
# if any functions have been added, set LIBGTOP_INTERFACE_AGE to 0.
 | 
			
		||||
# if backwards compatibility has been broken,
 | 
			
		||||
# set LIBGTOP_BINARY_AGE and LIBGTOP_INTERFACE_AGE to 0.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
LIBGTOP_MAJOR_VERSION=2
 | 
			
		||||
LIBGTOP_MINOR_VERSION=0
 | 
			
		||||
LIBGTOP_MICRO_VERSION=7
 | 
			
		||||
LIBGTOP_MICRO_VERSION=4
 | 
			
		||||
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
 | 
			
		||||
AM_INIT_AUTOMAKE(libgtop, $LIBGTOP_VERSION)
 | 
			
		||||
LIBGTOP_INTERFACE_AGE=7
 | 
			
		||||
LIBGTOP_BINARY_AGE=7
 | 
			
		||||
LIBGTOP_INTERFACE_AGE=4
 | 
			
		||||
LIBGTOP_BINARY_AGE=4
 | 
			
		||||
 | 
			
		||||
# you can set this to `-snap' for instance to create
 | 
			
		||||
# a `libgtop-1.x.y-snap.tar.gz' tarball.
 | 
			
		||||
@@ -293,7 +285,8 @@ AC_TYPE_SIGNAL
 | 
			
		||||
AC_FUNC_STRFTIME
 | 
			
		||||
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
 | 
			
		||||
 | 
			
		||||
ALL_LINGUAS="am ar az be bg bn ca cs cy da de el es et fa fi fr ga gl he hi hu id it ja ko lv mk ml mn ms nl nn no pl pt pt_BR ro ru sk sl sq sr sr@Latn sv ta tr uk vi zh_CN zh_TW"
 | 
			
		||||
dnl ## 'es_ES' is only needed for format numbers different of 'es'
 | 
			
		||||
ALL_LINGUAS="am ar az be bg ca cs cy da de el es es_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 sr sr@Latn sv tr uk vi zh_CN zh_TW"
 | 
			
		||||
 | 
			
		||||
GETTEXT_PACKAGE=libgtop-2.0
 | 
			
		||||
AC_SUBST(GETTEXT_PACKAGE)
 | 
			
		||||
@@ -487,6 +480,5 @@ lib/Makefile
 | 
			
		||||
examples/Makefile
 | 
			
		||||
doc/Makefile
 | 
			
		||||
support/Makefile
 | 
			
		||||
support/gnome-support-2.0.pc
 | 
			
		||||
libgtop-2.0.pc
 | 
			
		||||
])
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								debian/libgtop2.README.Debian
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								debian/libgtop2.README.Debian
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +0,0 @@
 | 
			
		||||
 | 
			
		||||
The Debian package of libgtop, a GNOME library.
 | 
			
		||||
 | 
			
		||||
-- 
 | 
			
		||||
Ian Lynagh <ian@lynagh.demon.co.uk>
 | 
			
		||||
							
								
								
									
										12
									
								
								debian/libgtop2.copyright
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								debian/libgtop2.copyright
									
									
									
									
										vendored
									
									
								
							@@ -1,12 +0,0 @@
 | 
			
		||||
 | 
			
		||||
libgtop is released under the GPL.
 | 
			
		||||
On Debian GNU/Linux systems, the complete text of the GNU General
 | 
			
		||||
Public License can be found in /usr/share/common-licenses/GPL
 | 
			
		||||
 | 
			
		||||
Original authors: Martin Baulig <martin@home-of-linux.org>
 | 
			
		||||
                  Drazen Kacar <dave@srce.hr>
 | 
			
		||||
 | 
			
		||||
Originally Debianised by Jim Pick <jim@jimpick.com>
 | 
			
		||||
Then re-Debianised in October 1998 by Martin Schulze
 | 
			
		||||
<joey@finlandia.infodrom.north.de> before being taken over by Ian Lynagh
 | 
			
		||||
<ian@lynagh.demon.co.uk> in November 1998.
 | 
			
		||||
							
								
								
									
										7
									
								
								debian/libgtop2.docs
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								debian/libgtop2.docs
									
									
									
									
										vendored
									
									
								
							@@ -1,7 +0,0 @@
 | 
			
		||||
RELNOTES-0.25
 | 
			
		||||
RELNOTES-1.0
 | 
			
		||||
RELNOTES-1.1.x
 | 
			
		||||
NEWS
 | 
			
		||||
AUTHORS
 | 
			
		||||
TODO
 | 
			
		||||
debian/changelog
 | 
			
		||||
							
								
								
									
										2
									
								
								debian/libgtop2.files.in
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								debian/libgtop2.files.in
									
									
									
									
										vendored
									
									
								
							@@ -1,2 +0,0 @@
 | 
			
		||||
@PREFIX@/lib/libgtop*-1.1.so.*.*
 | 
			
		||||
@PREFIX@/lib/libgtop*-1.1.so.*
 | 
			
		||||
@@ -1,107 +0,0 @@
 | 
			
		||||
@node LibGTop Internals, , Reference Manual, Top
 | 
			
		||||
@chapter LibGTop Internals
 | 
			
		||||
 | 
			
		||||
@menu
 | 
			
		||||
* General Internals::           General Internals
 | 
			
		||||
* Sysdeps Internals::           Sysdeps Internals
 | 
			
		||||
@end menu
 | 
			
		||||
 | 
			
		||||
@node General Internals, Sysdeps Internals, LibGTop Internals, LibGTop Internals
 | 
			
		||||
@section General Internals
 | 
			
		||||
 | 
			
		||||
@menu
 | 
			
		||||
* glibtop::                     The server structure
 | 
			
		||||
@end menu
 | 
			
		||||
 | 
			
		||||
@node glibtop,  , General Internals, General Internals
 | 
			
		||||
@subsection The server structure - @code{glibtop}
 | 
			
		||||
 | 
			
		||||
@example
 | 
			
		||||
@cartouche
 | 
			
		||||
typedef struct _glibtop         glibtop;
 | 
			
		||||
 | 
			
		||||
struct _glibtop
 | 
			
		||||
@{
 | 
			
		||||
        unsigned flags;
 | 
			
		||||
        unsigned method;
 | 
			
		||||
        unsigned error_method;
 | 
			
		||||
#ifdef HAVE_GLIBTOP_MACHINE_H
 | 
			
		||||
        glibtop_machine machine;
 | 
			
		||||
#endif
 | 
			
		||||
        int input [2];
 | 
			
		||||
        int output [2];
 | 
			
		||||
        int socket;
 | 
			
		||||
        int ncpu;
 | 
			
		||||
        unsigned long os_version_code;
 | 
			
		||||
        const char *name;
 | 
			
		||||
        const char *server_command;
 | 
			
		||||
        const char *server_host;
 | 
			
		||||
        const char *server_user;
 | 
			
		||||
        const char *server_rsh;
 | 
			
		||||
        unsigned long features;
 | 
			
		||||
        unsigned long server_port;
 | 
			
		||||
        glibtop_sysdeps sysdeps;
 | 
			
		||||
        glibtop_sysdeps required;
 | 
			
		||||
        glibtop_sysdeps wanted;
 | 
			
		||||
        pid_t pid;
 | 
			
		||||
@};
 | 
			
		||||
@end cartouche
 | 
			
		||||
@end example
 | 
			
		||||
 | 
			
		||||
@node Sysdeps Internals,  , General Internals, LibGTop Internals
 | 
			
		||||
@section Sysdeps Internals
 | 
			
		||||
 | 
			
		||||
@menu
 | 
			
		||||
* glibtop_open_s::              Non-privileged initializations
 | 
			
		||||
* glibtop_close_s::             Non-privileged cleanups
 | 
			
		||||
@end menu
 | 
			
		||||
 | 
			
		||||
@node glibtop_open_s, glibtop_close_s, Sysdeps Internals, Sysdeps Internals
 | 
			
		||||
@subsection glibtop_open_s
 | 
			
		||||
 | 
			
		||||
This function is used in the non-suid sysdeps library @samp{-lgtop_sysdeps} to
 | 
			
		||||
initialize a server. It should do all initializations that do not need any
 | 
			
		||||
privileges.
 | 
			
		||||
 | 
			
		||||
@example
 | 
			
		||||
@cartouche
 | 
			
		||||
void
 | 
			
		||||
glibtop_open_s (glibtop *server, const char *program_name,
 | 
			
		||||
		const unsigned long features,
 | 
			
		||||
		const unsigned flags);
 | 
			
		||||
@end cartouche
 | 
			
		||||
@end example
 | 
			
		||||
 | 
			
		||||
@table @code
 | 
			
		||||
@item server
 | 
			
		||||
Pointer to the @code{glibtop} server structure.
 | 
			
		||||
@item program_name
 | 
			
		||||
Name of the calling program; the implementation will usually
 | 
			
		||||
set @samp{server->name} to this so it'll be used as the program
 | 
			
		||||
name in error messages.
 | 
			
		||||
@end table
 | 
			
		||||
 | 
			
		||||
Typically, this function will set @code{server->name}, @code{server->ncpu} and
 | 
			
		||||
@code{server->os_version_code} and initialize any of the @code{server->machine}
 | 
			
		||||
fields which do not need any privileges.
 | 
			
		||||
 | 
			
		||||
It is normally implemented in @file{open.c} in the sysdeps directory.
 | 
			
		||||
 | 
			
		||||
@node glibtop_close_s,  , glibtop_open_s, Sysdeps Internals
 | 
			
		||||
@subsection glibtop_close_s
 | 
			
		||||
 | 
			
		||||
This function is used in the non-suid sysdeps library @samp{-lgtop_sysdeps} to
 | 
			
		||||
clean-up a server when it's no longer used.
 | 
			
		||||
 | 
			
		||||
It must free all resources that were allocated in @code{glibtop_open_s}.
 | 
			
		||||
 | 
			
		||||
@example
 | 
			
		||||
@cartouche
 | 
			
		||||
void
 | 
			
		||||
glibtop_close_s (glibtop *server);
 | 
			
		||||
@end cartouche
 | 
			
		||||
@end example
 | 
			
		||||
 | 
			
		||||
It is normally implemented in @file{close.c} in the sysdeps directory, but may
 | 
			
		||||
be empty.
 | 
			
		||||
 | 
			
		||||
@@ -1,2 +0,0 @@
 | 
			
		||||
Makefile.in
 | 
			
		||||
Makefile
 | 
			
		||||
@@ -1,9 +0,0 @@
 | 
			
		||||
backenddir	= @LIBGTOP_BACKEND_DIR@
 | 
			
		||||
 | 
			
		||||
backend_DATA	= \
 | 
			
		||||
	libgtop-backends.dtd	\
 | 
			
		||||
	libgtop-backend-info.dtd
 | 
			
		||||
 | 
			
		||||
EXTRA_DIST	= |
 | 
			
		||||
	$(backend_DATA)
 | 
			
		||||
 | 
			
		||||
@@ -1,23 +0,0 @@
 | 
			
		||||
<!ELEMENT BackendInfo (name,description?,comments?,authors,legalnotice)>
 | 
			
		||||
<!ELEMENT name (short_name,long_name?)>
 | 
			
		||||
<!ELEMENT short_name (#PCDATA)>
 | 
			
		||||
<!ELEMENT long_name (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT description (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT authors (author)+>
 | 
			
		||||
<!ELEMENT author (author_name,author_email?)>
 | 
			
		||||
<!ELEMENT author_name (#PCDATA)>
 | 
			
		||||
<!ELEMENT author_email (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT legalnotice (license,copyright?)>
 | 
			
		||||
<!ELEMENT license (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT copyright (holder)+>
 | 
			
		||||
<!ELEMENT holder (holder_year?,holder_name,holder_email?)>
 | 
			
		||||
<!ELEMENT holder_year (#PCDATA)>
 | 
			
		||||
<!ELEMENT holder_name (#PCDATA)>
 | 
			
		||||
<!ELEMENT holder_email (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT comments (comment)+>
 | 
			
		||||
<!ELEMENT comment (#PCDATA)>
 | 
			
		||||
@@ -1,11 +0,0 @@
 | 
			
		||||
<!ELEMENT Backends (Backend)+>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT Backend (Name,Location)>
 | 
			
		||||
<!ELEMENT Name (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT Location (LibtoolName?,ShlibName,ExtraLibs?)>
 | 
			
		||||
<!ELEMENT LibtoolName (#PCDATA)>
 | 
			
		||||
<!ELEMENT ShlibName (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT ExtraLibs (ExtraLib)+>
 | 
			
		||||
<!ELEMENT ExtraLib (LibtoolName?,ShlibName)>
 | 
			
		||||
@@ -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}
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										170
									
								
								lib/error.c
									
									
									
									
									
								
							
							
						
						
									
										170
									
								
								lib/error.c
									
									
									
									
									
								
							@@ -1,170 +0,0 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
 | 
			
		||||
#define DEFAULT_NAME	"LibGTop-Server"
 | 
			
		||||
 | 
			
		||||
/* Prints error message and exits. */
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
print_server_name (glibtop_server *server)
 | 
			
		||||
{
 | 
			
		||||
    fprintf (stderr, "%s: ", server ? 
 | 
			
		||||
	     (server->name ? server->name : DEFAULT_NAME)
 | 
			
		||||
	     : DEFAULT_NAME);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_error_vr (glibtop_server *server, char *format, va_list args)
 | 
			
		||||
{
 | 
			
		||||
    print_server_name (server);	
 | 
			
		||||
    vfprintf (stderr, format, args);
 | 
			
		||||
    fprintf (stderr, "\n");
 | 
			
		||||
 | 
			
		||||
#ifdef LIBGTOP_ENABLE_DEBUG
 | 
			
		||||
    abort ();
 | 
			
		||||
#else
 | 
			
		||||
    exit (1);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_error_io_vr (glibtop_server *server, char *format, int error, va_list args)
 | 
			
		||||
{
 | 
			
		||||
    print_server_name (server);
 | 
			
		||||
    vfprintf (stderr, format, args);
 | 
			
		||||
    fprintf (stderr, ": %s\n", strerror (error));
 | 
			
		||||
 | 
			
		||||
#ifdef LIBGTOP_ENABLE_DEBUG
 | 
			
		||||
    abort ();
 | 
			
		||||
#else
 | 
			
		||||
    exit (1);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_warn_vr (glibtop_server *server, char *format, va_list args)
 | 
			
		||||
{
 | 
			
		||||
    print_server_name (server);
 | 
			
		||||
    vfprintf (stderr, format, args);
 | 
			
		||||
    fprintf (stderr, "\n");
 | 
			
		||||
 | 
			
		||||
#ifdef LIBGTOP_FATAL_WARNINGS
 | 
			
		||||
    abort ();
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_warn_io_vr (glibtop_server *server, char *format, int error, va_list args)
 | 
			
		||||
{
 | 
			
		||||
    print_server_name (server);
 | 
			
		||||
    vfprintf (stderr, format, args);
 | 
			
		||||
    fprintf (stderr, ": %s\n", strerror (error));
 | 
			
		||||
 | 
			
		||||
#ifdef LIBGTOP_FATAL_WARNINGS
 | 
			
		||||
    abort ();
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_error_r (glibtop_server *server, char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
 | 
			
		||||
    va_start (args, format);
 | 
			
		||||
    glibtop_error_vr (server, format, args);
 | 
			
		||||
    va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_warn_r (glibtop_server *server, char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
 | 
			
		||||
    va_start (args, format);
 | 
			
		||||
    glibtop_warn_vr (server, format, args);
 | 
			
		||||
    va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_error_io_r (glibtop_server *server, char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
 | 
			
		||||
    va_start (args, format);
 | 
			
		||||
    glibtop_error_io_vr (server, format, errno, args);
 | 
			
		||||
    va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_warn_io_r (glibtop_server *server, char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
 | 
			
		||||
    va_start (args, format);
 | 
			
		||||
    glibtop_warn_io_vr (server, format, errno, args);
 | 
			
		||||
    va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifndef  __GNUC__
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glibtop_error (char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
    va_start (args, format);
 | 
			
		||||
    glibtop_error_vr (glibtop_global_server, format, args);
 | 
			
		||||
    va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glibtop_warn (char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
    va_start (args, format);
 | 
			
		||||
    glibtop_warn_vr (glibtop_global_server, format, args);
 | 
			
		||||
    va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glibtop_error_io (char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
    va_start (args, format);
 | 
			
		||||
    glibtop_error_io_vr (glibtop_global_server, format, errno, args);
 | 
			
		||||
    va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glibtop_warn_io (char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
    va_start (args, format);
 | 
			
		||||
    glibtop_warn_io_vr (glibtop_global_server, format, errno, args);
 | 
			
		||||
    va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif /* no __GNUC__ */
 | 
			
		||||
							
								
								
									
										156
									
								
								lib/errors.c
									
									
									
									
									
								
							
							
						
						
									
										156
									
								
								lib/errors.c
									
									
									
									
									
								
							@@ -1,156 +0,0 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/global.h>
 | 
			
		||||
#include <glibtop/errors.h>
 | 
			
		||||
 | 
			
		||||
/* Error quark */
 | 
			
		||||
GQuark
 | 
			
		||||
glibtop_error_quark (void)
 | 
			
		||||
{
 | 
			
		||||
    static GQuark q = 0;
 | 
			
		||||
    if (q == 0)
 | 
			
		||||
	q = g_quark_from_static_string ("glibtop-error-quark");
 | 
			
		||||
 | 
			
		||||
    return q;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_error_vl (glibtop_client *client, glibtop_error code,
 | 
			
		||||
		  const char *format, va_list args)
 | 
			
		||||
{
 | 
			
		||||
    gchar *message;
 | 
			
		||||
    GError *error;
 | 
			
		||||
 | 
			
		||||
    g_return_if_fail (GLIBTOP_IS_CLIENT (client));
 | 
			
		||||
    message = g_strdup_vprintf (format, args);
 | 
			
		||||
 | 
			
		||||
    error = g_error_new_literal (GLIBTOP_ERROR, code, message);
 | 
			
		||||
    glibtop_client_propagate_error (client, error);
 | 
			
		||||
 | 
			
		||||
    g_error_free (error);
 | 
			
		||||
    g_free (message);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_error_io_vl (glibtop_client *client, glibtop_error code,
 | 
			
		||||
		     int io_errno, const char *format, va_list args)
 | 
			
		||||
{
 | 
			
		||||
    gchar *message, *fullmessage;
 | 
			
		||||
    GError *error;
 | 
			
		||||
 | 
			
		||||
    g_return_if_fail (GLIBTOP_IS_CLIENT (client));
 | 
			
		||||
    message = g_strdup_vprintf (format, args);
 | 
			
		||||
    fullmessage = g_strdup_printf ("%s: %s", message, strerror (io_errno));
 | 
			
		||||
 | 
			
		||||
    error = g_error_new_literal (GLIBTOP_ERROR, code, message);
 | 
			
		||||
    glibtop_client_propagate_error (client, error);
 | 
			
		||||
 | 
			
		||||
    g_error_free (error);
 | 
			
		||||
    g_free (fullmessage);
 | 
			
		||||
    g_free (message);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_warn_vl (glibtop_client *client, glibtop_error code,
 | 
			
		||||
		 const char *format, va_list args)
 | 
			
		||||
{
 | 
			
		||||
    gchar *message;
 | 
			
		||||
    GError *error;
 | 
			
		||||
 | 
			
		||||
    g_return_if_fail (GLIBTOP_IS_CLIENT (client));
 | 
			
		||||
    message = g_strdup_vprintf (format, args);
 | 
			
		||||
 | 
			
		||||
    error = g_error_new_literal (GLIBTOP_ERROR, code, message);
 | 
			
		||||
    glibtop_client_propagate_warning (client, error);
 | 
			
		||||
 | 
			
		||||
    g_error_free (error);
 | 
			
		||||
    g_free (message);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_warn_io_vl (glibtop_client *client, glibtop_error code,
 | 
			
		||||
		    int io_errno, const char *format, va_list args)
 | 
			
		||||
{
 | 
			
		||||
    gchar *message, *fullmessage;
 | 
			
		||||
    GError *error;
 | 
			
		||||
 | 
			
		||||
    g_return_if_fail (GLIBTOP_IS_CLIENT (client));
 | 
			
		||||
    message = g_strdup_vprintf (format, args);
 | 
			
		||||
    fullmessage = g_strdup_printf ("%s: %s", message, strerror (io_errno));
 | 
			
		||||
 | 
			
		||||
    error = g_error_new_literal (GLIBTOP_ERROR, code, message);
 | 
			
		||||
    glibtop_client_propagate_warning (client, error);
 | 
			
		||||
 | 
			
		||||
    g_error_free (error);
 | 
			
		||||
    g_free (fullmessage);
 | 
			
		||||
    g_free (message);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_error_l (glibtop_client *client, glibtop_error code,
 | 
			
		||||
		 char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
 | 
			
		||||
    va_start (args, format);
 | 
			
		||||
    glibtop_error_vl (client, code, format, args);
 | 
			
		||||
    va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_warn_l (glibtop_client *client, glibtop_error code,
 | 
			
		||||
		char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
 | 
			
		||||
    va_start (args, format);
 | 
			
		||||
    glibtop_warn_vl (client, code, format, args);
 | 
			
		||||
    va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_error_io_l (glibtop_client *client, glibtop_error code,
 | 
			
		||||
		    char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
 | 
			
		||||
    va_start (args, format);
 | 
			
		||||
    glibtop_error_io_vl (client, code, errno, format, args);
 | 
			
		||||
    va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_warn_io_l (glibtop_client *client, glibtop_error code,
 | 
			
		||||
		   char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
 | 
			
		||||
    va_start (args, format);
 | 
			
		||||
    glibtop_warn_io_vl (client, code, errno, format, args);
 | 
			
		||||
    va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1,120 +0,0 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/union.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/glib-arrays.h>
 | 
			
		||||
 | 
			
		||||
GArray *
 | 
			
		||||
glibtop_get_proclist_as_array_l (glibtop_client *client, int64_t which,
 | 
			
		||||
				 int64_t arg)
 | 
			
		||||
{
 | 
			
		||||
    glibtop_array array;
 | 
			
		||||
    GArray *retval;
 | 
			
		||||
    unsigned *ptr;
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    ptr = glibtop_get_proclist_l (client, &array, which, arg);
 | 
			
		||||
    if (!ptr) return NULL;
 | 
			
		||||
 | 
			
		||||
    retval = g_array_new (FALSE, TRUE, sizeof (guint));
 | 
			
		||||
    retval = g_array_set_size (retval, array.number);
 | 
			
		||||
 | 
			
		||||
    for (i = 0; i < array.number; i++)
 | 
			
		||||
	g_array_index (retval, guint, i) = ptr [i];
 | 
			
		||||
 | 
			
		||||
    g_free (ptr);
 | 
			
		||||
 | 
			
		||||
    return retval;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
GPtrArray *
 | 
			
		||||
glibtop_get_proc_args_as_array_l (glibtop_client *client, pid_t pid)
 | 
			
		||||
{
 | 
			
		||||
    glibtop_array array;
 | 
			
		||||
    GPtrArray *retval;
 | 
			
		||||
    char **ptr;
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    ptr = glibtop_get_proc_args_l (client, &array, pid);
 | 
			
		||||
    if (!ptr) return NULL;
 | 
			
		||||
 | 
			
		||||
    retval = g_ptr_array_new ();
 | 
			
		||||
    g_ptr_array_set_size (retval, array.number);
 | 
			
		||||
 | 
			
		||||
    for (i = 0; i < array.number; i++) {
 | 
			
		||||
	retval->pdata [i] = g_strdup (ptr [i]);
 | 
			
		||||
	g_free (ptr [i]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    g_free (ptr);
 | 
			
		||||
 | 
			
		||||
    return retval;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
GPtrArray *
 | 
			
		||||
glibtop_get_proc_map_as_array_l (glibtop_client *client, pid_t pid)
 | 
			
		||||
{
 | 
			
		||||
    glibtop_array array;
 | 
			
		||||
    GPtrArray *retval;
 | 
			
		||||
    glibtop_map_entry *ptr;
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    ptr = glibtop_get_proc_map_l (client, &array, pid);
 | 
			
		||||
    if (!ptr) return NULL;
 | 
			
		||||
 | 
			
		||||
    retval = g_ptr_array_new ();
 | 
			
		||||
    g_ptr_array_set_size (retval, array.number);
 | 
			
		||||
 | 
			
		||||
    for (i = 0; i < array.number; i++)
 | 
			
		||||
	retval->pdata [i] = g_memdup (ptr+i, sizeof (glibtop_map_entry));
 | 
			
		||||
 | 
			
		||||
    g_free (ptr);
 | 
			
		||||
 | 
			
		||||
    return retval;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
GPtrArray *
 | 
			
		||||
glibtop_get_mountlist_as_array_l (glibtop_client *client, int all_fs)
 | 
			
		||||
{
 | 
			
		||||
    glibtop_array array;
 | 
			
		||||
    GPtrArray *retval;
 | 
			
		||||
    glibtop_mountentry *ptr;
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    ptr = glibtop_get_mountlist_l (client, &array, all_fs);
 | 
			
		||||
    if (!ptr) return NULL;
 | 
			
		||||
 | 
			
		||||
    retval = g_ptr_array_new ();
 | 
			
		||||
    g_ptr_array_set_size (retval, array.number);
 | 
			
		||||
 | 
			
		||||
    for (i = 0; i < array.number; i++)
 | 
			
		||||
	retval->pdata [i] = g_memdup (ptr+i, sizeof (glibtop_mountentry));
 | 
			
		||||
 | 
			
		||||
    g_free (ptr);
 | 
			
		||||
 | 
			
		||||
    return retval;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,280 +0,0 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/global.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/glibtop-backend.h>
 | 
			
		||||
#include <glibtop/glibtop-backend-info.h>
 | 
			
		||||
 | 
			
		||||
static GHashTable *_glibtop_backend_list = NULL;
 | 
			
		||||
static long _glibtop_backend_nr = 0;
 | 
			
		||||
 | 
			
		||||
#define LIBGTOP_XML_NAMESPACE	"http://www.home-of-linux.org/libgtop/1.1"
 | 
			
		||||
 | 
			
		||||
#include <libxml/parser.h>
 | 
			
		||||
 | 
			
		||||
#include <dirent.h>
 | 
			
		||||
 | 
			
		||||
static void _glibtop_init_gmodule_backends (const char *);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_init_backends (void)
 | 
			
		||||
{
 | 
			
		||||
    static int backends_initialized = 0;
 | 
			
		||||
 | 
			
		||||
    if (backends_initialized)
 | 
			
		||||
	return;
 | 
			
		||||
    backends_initialized = 1;
 | 
			
		||||
 | 
			
		||||
    LIBXML_TEST_VERSION;
 | 
			
		||||
 | 
			
		||||
    _glibtop_init_gmodule_backends (LIBGTOP_BACKEND_DIR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gchar *
 | 
			
		||||
_get_library_filename (xmlDocPtr doc, xmlNodePtr cur, const char *directory)
 | 
			
		||||
{
 | 
			
		||||
    char *filename = xmlNodeListGetString (doc, cur->xmlChildrenNode, 1);
 | 
			
		||||
    gchar *retval;
 | 
			
		||||
 | 
			
		||||
    if (!filename)
 | 
			
		||||
	return NULL;
 | 
			
		||||
 | 
			
		||||
    /* already absolute */
 | 
			
		||||
    if (filename [0] == '/')
 | 
			
		||||
	retval = g_strdup (filename);
 | 
			
		||||
    else
 | 
			
		||||
	retval = g_strdup_printf ("%s/%s", directory, filename);
 | 
			
		||||
 | 
			
		||||
    return retval;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static GSList *
 | 
			
		||||
_parse_extra_libs (xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, const char *dir)
 | 
			
		||||
{
 | 
			
		||||
    GSList *list = NULL;
 | 
			
		||||
 | 
			
		||||
    /* We don't care what the top level element name is */
 | 
			
		||||
    cur = cur->xmlChildrenNode;
 | 
			
		||||
    while (cur != NULL) {
 | 
			
		||||
        if ((!strcmp (cur->name, "ExtraLib")) && (cur->ns == ns)) {
 | 
			
		||||
	    xmlNodePtr sub = cur->xmlChildrenNode;
 | 
			
		||||
 | 
			
		||||
	    while (sub != NULL) {
 | 
			
		||||
		if ((!strcmp (sub->name, "ShlibName")) && (sub->ns == ns))
 | 
			
		||||
		    list = g_slist_append
 | 
			
		||||
			(list, _get_library_filename (doc, sub, dir));
 | 
			
		||||
 | 
			
		||||
		sub = sub->next;
 | 
			
		||||
	    }
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
        cur = cur->next;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return list;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static glibtop_backend_entry *
 | 
			
		||||
_parseBackend (xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, const char *dir)
 | 
			
		||||
{
 | 
			
		||||
    glibtop_backend_entry *ret = NULL;
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
     * allocate the struct
 | 
			
		||||
     */
 | 
			
		||||
    ret = g_new0 (glibtop_backend_entry, 1);
 | 
			
		||||
 | 
			
		||||
    /* We don't care what the top level element name is */
 | 
			
		||||
    cur = cur->xmlChildrenNode;
 | 
			
		||||
    while (cur != NULL) {
 | 
			
		||||
        if ((!strcmp (cur->name, "Name")) && (cur->ns == ns))
 | 
			
		||||
            ret->name = xmlNodeListGetString
 | 
			
		||||
		(doc, cur->xmlChildrenNode, 1);
 | 
			
		||||
 | 
			
		||||
        if ((!strcmp (cur->name, "Location")) && (cur->ns == ns)) {
 | 
			
		||||
	    xmlNodePtr sub = cur->xmlChildrenNode;
 | 
			
		||||
 | 
			
		||||
	    while (sub != NULL) {
 | 
			
		||||
		if ((!strcmp (sub->name, "LibtoolName")) && (sub->ns == ns))
 | 
			
		||||
		    ret->libtool_name = _get_library_filename (doc, sub, dir);
 | 
			
		||||
		if ((!strcmp (sub->name, "ShlibName")) && (sub->ns == ns))
 | 
			
		||||
		    ret->shlib_name = _get_library_filename (doc, sub, dir);
 | 
			
		||||
 | 
			
		||||
		if ((!strcmp (sub->name, "ExtraLibs")) && (sub->ns == ns))
 | 
			
		||||
		    ret->extra_libs = _parse_extra_libs (doc, ns, sub, dir);
 | 
			
		||||
 | 
			
		||||
		sub = sub->next;
 | 
			
		||||
	    }
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
        cur = cur->next;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
_glibtop_init_gmodule_backends (const char *directory)
 | 
			
		||||
{
 | 
			
		||||
    DIR *dir;
 | 
			
		||||
    struct dirent *entry;
 | 
			
		||||
 | 
			
		||||
    dir = opendir (directory);
 | 
			
		||||
    if (!dir) return;
 | 
			
		||||
 | 
			
		||||
    while ((entry = readdir (dir)) != NULL) {
 | 
			
		||||
	size_t len = strlen (entry->d_name);
 | 
			
		||||
	gchar *filename;
 | 
			
		||||
	xmlDocPtr doc;
 | 
			
		||||
	xmlNsPtr ns;
 | 
			
		||||
	xmlNodePtr cur;
 | 
			
		||||
 | 
			
		||||
	if (len < 8)
 | 
			
		||||
	    continue;
 | 
			
		||||
 | 
			
		||||
	if (strcmp (entry->d_name+len-8, ".backend"))
 | 
			
		||||
	    continue;
 | 
			
		||||
 | 
			
		||||
	filename = g_strdup_printf ("%s/%s", directory, entry->d_name);
 | 
			
		||||
 | 
			
		||||
	doc = xmlParseFile (filename);
 | 
			
		||||
 | 
			
		||||
	if (!doc) {
 | 
			
		||||
	    g_warning ("Cannot parse %s", filename);
 | 
			
		||||
	    g_free (filename);
 | 
			
		||||
	    continue;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Make sure the document is of the right kind */
 | 
			
		||||
 | 
			
		||||
	cur = xmlDocGetRootElement (doc);
 | 
			
		||||
	if (!cur) {
 | 
			
		||||
	    xmlFreeDoc (doc);
 | 
			
		||||
	    g_free (filename);
 | 
			
		||||
	    continue;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ns = xmlSearchNsByHref (doc, cur, LIBGTOP_XML_NAMESPACE);
 | 
			
		||||
	if (!ns) {
 | 
			
		||||
	    g_warning ("File %s of wrong type; LibGTop Namespace not found",
 | 
			
		||||
		       filename);
 | 
			
		||||
	    g_free (filename);
 | 
			
		||||
	    xmlFreeDoc (doc);
 | 
			
		||||
	    continue;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (strcmp (cur->name, "Backends")) {
 | 
			
		||||
	    g_warning ("File %s of the wrong type, root node != 'Backends'",
 | 
			
		||||
		       filename);
 | 
			
		||||
	    g_free (filename);
 | 
			
		||||
	    xmlFreeDoc (doc);
 | 
			
		||||
	    continue;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cur = cur->xmlChildrenNode;
 | 
			
		||||
	while (cur != NULL) {
 | 
			
		||||
	    glibtop_backend_entry *backend;
 | 
			
		||||
 | 
			
		||||
	    if ((!strcmp(cur->name, "Backend")) && (cur->ns == ns)) {
 | 
			
		||||
		backend = _parseBackend (doc, ns, cur, directory);
 | 
			
		||||
		if (!backend) {
 | 
			
		||||
		    g_warning ("File %s of wrong type; cannot parse",
 | 
			
		||||
			       filename);
 | 
			
		||||
		    continue;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		glibtop_register_backend (backend);
 | 
			
		||||
	    }
 | 
			
		||||
	    cur = cur->next;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	g_free (filename);
 | 
			
		||||
	xmlFreeDoc (doc);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    closedir (dir);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
long
 | 
			
		||||
glibtop_register_backend (glibtop_backend_entry *entry)
 | 
			
		||||
{
 | 
			
		||||
    long id;
 | 
			
		||||
 | 
			
		||||
    if (!_glibtop_backend_list)
 | 
			
		||||
	_glibtop_backend_list = g_hash_table_new (NULL, NULL);
 | 
			
		||||
 | 
			
		||||
    id = ++_glibtop_backend_nr;
 | 
			
		||||
 | 
			
		||||
    g_hash_table_insert (_glibtop_backend_list,
 | 
			
		||||
			 GINT_TO_POINTER (id),
 | 
			
		||||
			 entry);
 | 
			
		||||
 | 
			
		||||
    return id;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_unregister_backend (long id)
 | 
			
		||||
{
 | 
			
		||||
    g_hash_table_remove (_glibtop_backend_list,
 | 
			
		||||
			 GINT_TO_POINTER (id));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
glibtop_backend_entry *
 | 
			
		||||
glibtop_backend_by_id (long id)
 | 
			
		||||
{
 | 
			
		||||
    return g_hash_table_lookup (_glibtop_backend_list,
 | 
			
		||||
				GINT_TO_POINTER (id));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    const char *backend_name;
 | 
			
		||||
    glibtop_backend_entry *entry;
 | 
			
		||||
} _find_by_name_param_t;
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
find_by_name (gpointer key, gpointer value, gpointer user_data)
 | 
			
		||||
{
 | 
			
		||||
    _find_by_name_param_t *param = (_find_by_name_param_t *) user_data;
 | 
			
		||||
    glibtop_backend_entry *entry = (glibtop_backend_entry *) value;
 | 
			
		||||
 | 
			
		||||
    if (!entry || !entry->name || param->entry)
 | 
			
		||||
	return;
 | 
			
		||||
 | 
			
		||||
    if (!strcmp (entry->name, param->backend_name))
 | 
			
		||||
	param->entry = entry;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
glibtop_backend_entry *
 | 
			
		||||
glibtop_backend_by_name (const char *backend_name)
 | 
			
		||||
{
 | 
			
		||||
    _find_by_name_param_t param = { backend_name, NULL };
 | 
			
		||||
 | 
			
		||||
    g_hash_table_foreach (_glibtop_backend_list,
 | 
			
		||||
			  find_by_name, ¶m);
 | 
			
		||||
 | 
			
		||||
    return param.entry;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,271 +0,0 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
 | 
			
		||||
#include <glib-object.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/glibtop-backend.h>
 | 
			
		||||
#include <glibtop/glibtop-backend-info.h>
 | 
			
		||||
 | 
			
		||||
static void glibtop_backend_class_init    (glibtop_backend_class  *klass);
 | 
			
		||||
static void glibtop_backend_init          (glibtop_backend        *backend);
 | 
			
		||||
static void glibtop_backend_finalize      (GObject                *object);
 | 
			
		||||
 | 
			
		||||
static gpointer parent_class = NULL;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Internal data */
 | 
			
		||||
 | 
			
		||||
struct _glibtop_backend_private
 | 
			
		||||
{
 | 
			
		||||
    const glibtop_backend_info *info;
 | 
			
		||||
 | 
			
		||||
    glibtop_closure *closure_data;
 | 
			
		||||
 | 
			
		||||
    glibtop_server *server;
 | 
			
		||||
    glibtop_backend_module *module;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
GType
 | 
			
		||||
glibtop_backend_get_type (void)
 | 
			
		||||
{
 | 
			
		||||
    static GType glibtop_backend_type = 0;
 | 
			
		||||
  
 | 
			
		||||
    if (!glibtop_backend_type) {
 | 
			
		||||
	static const GTypeInfo glibtop_backend_info = {
 | 
			
		||||
	    sizeof (glibtop_backend_class),
 | 
			
		||||
	    NULL,		/* base_class_init */
 | 
			
		||||
	    NULL,		/* base_class_finalize */
 | 
			
		||||
	    (GClassInitFunc) glibtop_backend_class_init,
 | 
			
		||||
	    NULL,		/* class_finalize */
 | 
			
		||||
	    NULL,		/* class_data */
 | 
			
		||||
	    sizeof (glibtop_backend),
 | 
			
		||||
	    16,			/* n_preallocs */
 | 
			
		||||
	    (GInstanceInitFunc) glibtop_backend_init,
 | 
			
		||||
	};
 | 
			
		||||
      
 | 
			
		||||
	glibtop_backend_type = g_type_register_static
 | 
			
		||||
	    (G_TYPE_OBJECT, "glibtop_backend", &glibtop_backend_info, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return glibtop_backend_type;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glibtop_backend_class_init (glibtop_backend_class *class)
 | 
			
		||||
{
 | 
			
		||||
    GObjectClass *gobject_class;
 | 
			
		||||
 | 
			
		||||
    gobject_class = (GObjectClass *) class;
 | 
			
		||||
  
 | 
			
		||||
    parent_class = g_type_class_ref (G_TYPE_OBJECT);
 | 
			
		||||
 | 
			
		||||
    gobject_class->finalize = glibtop_backend_finalize;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glibtop_backend_init (glibtop_backend *backend)
 | 
			
		||||
{
 | 
			
		||||
    glibtop_backend_private *priv;
 | 
			
		||||
 | 
			
		||||
    priv = g_new0 (glibtop_backend_private, 1);
 | 
			
		||||
    backend->_priv = priv;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glibtop_backend_finalize (GObject *object)
 | 
			
		||||
{
 | 
			
		||||
    glibtop_backend *glibtop;
 | 
			
		||||
    glibtop_backend_private *priv = NULL;
 | 
			
		||||
  
 | 
			
		||||
    glibtop = GLIBTOP_BACKEND (object);
 | 
			
		||||
    priv = glibtop->_priv;
 | 
			
		||||
 | 
			
		||||
    g_free (priv);
 | 
			
		||||
  
 | 
			
		||||
    if (G_OBJECT_CLASS (parent_class)->finalize)
 | 
			
		||||
	G_OBJECT_CLASS (parent_class)->finalize (object);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
unload_module (gpointer data, gpointer user_data)
 | 
			
		||||
{
 | 
			
		||||
    g_module_close (data);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
load_extra_libs (glibtop_backend_entry *entry, GError **error)
 | 
			
		||||
{
 | 
			
		||||
    GSList *list;
 | 
			
		||||
    GSList *loaded_here = NULL;
 | 
			
		||||
 | 
			
		||||
    for (list = entry->extra_libs; list; list = list->next) {
 | 
			
		||||
	const gchar *filename = list->data;
 | 
			
		||||
	GModule *module;
 | 
			
		||||
 | 
			
		||||
	module = g_module_open (filename, G_MODULE_BIND_LAZY);
 | 
			
		||||
	if (!module) {
 | 
			
		||||
	    g_set_error (error, GLIBTOP_ERROR, GLIBTOP_ERROR_NO_SUCH_BACKEND,
 | 
			
		||||
			 "Cannot open extra shared library `%s' "
 | 
			
		||||
			 "for backend `%s' (%s)", filename, entry->name,
 | 
			
		||||
			 g_module_error ());
 | 
			
		||||
	    g_slist_foreach (loaded_here, unload_module, NULL);
 | 
			
		||||
	    return -GLIBTOP_ERROR_NO_SUCH_BACKEND;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	loaded_here = g_slist_prepend (loaded_here, module);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    entry->_priv->extra_modules = g_slist_concat
 | 
			
		||||
	(loaded_here, entry->_priv->extra_modules);
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
glibtop_backend *
 | 
			
		||||
glibtop_backend_get (const char *backend_name, u_int64_t features,
 | 
			
		||||
		     const char **backend_args, GError **error)
 | 
			
		||||
{
 | 
			
		||||
    const glibtop_backend_info *info;
 | 
			
		||||
    glibtop_backend_entry *entry;
 | 
			
		||||
    glibtop_backend *backend;
 | 
			
		||||
 | 
			
		||||
    glibtop_init_backends ();
 | 
			
		||||
 | 
			
		||||
    entry = glibtop_backend_by_name (backend_name);
 | 
			
		||||
    if (!entry) {
 | 
			
		||||
	g_set_error (error, GLIBTOP_ERROR, GLIBTOP_ERROR_NO_SUCH_BACKEND,
 | 
			
		||||
		     "No backend with this name");
 | 
			
		||||
	return NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!entry->_priv) {
 | 
			
		||||
	entry->_priv = g_new0 (glibtop_backend_module, 1);
 | 
			
		||||
 | 
			
		||||
	if (entry->extra_libs) {
 | 
			
		||||
	    int retval;
 | 
			
		||||
 | 
			
		||||
	    retval = load_extra_libs (entry, error);
 | 
			
		||||
	    if (retval < 0)
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	entry->_priv->module = g_module_open (entry->shlib_name,
 | 
			
		||||
					      G_MODULE_BIND_LAZY);
 | 
			
		||||
	if (!entry->_priv->module) {
 | 
			
		||||
	    g_set_error (error, GLIBTOP_ERROR, GLIBTOP_ERROR_NO_SUCH_BACKEND,
 | 
			
		||||
			 "Cannot open shared library `%s' "
 | 
			
		||||
			 "for backend `%s' (%s)", entry->shlib_name,
 | 
			
		||||
			 entry->name, g_module_error ());
 | 
			
		||||
	    return NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (!g_module_symbol (entry->_priv->module,
 | 
			
		||||
			      "LibGTopBackendInfo",
 | 
			
		||||
			      (gpointer*) &entry->info)) {
 | 
			
		||||
	    g_set_error (error, GLIBTOP_ERROR, GLIBTOP_ERROR_NO_SUCH_BACKEND,
 | 
			
		||||
			 "Library `%s' is not a valid "
 | 
			
		||||
			 "LibGTop Backend library (start symbol not found)",
 | 
			
		||||
			 entry->shlib_name);
 | 
			
		||||
 | 
			
		||||
	    g_module_close (entry->_priv->module);
 | 
			
		||||
	    g_free (entry->_priv);
 | 
			
		||||
	    entry->_priv = NULL;
 | 
			
		||||
 | 
			
		||||
	    return NULL;
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    info = entry->info;
 | 
			
		||||
    if (!info) {
 | 
			
		||||
	g_set_error (error, GLIBTOP_ERROR, GLIBTOP_ERROR_NO_SUCH_BACKEND,
 | 
			
		||||
		     "Can't get backend info");
 | 
			
		||||
	return NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    backend = g_object_new (GLIBTOP_TYPE_BACKEND, NULL);
 | 
			
		||||
 | 
			
		||||
    backend->_priv->module = entry->_priv;
 | 
			
		||||
    backend->_priv->info = info;
 | 
			
		||||
 | 
			
		||||
    backend->_priv->server = glibtop_server_new ();
 | 
			
		||||
 | 
			
		||||
    if (info->open) {
 | 
			
		||||
	int retval;
 | 
			
		||||
 | 
			
		||||
	retval = info->open (backend->_priv->server, backend, features,
 | 
			
		||||
			     backend_args);
 | 
			
		||||
	if (retval) {
 | 
			
		||||
	    g_set_error (error, GLIBTOP_ERROR, GLIBTOP_ERROR_NO_SUCH_BACKEND,
 | 
			
		||||
			 "Backend open function return error condition");
 | 
			
		||||
 | 
			
		||||
	    g_object_unref (G_OBJECT (backend));
 | 
			
		||||
	    return NULL;
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    entry->_priv->refcount++;
 | 
			
		||||
 | 
			
		||||
    return backend;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
glibtop_call_vector *
 | 
			
		||||
glibtop_backend_get_call_vector (glibtop_backend *backend)
 | 
			
		||||
{
 | 
			
		||||
    g_return_val_if_fail (GLIBTOP_IS_BACKEND (backend), NULL);
 | 
			
		||||
 | 
			
		||||
    g_assert (backend->_priv->info != NULL);
 | 
			
		||||
 | 
			
		||||
    return backend->_priv->info->call_vector;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
glibtop_server *
 | 
			
		||||
glibtop_backend_get_server (glibtop_backend *backend)
 | 
			
		||||
{
 | 
			
		||||
    g_return_val_if_fail (GLIBTOP_IS_BACKEND (backend), NULL);
 | 
			
		||||
 | 
			
		||||
    glibtop_server_ref (backend->_priv->server);
 | 
			
		||||
 | 
			
		||||
    return backend->_priv->server;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
glibtop_closure *
 | 
			
		||||
glibtop_backend_get_closure_data (glibtop_backend *backend)
 | 
			
		||||
{
 | 
			
		||||
    g_return_val_if_fail (GLIBTOP_IS_BACKEND (backend), NULL);
 | 
			
		||||
 | 
			
		||||
    return backend->_priv->closure_data;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_backend_set_closure_data (glibtop_backend *backend,
 | 
			
		||||
				  glibtop_closure *closure)
 | 
			
		||||
{
 | 
			
		||||
    g_return_if_fail (GLIBTOP_IS_BACKEND (backend));
 | 
			
		||||
    g_return_if_fail (backend->_priv->closure_data == NULL);
 | 
			
		||||
 | 
			
		||||
    backend->_priv->closure_data = closure;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,34 +0,0 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef __GLIBTOP_CLIENT_PRIVATE_H__
 | 
			
		||||
#define __GLIBTOP_CLIENT_PRIVATE_H__
 | 
			
		||||
 | 
			
		||||
struct _glibtop_client_private
 | 
			
		||||
{
 | 
			
		||||
    GSList *backend_list;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1,257 +0,0 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
 | 
			
		||||
#include <glib-object.h>
 | 
			
		||||
 | 
			
		||||
static void glibtop_client_class_init    (glibtop_client_class   *klass);
 | 
			
		||||
static void glibtop_client_init          (glibtop_client         *client);
 | 
			
		||||
static void glibtop_client_finalize      (GObject                *object);
 | 
			
		||||
 | 
			
		||||
static gpointer parent_class = NULL;
 | 
			
		||||
 | 
			
		||||
#include <glibtop-client-private.h>
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
    GLIBTOP_CLIENT_SIGNAL_ERROR,
 | 
			
		||||
    GLIBTOP_CLIENT_SIGNAL_WARNING,
 | 
			
		||||
    LAST_SIGNAL
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static guint glibtop_client_signals [LAST_SIGNAL] = { 0 };
 | 
			
		||||
 | 
			
		||||
GType
 | 
			
		||||
glibtop_client_get_type (void)
 | 
			
		||||
{
 | 
			
		||||
    static GType glibtop_client_type = 0;
 | 
			
		||||
  
 | 
			
		||||
    if (!glibtop_client_type) {
 | 
			
		||||
	static const GTypeInfo glibtop_client_info = {
 | 
			
		||||
	    sizeof (glibtop_client_class),
 | 
			
		||||
	    NULL,		/* base_class_init */
 | 
			
		||||
	    NULL,		/* base_class_finalize */
 | 
			
		||||
	    (GClassInitFunc) glibtop_client_class_init,
 | 
			
		||||
	    NULL,		/* class_finalize */
 | 
			
		||||
	    NULL,		/* class_data */
 | 
			
		||||
	    sizeof (glibtop_client),
 | 
			
		||||
	    16,			/* n_preallocs */
 | 
			
		||||
	    (GInstanceInitFunc) glibtop_client_init,
 | 
			
		||||
	};
 | 
			
		||||
      
 | 
			
		||||
	glibtop_client_type = g_type_register_static
 | 
			
		||||
	    (G_TYPE_OBJECT, "glibtop_client", &glibtop_client_info, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return glibtop_client_type;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glibtop_client_error_handler (glibtop_client *client, GError *error)
 | 
			
		||||
{
 | 
			
		||||
    g_return_if_fail (GLIBTOP_IS_CLIENT (client));
 | 
			
		||||
 | 
			
		||||
    if (error == NULL)
 | 
			
		||||
	return;
 | 
			
		||||
 | 
			
		||||
    g_error ("%s (%d): %s", g_quark_to_string (error->domain),
 | 
			
		||||
	     error->code, error->message);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glibtop_client_warning_handler (glibtop_client *client, GError *error)
 | 
			
		||||
{
 | 
			
		||||
    g_return_if_fail (GLIBTOP_IS_CLIENT (client));
 | 
			
		||||
 | 
			
		||||
    if (error == NULL)
 | 
			
		||||
	return;
 | 
			
		||||
 | 
			
		||||
    g_warning ("%s (%d): %s", g_quark_to_string (error->domain),
 | 
			
		||||
	       error->code, error->message);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glibtop_client_class_init (glibtop_client_class *klass)
 | 
			
		||||
{
 | 
			
		||||
    GObjectClass *gobject_class;
 | 
			
		||||
 | 
			
		||||
    gobject_class = (GObjectClass *) klass;
 | 
			
		||||
  
 | 
			
		||||
    parent_class = g_type_class_peek_parent (klass);
 | 
			
		||||
 | 
			
		||||
    glibtop_client_signals [GLIBTOP_CLIENT_SIGNAL_ERROR] =
 | 
			
		||||
	g_signal_new ("error",
 | 
			
		||||
		       G_TYPE_FROM_CLASS (klass),
 | 
			
		||||
		       G_SIGNAL_RUN_LAST,
 | 
			
		||||
		       G_STRUCT_OFFSET (glibtop_client_class, error),
 | 
			
		||||
		       NULL, NULL,
 | 
			
		||||
		       g_cclosure_marshal_VOID__POINTER,
 | 
			
		||||
		       G_TYPE_NONE, 1, G_TYPE_POINTER, NULL);
 | 
			
		||||
 | 
			
		||||
    glibtop_client_signals [GLIBTOP_CLIENT_SIGNAL_WARNING] =
 | 
			
		||||
	g_signal_new ("warning",
 | 
			
		||||
		       G_TYPE_FROM_CLASS (klass),
 | 
			
		||||
		       G_SIGNAL_RUN_LAST,
 | 
			
		||||
		       G_STRUCT_OFFSET (glibtop_client_class, warning),
 | 
			
		||||
		       NULL, NULL,
 | 
			
		||||
		       g_cclosure_marshal_VOID__POINTER,
 | 
			
		||||
		       G_TYPE_NONE, 1, G_TYPE_POINTER, NULL);
 | 
			
		||||
 | 
			
		||||
    klass->error = glibtop_client_error_handler;
 | 
			
		||||
    klass->warning = glibtop_client_warning_handler;
 | 
			
		||||
  
 | 
			
		||||
    gobject_class->finalize = glibtop_client_finalize;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glibtop_client_init (glibtop_client *glibtop)
 | 
			
		||||
{
 | 
			
		||||
    glibtop_client_private *priv;
 | 
			
		||||
  
 | 
			
		||||
    priv = g_new0 (glibtop_client_private, 1);
 | 
			
		||||
    glibtop->_priv = priv;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glibtop_client_finalize (GObject *object)
 | 
			
		||||
{
 | 
			
		||||
    glibtop_client *glibtop;
 | 
			
		||||
    glibtop_client_private *priv = NULL;
 | 
			
		||||
    GSList *c;
 | 
			
		||||
  
 | 
			
		||||
    glibtop = GLIBTOP_CLIENT (object);
 | 
			
		||||
    priv = glibtop->_priv;
 | 
			
		||||
 | 
			
		||||
    for (c = priv->backend_list; c; c = c->next)
 | 
			
		||||
	g_object_unref (G_OBJECT (c->data));
 | 
			
		||||
    g_slist_free (priv->backend_list);
 | 
			
		||||
  
 | 
			
		||||
    g_free (priv);
 | 
			
		||||
  
 | 
			
		||||
    if (G_OBJECT_CLASS (parent_class)->finalize)
 | 
			
		||||
	G_OBJECT_CLASS (parent_class)->finalize (object);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
glibtop_client *
 | 
			
		||||
glibtop_client_new (void)
 | 
			
		||||
{
 | 
			
		||||
    return g_object_new (GLIBTOP_TYPE_CLIENT, NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_client_propagate_error (glibtop_client *client, GError *error)
 | 
			
		||||
{
 | 
			
		||||
    GValue params [2] = { { 0, }, { 0, } };
 | 
			
		||||
 | 
			
		||||
    g_return_if_fail (GLIBTOP_IS_CLIENT (client));
 | 
			
		||||
 | 
			
		||||
    if (error == NULL)
 | 
			
		||||
	return;
 | 
			
		||||
 | 
			
		||||
    g_value_init (params, GLIBTOP_CLIENT_TYPE (client));
 | 
			
		||||
    g_value_set_object (params, G_OBJECT (client));
 | 
			
		||||
 | 
			
		||||
    g_value_init (params + 1, G_TYPE_POINTER);
 | 
			
		||||
    g_value_set_pointer (params + 1, error);
 | 
			
		||||
 | 
			
		||||
    g_signal_emitv (params,
 | 
			
		||||
		    glibtop_client_signals [GLIBTOP_CLIENT_SIGNAL_ERROR],
 | 
			
		||||
		    0, NULL);
 | 
			
		||||
  
 | 
			
		||||
    g_value_unset (params + 1);
 | 
			
		||||
    g_value_unset (params + 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_client_propagate_warning (glibtop_client *client, GError *error)
 | 
			
		||||
{
 | 
			
		||||
    GValue params [2] = { { 0, }, { 0, } };
 | 
			
		||||
 | 
			
		||||
    g_return_if_fail (GLIBTOP_IS_CLIENT (client));
 | 
			
		||||
 | 
			
		||||
    if (error == NULL)
 | 
			
		||||
	return;
 | 
			
		||||
 | 
			
		||||
    g_value_init (params, GLIBTOP_CLIENT_TYPE (client));
 | 
			
		||||
    g_value_set_object (params, G_OBJECT (client));
 | 
			
		||||
 | 
			
		||||
    g_value_init (params + 1, G_TYPE_POINTER);
 | 
			
		||||
    g_value_set_pointer (params + 1, error);
 | 
			
		||||
 | 
			
		||||
    g_signal_emitv (params,
 | 
			
		||||
		    glibtop_client_signals [GLIBTOP_CLIENT_SIGNAL_WARNING],
 | 
			
		||||
		    0, NULL);
 | 
			
		||||
  
 | 
			
		||||
    g_value_unset (params + 1);
 | 
			
		||||
    g_value_unset (params + 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_client_open_backend (glibtop_client *client, const char *backend_name,
 | 
			
		||||
			     u_int64_t features, const char **backend_args)
 | 
			
		||||
{
 | 
			
		||||
    glibtop_backend *backend;
 | 
			
		||||
    GError *error = NULL;
 | 
			
		||||
 | 
			
		||||
    g_return_if_fail (GLIBTOP_IS_CLIENT (client));
 | 
			
		||||
 | 
			
		||||
    backend = glibtop_backend_get (backend_name, features, backend_args,
 | 
			
		||||
				   &error);
 | 
			
		||||
    if (!backend) {
 | 
			
		||||
	glibtop_client_propagate_error (client, error);
 | 
			
		||||
	g_error_free (error);
 | 
			
		||||
	return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    glibtop_client_add_backend (client, backend);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_client_add_backend (glibtop_client *client,
 | 
			
		||||
			    glibtop_backend *backend)
 | 
			
		||||
{
 | 
			
		||||
    g_return_if_fail (GLIBTOP_IS_CLIENT (client));
 | 
			
		||||
    g_return_if_fail (GLIBTOP_IS_BACKEND (backend));
 | 
			
		||||
 | 
			
		||||
    client->_priv->backend_list = g_slist_append
 | 
			
		||||
	(client->_priv->backend_list, backend);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_client_remove_backend (glibtop_client *client,
 | 
			
		||||
			       glibtop_backend *backend)
 | 
			
		||||
{
 | 
			
		||||
    GSList *c;
 | 
			
		||||
 | 
			
		||||
    g_return_if_fail (GLIBTOP_IS_CLIENT (client));
 | 
			
		||||
    g_return_if_fail (GLIBTOP_IS_BACKEND (backend));
 | 
			
		||||
 | 
			
		||||
    c = g_slist_find (client->_priv->backend_list, backend);
 | 
			
		||||
    if (!c) return;
 | 
			
		||||
 | 
			
		||||
    g_slist_remove_link (client->_priv->backend_list, c);
 | 
			
		||||
    g_object_unref (G_OBJECT (backend));
 | 
			
		||||
}
 | 
			
		||||
@@ -1,38 +0,0 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef __GLIBTOP_SERVER_PRIVATE_H__
 | 
			
		||||
#define __GLIBTOP_SERVER_PRIVATE_H__
 | 
			
		||||
 | 
			
		||||
#include <glib.h>
 | 
			
		||||
 | 
			
		||||
typedef struct _glibtop_server_private glibtop_server_private;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_server_private
 | 
			
		||||
{
 | 
			
		||||
    GSList *backend_list;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1,58 +0,0 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop-server-private.h>
 | 
			
		||||
 | 
			
		||||
glibtop_server *
 | 
			
		||||
glibtop_server_new (void)
 | 
			
		||||
{
 | 
			
		||||
    glibtop_server *retval;
 | 
			
		||||
 | 
			
		||||
    retval = g_new0 (glibtop_server, 1);
 | 
			
		||||
    retval->info = g_new0 (glibtop_server_info, 1);
 | 
			
		||||
    retval->_priv = g_new0 (glibtop_server_private, 1);
 | 
			
		||||
    retval->refcount = 1;
 | 
			
		||||
 | 
			
		||||
    return retval;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_server_ref (glibtop_server *server)
 | 
			
		||||
{
 | 
			
		||||
    server->refcount++;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_server_unref (glibtop_server *server)
 | 
			
		||||
{
 | 
			
		||||
    server->refcount--;
 | 
			
		||||
 | 
			
		||||
    if (server->refcount <= 0) {
 | 
			
		||||
	g_free (server->_priv);
 | 
			
		||||
	g_free (server->info);
 | 
			
		||||
	g_free (server);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,104 +0,0 @@
 | 
			
		||||
#!/usr/bin/perl
 | 
			
		||||
 | 
			
		||||
die "Usage: $0 features.def structures.def" unless $#ARGV == 2;
 | 
			
		||||
 | 
			
		||||
$[ = 1;			# set array base to 1
 | 
			
		||||
$, = ' ';		# set output field separator
 | 
			
		||||
$\ = "\n";		# set output record separator
 | 
			
		||||
 | 
			
		||||
sub toupper {
 | 
			
		||||
    local($_) = @_;
 | 
			
		||||
    tr/a-z/A-Z/;
 | 
			
		||||
    return $_;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub tolower {
 | 
			
		||||
    local($_) = @_;
 | 
			
		||||
    tr/A-Z/a-z/;
 | 
			
		||||
    return $_;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
$structures{$structure_count++} = 'glibtop';
 | 
			
		||||
 | 
			
		||||
open FEATURESDEF, $ARGV[1] or
 | 
			
		||||
  die "open ($ARGV[1]): $!";
 | 
			
		||||
 | 
			
		||||
while (<FEATURESDEF>) {
 | 
			
		||||
  chop;				# strip record separator
 | 
			
		||||
  
 | 
			
		||||
  if (/^[^\#]/) {
 | 
			
		||||
    &parse_features_def ($_);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
close FEATURESDEF;
 | 
			
		||||
 | 
			
		||||
open STRUCTDEF, $ARGV[2] or
 | 
			
		||||
  die "open ($ARGV[2]): $!";
 | 
			
		||||
 | 
			
		||||
while (<STRUCTDEF>) {
 | 
			
		||||
  chop;				# strip record separator
 | 
			
		||||
  
 | 
			
		||||
  if (/^[^\#]/) {
 | 
			
		||||
    &parse_structure_def ($_);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
close STRUCTDEF;
 | 
			
		||||
 | 
			
		||||
$init_structures_code = sprintf
 | 
			
		||||
  (qq[\tscm_glibtop_structure_tags [GLIBTOP_STRUCTURE_GLIBTOP] = scm_make_structure_type\n\t\t("glibtop", sizeof (glibtop));\n]);
 | 
			
		||||
 | 
			
		||||
for ($nr = 0; $nr < $structure_count; $nr++) {
 | 
			
		||||
  $structure = $structures{$nr};
 | 
			
		||||
 | 
			
		||||
  $init_structures_code .= sprintf
 | 
			
		||||
    (qq[\tscm_glibtop_structure_tags [GLIBTOP_STRUCTURE_%s] = scm_make_structure_type\n\t\t("%s", sizeof (%s));\n],
 | 
			
		||||
     toupper($structure), $structure, $structure);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print qq[/* structures.h */];
 | 
			
		||||
print qq[/* This is a generated file.  Please modify \`guile.pl\' */];
 | 
			
		||||
print '';
 | 
			
		||||
print qq[\#ifndef __GLIBTOP_STRUCTURES_H__];
 | 
			
		||||
print qq[\#define __GLIBTOP_STRUCTURES_H__];
 | 
			
		||||
print '';
 | 
			
		||||
print qq[\#include <glibtop.h>];
 | 
			
		||||
print '';
 | 
			
		||||
print qq[BEGIN_LIBGTOP_DECLS];
 | 
			
		||||
print '';
 | 
			
		||||
 | 
			
		||||
for ($nr = 0; $nr < $structure_count; $nr++) {
 | 
			
		||||
  $structure = $structures{$nr};
 | 
			
		||||
 | 
			
		||||
  printf (qq[\#define %-40s\t%d\n], 'GLIBTOP_STRUCTURE_'.&toupper($structure), $nr);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print '';
 | 
			
		||||
printf (qq[\#define %-40s\t%d\n], 'GLIBTOP_MAX_STRUCTURES', $structure_count);
 | 
			
		||||
print '';
 | 
			
		||||
print qq[END_LIBGTOP_DECLS];
 | 
			
		||||
print '';
 | 
			
		||||
print qq[\#endif /* __GLIBTOP_STRUCTURES_H__ */];
 | 
			
		||||
 | 
			
		||||
sub parse_features_def {
 | 
			
		||||
  local($line) = @_;
 | 
			
		||||
  @line_fields = split(/\|/, $line, 9999);
 | 
			
		||||
  $retval = $line_fields[1];
 | 
			
		||||
  $element_def = $line_fields[3];
 | 
			
		||||
  $feature = $line_fields[2];
 | 
			
		||||
  $param_def = $line_fields[4];
 | 
			
		||||
  
 | 
			
		||||
  $feature =~ s/^@//;
 | 
			
		||||
  $features{$feature} = $feature;
 | 
			
		||||
 | 
			
		||||
  $structures{$structure_count++} = 'glibtop_'.$feature;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub parse_structure_def {
 | 
			
		||||
  local($line) = @_;
 | 
			
		||||
  @line_fields = split(/\|/, $line, 9999);
 | 
			
		||||
  $name = $line_fields[1];
 | 
			
		||||
 | 
			
		||||
  $structures{$structure_count++} = $name;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,74 +0,0 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/cpu.h>
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
main (int argc, char *argv [])
 | 
			
		||||
{
 | 
			
		||||
    glibtop_client *client;
 | 
			
		||||
    glibtop_backend *backend_common;
 | 
			
		||||
    glibtop_backend *backend_sysdeps;
 | 
			
		||||
    GError *error = NULL;
 | 
			
		||||
    glibtop_cpu cpu;
 | 
			
		||||
 | 
			
		||||
    g_type_init ();
 | 
			
		||||
 | 
			
		||||
    client = glibtop_client_new ();
 | 
			
		||||
 | 
			
		||||
    backend_common = glibtop_backend_get ("glibtop-backend-common",
 | 
			
		||||
					  0, NULL, &error);
 | 
			
		||||
 | 
			
		||||
    if (error != NULL) {
 | 
			
		||||
	glibtop_client_propagate_warning (client, error);
 | 
			
		||||
	g_error_free (error);
 | 
			
		||||
	error = NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    g_message (G_STRLOC ": backend = %p", backend_common);
 | 
			
		||||
 | 
			
		||||
    if (backend_common != NULL)
 | 
			
		||||
	glibtop_client_add_backend (client, backend_common);
 | 
			
		||||
 | 
			
		||||
    backend_sysdeps = glibtop_backend_get ("glibtop-backend-sysdeps-stub",
 | 
			
		||||
					   0, NULL, &error);
 | 
			
		||||
 | 
			
		||||
    if (error != NULL) {
 | 
			
		||||
	glibtop_client_propagate_warning (client, error);
 | 
			
		||||
	g_error_free (error);
 | 
			
		||||
	error = NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    g_message (G_STRLOC ": backend = %p", backend_sysdeps);
 | 
			
		||||
 | 
			
		||||
    if (backend_sysdeps != NULL)
 | 
			
		||||
	glibtop_client_add_backend (client, backend_sysdeps);
 | 
			
		||||
 | 
			
		||||
    glibtop_get_cpu_l (client, &cpu);
 | 
			
		||||
 | 
			
		||||
    exit (0);
 | 
			
		||||
}
 | 
			
		||||
@@ -1,98 +0,0 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <glibtop/xmalloc.h>
 | 
			
		||||
 | 
			
		||||
#ifdef LIBGTOP_USE_GLIB_MALLOC
 | 
			
		||||
#include <glib.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Wrappers to malloc, calloc, realloc ... */
 | 
			
		||||
 | 
			
		||||
void *
 | 
			
		||||
glibtop_malloc_r (glibtop_server *server, size_t size)
 | 
			
		||||
{
 | 
			
		||||
#ifdef LIBGTOP_USE_GLIB_MALLOC
 | 
			
		||||
    return g_malloc0 (size);
 | 
			
		||||
#else
 | 
			
		||||
    void *buf = malloc (size);
 | 
			
		||||
	
 | 
			
		||||
    if (!buf)
 | 
			
		||||
	glibtop_error_io_r (server, "malloc %d bytes", size);
 | 
			
		||||
	
 | 
			
		||||
    return buf;
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void *
 | 
			
		||||
glibtop_calloc_r (glibtop_server *server, size_t nmemb, size_t size)
 | 
			
		||||
{
 | 
			
		||||
#ifdef LIBGTOP_USE_GLIB_MALLOC
 | 
			
		||||
    return g_malloc0 (size * nmemb);
 | 
			
		||||
#else
 | 
			
		||||
    void *buf = calloc (nmemb, size);
 | 
			
		||||
	
 | 
			
		||||
    if (!buf)
 | 
			
		||||
	glibtop_error_io_r (server, "calloc %d blocks (%d bytes each)",
 | 
			
		||||
			    nmemb, size);
 | 
			
		||||
	
 | 
			
		||||
    return buf;
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void *
 | 
			
		||||
glibtop_realloc_r (glibtop_server *server, void *ptr, size_t size)
 | 
			
		||||
{
 | 
			
		||||
#ifdef LIBGTOP_USE_GLIB_MALLOC
 | 
			
		||||
    return g_realloc (ptr, size);
 | 
			
		||||
#else
 | 
			
		||||
    void *buf = realloc (ptr, size);
 | 
			
		||||
	
 | 
			
		||||
    if (!buf)
 | 
			
		||||
	glibtop_error_io_r (server, "realloc %d bytes", size);
 | 
			
		||||
	
 | 
			
		||||
    return buf;
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char *
 | 
			
		||||
glibtop_strdup_r (glibtop_server *server, const char *string)
 | 
			
		||||
{
 | 
			
		||||
#ifdef LIBGTOP_USE_GLIB_MALLOC
 | 
			
		||||
    return g_strdup (string);
 | 
			
		||||
#else
 | 
			
		||||
    return strcpy (glibtop_malloc_r (server, strlen (string) + 1), string);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_free_r (glibtop_server *server, void *ptr)
 | 
			
		||||
{
 | 
			
		||||
#ifdef LIBGTOP_USE_GLIB_MALLOC
 | 
			
		||||
    g_free (ptr);
 | 
			
		||||
#else
 | 
			
		||||
    if (ptr) free ((void *) ptr);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
@@ -1,8 +0,0 @@
 | 
			
		||||
The indentation in LibGTop was done with the following command:
 | 
			
		||||
 | 
			
		||||
	find . -name \*.[ch] | xargs -i emacs -batch {} \
 | 
			
		||||
		-l /gnome/compile/libgtop/misc/format.el -f save-buffer
 | 
			
		||||
 | 
			
		||||
December 26, 1999
 | 
			
		||||
Martin
 | 
			
		||||
 | 
			
		||||
@@ -1,5 +0,0 @@
 | 
			
		||||
(setq c-basic-offset 4)
 | 
			
		||||
(if (not (word-search-forward "Mode: C" nil t))
 | 
			
		||||
    (insert-string "/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */\n\n"))
 | 
			
		||||
(mark-whole-buffer)
 | 
			
		||||
(indent-region (region-beginning) (region-end) nil)
 | 
			
		||||
							
								
								
									
										68
									
								
								po/ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										68
									
								
								po/ChangeLog
									
									
									
									
									
								
							@@ -1,71 +1,3 @@
 | 
			
		||||
2003-10-25  Christian Neumair  <chris@gnome-de.org>
 | 
			
		||||
 | 
			
		||||
	* de.po: Updated German translation.
 | 
			
		||||
 | 
			
		||||
2003-10-22   Vincent van Adrighem  <adrighem@gnome.org>
 | 
			
		||||
 | 
			
		||||
	* nl.po: Dutch translation updated by Vincent van Adrighem.
 | 
			
		||||
 | 
			
		||||
2003-10-22  Christian Rose  <menthos@menthos.com>
 | 
			
		||||
 | 
			
		||||
	* sv.po: Updated Swedish translation.
 | 
			
		||||
 | 
			
		||||
2003-10-21  Christian Neumair  <chris@gnome-de.org>
 | 
			
		||||
 | 
			
		||||
	* de.po: Updated German translation.
 | 
			
		||||
 | 
			
		||||
2003-10-21  Christian Rose  <menthos@menthos.com>
 | 
			
		||||
 | 
			
		||||
	* sv.po: Updated Swedish translation.
 | 
			
		||||
 | 
			
		||||
2003-10-19  Carlos Perelló Marín <carlos@gnome.org>
 | 
			
		||||
 | 
			
		||||
	* POTFILES.ignore: Removed, we use now POTFILES.skip
 | 
			
		||||
	
 | 
			
		||||
2003-10-01  Gustavo Maciel Dias Vieira  <gdvieira@zaz.com.br>
 | 
			
		||||
 | 
			
		||||
	* pt_BR.po: Applied revision by Augusta Marques da Silva
 | 
			
		||||
	<augusta.marques@gmx.net>.
 | 
			
		||||
 | 
			
		||||
2003-09-30  Laurent Dhima  <laurenti@alblinux.net>
 | 
			
		||||
 | 
			
		||||
	 * sq.po: Added Albanian translation.
 | 
			
		||||
 | 
			
		||||
2003-09-17  Fatih Demir <kabalak@gtranslator.org>
 | 
			
		||||
 | 
			
		||||
	* ta.po: Committed new Tamil translation by Dinesh.
 | 
			
		||||
 | 
			
		||||
2003-09-13  Carlos Perelló Marín <carlos@gnome.org>
 | 
			
		||||
 | 
			
		||||
	* es_ES.po, LEEME.es: Removed, it's only for one string that is a
 | 
			
		||||
	comment and procman is not using it. This modules is not maintained
 | 
			
		||||
	and all people tells that should die so I don't think that any other
 | 
			
		||||
	application will use it in the near future. This one is related with
 | 
			
		||||
	the bug #105676
 | 
			
		||||
 | 
			
		||||
2003-09-08  Mugurel Tudor  <mugurelu@go.ro>
 | 
			
		||||
 | 
			
		||||
	* ro.po: Updated Romanian translation by
 | 
			
		||||
		Mişu Moldovan  <dumol@go.ro>
 | 
			
		||||
 | 
			
		||||
2003-09-06  Taneem Ahmed  <taneem@bengalinux.org>
 | 
			
		||||
 | 
			
		||||
	* bn.po: Added Bangla translation by Vat
 | 
			
		||||
	of Ankur group <gnome-translation@bengalinux.org>.
 | 
			
		||||
 | 
			
		||||
2003-08-28  Pablo Gonzalo del Campo  <pablodc@bigfoot.com>
 | 
			
		||||
 | 
			
		||||
        * es.po: Revision of Spanish translation by
 | 
			
		||||
                 Francisco Javier F. Serrador <serrador@arrakis.es>.
 | 
			
		||||
 | 
			
		||||
2003-08-28  Alessio Frusciante  <algol@firenze.linux.it>
 | 
			
		||||
 | 
			
		||||
	* it.po: Updated Italian translation.
 | 
			
		||||
 | 
			
		||||
2003-08-25  Duarte Loreto <happyguy_pt@hotmail.com>
 | 
			
		||||
 | 
			
		||||
	* pt.po: Fixed typos in Portuguese translation.
 | 
			
		||||
 | 
			
		||||
2003-08-18  Metin Amiroff <metin@karegen.com>
 | 
			
		||||
 | 
			
		||||
	* az.po: Updated Azerbaijani translation.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										29
									
								
								po/LEEME.es
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								po/LEEME.es
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
[ This file explains why there is a incomplete es_ES.po in adition
 | 
			
		||||
  to the es.po; that is on purpose ]
 | 
			
		||||
 | 
			
		||||
El archivo para el locale es_ES solo existe porque en este paises se usa
 | 
			
		||||
una representaci<EFBFBD>n de los n<EFBFBD>meros diferente de la que se usa en los dem<EFBFBD>s
 | 
			
		||||
paises de habla espa<EFBFBD>ola, en el continente americano usan el sistema
 | 
			
		||||
anglosaj<EFBFBD>n, esdecir 1,000 en vez de 1.000 para 'mil' y como son m<EFBFBD>s los paises
 | 
			
		||||
que usan el sistema anglosaj<EFBFBD>n se ha dejado esa representaci<EFBFBD>n en el es.po.
 | 
			
		||||
 | 
			
		||||
Por ello solo es necesario traducir aquellas ocurrencias donde aparezcan
 | 
			
		||||
n<EFBFBD>meros; no hace falta perder el tiempo traduciendo en doble lo dem<EFBFBD>s;
 | 
			
		||||
el sistema de internacionalizaci<EFBFBD>n de GNU gettext es lo suficientemente
 | 
			
		||||
inteligente como para buscar las traducciones en la locale 'es' cuando no
 | 
			
		||||
las encuentra en una 'es_ES' m<EFBFBD>s espec<EFBFBD>fica.
 | 
			
		||||
 | 
			
		||||
Tambi<EFBFBD>n podriase crear un es_ES para traducir aquellos terminos que difieren
 | 
			
		||||
en Espa<EFBFBD>a y Am<EFBFBD>rica (ej: computadora/ordenador, archivo/fichero, <EFBFBD>cono/icono),
 | 
			
		||||
si alg<EFBFBD>n espa<EFBFBD>ol tiene ganas de encargarse de ello, bienvenido.
 | 
			
		||||
Notese que solo es necesario traducir aquellas cadenas de texto para las
 | 
			
		||||
cuales se usan terminos diferentes en Espa<EFBFBD>a; no es necesario traducir las
 | 
			
		||||
dem<EFBFBD>s, con que est<EFBFBD>n en la traducci<EFBFBD>n general 'es' ya basta. 
 | 
			
		||||
 
 | 
			
		||||
Pablo Saratxaga
 | 
			
		||||
<srtxg@chanae.alphanet.ch>
 | 
			
		||||
 | 
			
		||||
Actualizado por
 | 
			
		||||
Carlos Perell<EFBFBD> Mar<EFBFBD>n
 | 
			
		||||
<carlos@gnome-db.org>
 | 
			
		||||
 | 
			
		||||
@@ -1,248 +0,0 @@
 | 
			
		||||
# Makefile for program source directory in GNU NLS utilities package.
 | 
			
		||||
# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
 | 
			
		||||
#
 | 
			
		||||
# This file file be copied and used freely without restrictions.  It can
 | 
			
		||||
# be used in projects which are not available under the GNU Public License
 | 
			
		||||
# but which still want to provide support for the GNU gettext functionality.
 | 
			
		||||
# Please note that the actual code is *not* freely available.
 | 
			
		||||
 | 
			
		||||
PACKAGE = @LIBGTOP_PACKAGE@
 | 
			
		||||
VERSION = @VERSION@
 | 
			
		||||
 | 
			
		||||
SHELL = /bin/sh
 | 
			
		||||
@SET_MAKE@
 | 
			
		||||
 | 
			
		||||
srcdir = @srcdir@
 | 
			
		||||
top_srcdir = @top_srcdir@
 | 
			
		||||
VPATH = @srcdir@
 | 
			
		||||
 | 
			
		||||
prefix = @prefix@
 | 
			
		||||
exec_prefix = @exec_prefix@
 | 
			
		||||
datadir = $(prefix)/@DATADIRNAME@
 | 
			
		||||
localedir = $(datadir)/locale
 | 
			
		||||
gnulocaledir = $(prefix)/share/locale
 | 
			
		||||
gettextsrcdir = $(prefix)/share/gettext/po
 | 
			
		||||
subdir = po
 | 
			
		||||
 | 
			
		||||
INSTALL = @INSTALL@
 | 
			
		||||
INSTALL_DATA = @INSTALL_DATA@
 | 
			
		||||
MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@
 | 
			
		||||
 | 
			
		||||
CC = @CC@
 | 
			
		||||
GENCAT = @GENCAT@
 | 
			
		||||
GMSGFMT = PATH=../src:$$PATH @GMSGFMT@
 | 
			
		||||
MSGFMT = @MSGFMT@
 | 
			
		||||
XGETTEXT = PATH=../src:$$PATH @XGETTEXT@
 | 
			
		||||
MSGMERGE = PATH=../src:$$PATH msgmerge
 | 
			
		||||
 | 
			
		||||
DEFS = @DEFS@
 | 
			
		||||
CFLAGS = @CFLAGS@
 | 
			
		||||
CPPFLAGS = @CPPFLAGS@
 | 
			
		||||
 | 
			
		||||
INCLUDES = -I.. -I$(top_srcdir)/intl
 | 
			
		||||
 | 
			
		||||
COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
 | 
			
		||||
 | 
			
		||||
SOURCES = cat-id-tbl.c
 | 
			
		||||
POFILES = @POFILES@
 | 
			
		||||
GMOFILES = @GMOFILES@
 | 
			
		||||
DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \
 | 
			
		||||
stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
 | 
			
		||||
 | 
			
		||||
POTFILES = \
 | 
			
		||||
 | 
			
		||||
CATALOGS = @CATALOGS@
 | 
			
		||||
CATOBJEXT = @CATOBJEXT@
 | 
			
		||||
INSTOBJEXT = @INSTOBJEXT@
 | 
			
		||||
 | 
			
		||||
.SUFFIXES:
 | 
			
		||||
.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
 | 
			
		||||
 | 
			
		||||
.c.o:
 | 
			
		||||
	$(COMPILE) $<
 | 
			
		||||
 | 
			
		||||
.po.pox:
 | 
			
		||||
	$(MAKE) $(PACKAGE).pot
 | 
			
		||||
	$(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
 | 
			
		||||
 | 
			
		||||
.po.mo:
 | 
			
		||||
	$(MSGFMT) -o $@ $<
 | 
			
		||||
 | 
			
		||||
.po.gmo:
 | 
			
		||||
	file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
 | 
			
		||||
	  && rm -f $$file && $(GMSGFMT) -o $$file $<
 | 
			
		||||
 | 
			
		||||
.po.cat:
 | 
			
		||||
	sed -f ../intl/po2msg.sed < $< > $*.msg \
 | 
			
		||||
	  && rm -f $@ && $(GENCAT) $@ $*.msg
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
all: all-@USE_NLS@
 | 
			
		||||
 | 
			
		||||
all-yes: cat-id-tbl.c $(CATALOGS)
 | 
			
		||||
all-no:
 | 
			
		||||
 | 
			
		||||
$(srcdir)/$(PACKAGE).pot: $(POTFILES)
 | 
			
		||||
	$(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
 | 
			
		||||
	  --add-comments --keyword=_ --keyword=N_ \
 | 
			
		||||
	  --files-from=$(srcdir)/POTFILES.in \
 | 
			
		||||
	&& test ! -f $(PACKAGE).po \
 | 
			
		||||
	   || ( rm -f $(srcdir)/$(PACKAGE).pot \
 | 
			
		||||
		&& mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot )
 | 
			
		||||
 | 
			
		||||
$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
 | 
			
		||||
$(srcdir)/stamp-cat-id: $(PACKAGE).pot
 | 
			
		||||
	rm -f cat-id-tbl.tmp
 | 
			
		||||
	sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
 | 
			
		||||
		| sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
 | 
			
		||||
	if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
 | 
			
		||||
	  rm cat-id-tbl.tmp; \
 | 
			
		||||
	else \
 | 
			
		||||
	  echo cat-id-tbl.c changed; \
 | 
			
		||||
	  rm -f $(srcdir)/cat-id-tbl.c; \
 | 
			
		||||
	  mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
 | 
			
		||||
	fi
 | 
			
		||||
	cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
install: install-exec install-data
 | 
			
		||||
install-exec:
 | 
			
		||||
install-data: install-data-@USE_NLS@
 | 
			
		||||
install-data-no: all
 | 
			
		||||
install-data-yes: all
 | 
			
		||||
	if test -r "$(MKINSTALLDIRS)"; then \
 | 
			
		||||
	  $(MKINSTALLDIRS) $(datadir); \
 | 
			
		||||
	else \
 | 
			
		||||
	  $(SHELL) $(top_srcdir)/mkinstalldirs $(datadir); \
 | 
			
		||||
	fi
 | 
			
		||||
	@catalogs='$(CATALOGS)'; \
 | 
			
		||||
	for cat in $$catalogs; do \
 | 
			
		||||
	  cat=`basename $$cat`; \
 | 
			
		||||
	  case "$$cat" in \
 | 
			
		||||
	    *.gmo) destdir=$(gnulocaledir);; \
 | 
			
		||||
	    *)     destdir=$(localedir);; \
 | 
			
		||||
	  esac; \
 | 
			
		||||
	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
 | 
			
		||||
	  dir=$$destdir/$$lang/LC_MESSAGES; \
 | 
			
		||||
	  if test -r "$(MKINSTALLDIRS)"; then \
 | 
			
		||||
	    $(MKINSTALLDIRS) $$dir; \
 | 
			
		||||
	  else \
 | 
			
		||||
	    $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \
 | 
			
		||||
	  fi; \
 | 
			
		||||
	  if test -r $$cat; then \
 | 
			
		||||
	    $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
 | 
			
		||||
	    echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
 | 
			
		||||
	  else \
 | 
			
		||||
	    $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
 | 
			
		||||
	    echo "installing $(srcdir)/$$cat as" \
 | 
			
		||||
		 "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
 | 
			
		||||
	  fi; \
 | 
			
		||||
	  if test -r $$cat.m; then \
 | 
			
		||||
	    $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
 | 
			
		||||
	    echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
 | 
			
		||||
	  else \
 | 
			
		||||
	    if test -r $(srcdir)/$$cat.m ; then \
 | 
			
		||||
	      $(INSTALL_DATA) $(srcdir)/$$cat.m \
 | 
			
		||||
		$$dir/$(PACKAGE)$(INSTOBJEXT).m; \
 | 
			
		||||
	      echo "installing $(srcdir)/$$cat as" \
 | 
			
		||||
		   "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
 | 
			
		||||
	    else \
 | 
			
		||||
	      true; \
 | 
			
		||||
	    fi; \
 | 
			
		||||
	  fi; \
 | 
			
		||||
	done
 | 
			
		||||
	if test "$(PACKAGE)" = "gettext"; then \
 | 
			
		||||
	  if test -r "$(MKINSTALLDIRS)"; then \
 | 
			
		||||
	    $(MKINSTALLDIRS) $(gettextsrcdir); \
 | 
			
		||||
	  else \
 | 
			
		||||
	    $(SHELL) $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \
 | 
			
		||||
	  fi; \
 | 
			
		||||
	  $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
 | 
			
		||||
			  $(gettextsrcdir)/Makefile.in.in; \
 | 
			
		||||
	else \
 | 
			
		||||
	  : ; \
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
# Define this as empty until I found a useful application.
 | 
			
		||||
installcheck:
 | 
			
		||||
 | 
			
		||||
uninstall:
 | 
			
		||||
	catalogs='$(CATALOGS)'; \
 | 
			
		||||
	for cat in $$catalogs; do \
 | 
			
		||||
	  cat=`basename $$cat`; \
 | 
			
		||||
	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
 | 
			
		||||
	  rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
 | 
			
		||||
	  rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
 | 
			
		||||
	  rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
 | 
			
		||||
	  rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
 | 
			
		||||
	done
 | 
			
		||||
	rm -f $(gettextsrcdir)/po-Makefile.in.in
 | 
			
		||||
 | 
			
		||||
check: all
 | 
			
		||||
 | 
			
		||||
cat-id-tbl.o: ../intl/libgettext.h
 | 
			
		||||
 | 
			
		||||
dvi info tags TAGS ID:
 | 
			
		||||
 | 
			
		||||
mostlyclean:
 | 
			
		||||
	rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
 | 
			
		||||
	rm -fr *.o
 | 
			
		||||
 | 
			
		||||
clean: mostlyclean
 | 
			
		||||
 | 
			
		||||
distclean: clean
 | 
			
		||||
	rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
 | 
			
		||||
 | 
			
		||||
maintainer-clean: distclean
 | 
			
		||||
	@echo "This command is intended for maintainers to use;"
 | 
			
		||||
	@echo "it deletes files that may require special tools to rebuild."
 | 
			
		||||
	rm -f $(GMOFILES)
 | 
			
		||||
 | 
			
		||||
distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
 | 
			
		||||
dist distdir: update-po $(DISTFILES)
 | 
			
		||||
	dists="$(DISTFILES)"; \
 | 
			
		||||
	for file in $$dists; do \
 | 
			
		||||
	  ln $(srcdir)/$$file $(distdir) 2> /dev/null \
 | 
			
		||||
	    || cp -p $(srcdir)/$$file $(distdir); \
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
update-po: Makefile
 | 
			
		||||
	$(MAKE) $(PACKAGE).pot
 | 
			
		||||
	PATH=`pwd`/../src:$$PATH; \
 | 
			
		||||
	cd $(srcdir); \
 | 
			
		||||
	catalogs='$(CATALOGS)'; \
 | 
			
		||||
	for cat in $$catalogs; do \
 | 
			
		||||
	  cat=`basename $$cat`; \
 | 
			
		||||
	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
 | 
			
		||||
	  mv $$lang.po $$lang.old.po; \
 | 
			
		||||
	  echo "$$lang:"; \
 | 
			
		||||
	  if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
 | 
			
		||||
	    rm -f $$lang.old.po; \
 | 
			
		||||
	  else \
 | 
			
		||||
	    echo "msgmerge for $$cat failed!"; \
 | 
			
		||||
	    rm -f $$lang.po; \
 | 
			
		||||
	    mv $$lang.old.po $$lang.po; \
 | 
			
		||||
	  fi; \
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
POTFILES: POTFILES.in
 | 
			
		||||
	( if test 'x$(srcdir)' != 'x.'; then \
 | 
			
		||||
	    posrcprefix='$(top_srcdir)/'; \
 | 
			
		||||
	  else \
 | 
			
		||||
	    posrcprefix="../"; \
 | 
			
		||||
	  fi; \
 | 
			
		||||
	  rm -f $@-t $@ \
 | 
			
		||||
	    && (sed -e '/^#/d' -e '/^[ 	]*$$/d' \
 | 
			
		||||
		    -e "s@.*@	$$posrcprefix& \\\\@" < $(srcdir)/$@.in \
 | 
			
		||||
		| sed -e '$$s/\\$$//') > $@-t \
 | 
			
		||||
	    && chmod a-w $@-t \
 | 
			
		||||
	    && mv $@-t $@ )
 | 
			
		||||
 | 
			
		||||
Makefile: Makefile.in.in ../config.status POTFILES
 | 
			
		||||
	cd .. \
 | 
			
		||||
	  && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
 | 
			
		||||
	       $(SHELL) ./config.status
 | 
			
		||||
 | 
			
		||||
# Tell versions [3.59,3.63) of GNU make not to export all variables.
 | 
			
		||||
# Otherwise a system limit (for SysV at least) may be exceeded.
 | 
			
		||||
.NOEXPORT:
 | 
			
		||||
							
								
								
									
										6
									
								
								po/POTFILES.ignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								po/POTFILES.ignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
#Please remember + in front of the files that should be ignored
 | 
			
		||||
#Please keep these files in alphabetic order
 | 
			
		||||
 | 
			
		||||
#Shouldn't be translated according to Martin:
 | 
			
		||||
+kernel/table20/unistd-i386.h
 | 
			
		||||
+kernel/table21/unistd-i386.h
 | 
			
		||||
@@ -1,4 +0,0 @@
 | 
			
		||||
support/error.c
 | 
			
		||||
support/getopt.c
 | 
			
		||||
support/popt.c
 | 
			
		||||
support/popthelp.c
 | 
			
		||||
							
								
								
									
										106
									
								
								po/es.po
									
									
									
									
									
								
							
							
						
						
									
										106
									
								
								po/es.po
									
									
									
									
									
								
							@@ -1,53 +1,50 @@
 | 
			
		||||
# translation of libgtop.libgtop-GNOME-2-0-port.po to Spanish
 | 
			
		||||
# Translation into spanish of glibtop
 | 
			
		||||
# Pablo Saratxaga <srtxg@chanae.alphanet.ch>, 1998-2000
 | 
			
		||||
# FIXME: the strings still left empty are the ones I've no idea how
 | 
			
		||||
# to translate them; if anyone has a suggestion...
 | 
			
		||||
# Pablo Saratxaga <srtxg@chanae.alphanet.ch>, 1998-2000.
 | 
			
		||||
# Germán Poo Caamaño <gpoo@ubiobio.cl>, 2002.
 | 
			
		||||
# Germán Poo Caamaño <gpoo@ubiobio.cl>, 2002
 | 
			
		||||
# Pablo Saratxaga <srtxg@chanae.alphanet.ch>, 2002.
 | 
			
		||||
# Juan Manuel García Molina <juanma_gm@wanadoo.es>, 2002.
 | 
			
		||||
# Francisco Javier F. Serrador <serrador@arrakis.es>, 2003.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: libgtop.libgtop-GNOME-2-0-port\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2003-08-28 04:41+0200\n"
 | 
			
		||||
"PO-Revision-Date: 2003-08-28 11:48+0200\n"
 | 
			
		||||
"Last-Translator: Francisco Javier F. Serrador <serrador@arrakis.es>\n"
 | 
			
		||||
"Project-Id-Version: glibtop 1.1.1\n"
 | 
			
		||||
"POT-Creation-Date: 2002-06-02 13:22+0200\n"
 | 
			
		||||
"PO-Revision-Date: 2002-06-02 18:17+0100\n"
 | 
			
		||||
"Last-Translator: Juan Manuel García Molina <juanma_gm@wanadoo.es>\n"
 | 
			
		||||
"Language-Team: Spanish <traductores@es.gnome.org>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"First-Translator: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
 | 
			
		||||
"X-Generator: KBabel 1.0.2\n"
 | 
			
		||||
"X-Generator: KBabel 0.9.6\n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
#: examples/smp.c:68
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Ticks (%ld per second):"
 | 
			
		||||
msgstr "Tics (%ld por segundo):"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
msgid "Total"
 | 
			
		||||
msgstr "Total"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74 sysdeps/names/mem.c:47
 | 
			
		||||
#: examples/smp.c:71 sysdeps/names/mem.c:47
 | 
			
		||||
msgid "User"
 | 
			
		||||
msgstr "Usuario"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74 sysdeps/names/procuid.c:58
 | 
			
		||||
#: examples/smp.c:71 sysdeps/names/procuid.c:58
 | 
			
		||||
msgid "Nice"
 | 
			
		||||
msgstr "Nice"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
msgid "Sys"
 | 
			
		||||
msgstr "Sis"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
msgid "Idle"
 | 
			
		||||
msgstr "Inact"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:76
 | 
			
		||||
#: examples/smp.c:73
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"CPU          (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n"
 | 
			
		||||
@@ -56,36 +53,36 @@ msgstr ""
 | 
			
		||||
"CPU          (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n"
 | 
			
		||||
"\n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:80
 | 
			
		||||
#: examples/smp.c:77
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "CPU %3d      (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n"
 | 
			
		||||
msgstr "CPU %3d      (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:97
 | 
			
		||||
#: examples/smp.c:94
 | 
			
		||||
msgid "Percent:"
 | 
			
		||||
msgstr "Porcentaje:"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#: examples/smp.c:95
 | 
			
		||||
msgid "Total (%)"
 | 
			
		||||
msgstr "Total (%)"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#: examples/smp.c:95
 | 
			
		||||
msgid "User (%)"
 | 
			
		||||
msgstr "Usuario (%)"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#: examples/smp.c:95
 | 
			
		||||
msgid "Nice (%)"
 | 
			
		||||
msgstr "Nice (%)"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#: examples/smp.c:95
 | 
			
		||||
msgid "Sys (%)"
 | 
			
		||||
msgstr "Sis (%)"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:99
 | 
			
		||||
#: examples/smp.c:96
 | 
			
		||||
msgid "Idle (%)"
 | 
			
		||||
msgstr "Inact (%)"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:101
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"CPU          (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"
 | 
			
		||||
@@ -94,12 +91,12 @@ msgstr ""
 | 
			
		||||
"CPU          (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"
 | 
			
		||||
"\n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:117
 | 
			
		||||
#: examples/smp.c:114
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "CPU %3d      (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"
 | 
			
		||||
msgstr "CPU %3d      (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:123
 | 
			
		||||
#: examples/smp.c:120
 | 
			
		||||
msgid "Spin:"
 | 
			
		||||
msgstr "Spin:"
 | 
			
		||||
 | 
			
		||||
@@ -122,47 +119,46 @@ msgstr "leídos %d bytes de datos"
 | 
			
		||||
msgid "write %d bytes"
 | 
			
		||||
msgstr "escritos %d bytes"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:453
 | 
			
		||||
#: src/daemon/gnuserv.c:448
 | 
			
		||||
msgid "Enable debugging"
 | 
			
		||||
msgstr "Activar depuración"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:453
 | 
			
		||||
#: src/daemon/gnuserv.c:448
 | 
			
		||||
msgid "DEBUG"
 | 
			
		||||
msgstr "DEPURACIÓN"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:455
 | 
			
		||||
#: src/daemon/gnuserv.c:450
 | 
			
		||||
msgid "Enable verbose output"
 | 
			
		||||
msgstr "Activa salida detallada"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:455
 | 
			
		||||
#: src/daemon/gnuserv.c:450
 | 
			
		||||
msgid "VERBOSE"
 | 
			
		||||
msgstr "DETALLADO"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:457
 | 
			
		||||
#: src/daemon/gnuserv.c:452
 | 
			
		||||
msgid "Don't fork into background"
 | 
			
		||||
msgstr "No se pudo abrir un proceso en segundo plano"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:457
 | 
			
		||||
#: src/daemon/gnuserv.c:452
 | 
			
		||||
msgid "NO-DAEMON"
 | 
			
		||||
msgstr "NO-DAEMON"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:459
 | 
			
		||||
#: src/daemon/gnuserv.c:454
 | 
			
		||||
msgid "Invoked from inetd"
 | 
			
		||||
msgstr "Invocado desde inetd"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:459
 | 
			
		||||
#: src/daemon/gnuserv.c:454
 | 
			
		||||
msgid "INETD"
 | 
			
		||||
msgstr "INETD"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:493
 | 
			
		||||
#: src/daemon/gnuserv.c:488
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Error on option %s: %s.\n"
 | 
			
		||||
"Run '%s --help' to see a full list of available command line options.\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Error con la opción %s: %s.\n"
 | 
			
		||||
"Ejecute '%s --help' para ver una lista completa de las opciones "
 | 
			
		||||
"disponibles.\n"
 | 
			
		||||
"Ejecute '%s --help' para ver una lista completa de las opciones disponibles.\n"
 | 
			
		||||
 | 
			
		||||
#: support/error.c:109
 | 
			
		||||
msgid "Unknown system error"
 | 
			
		||||
@@ -350,7 +346,7 @@ msgstr "Último PID"
 | 
			
		||||
#: sysdeps/names/loadavg.c:47
 | 
			
		||||
msgid "Number of jobs running simultaneously averaged over 1, 5 and 15 minutes"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Cantidad de procesos ejecutándose simultáneamente, media de los últimos 1, 5 y "
 | 
			
		||||
"Cantidad de procesos corriendo simultáneamente, media de los últimos 1, 5 y "
 | 
			
		||||
"15 minutos"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/loadavg.c:48
 | 
			
		||||
@@ -379,7 +375,7 @@ msgstr "Memoria compartida"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/mem.c:45
 | 
			
		||||
msgid "Buffers"
 | 
			
		||||
msgstr "Búferes"
 | 
			
		||||
msgstr "Búfers"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/mem.c:46
 | 
			
		||||
msgid "Cached"
 | 
			
		||||
@@ -407,7 +403,7 @@ msgstr "Memoria compartida (en KB)"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/mem.c:57
 | 
			
		||||
msgid "Size of buffers kB"
 | 
			
		||||
msgstr "Tamaño de los búferes (en KB)"
 | 
			
		||||
msgstr "Tamaño de los búfers (en KB)"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/mem.c:58
 | 
			
		||||
msgid "Size of cached memory in kB"
 | 
			
		||||
@@ -485,7 +481,7 @@ msgstr "Dirección"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/netload.c:49 sysdeps/names/netload.c:67
 | 
			
		||||
msgid "Packets In"
 | 
			
		||||
msgstr "Paquetes de entrada"
 | 
			
		||||
msgstr "Páquetes de entrada"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/netload.c:50 sysdeps/names/netload.c:68
 | 
			
		||||
msgid "Packets Out"
 | 
			
		||||
@@ -664,8 +660,8 @@ msgid ""
 | 
			
		||||
"textual name.  (If you have an up-to-date /etc/psdatabase, then try ps -l to "
 | 
			
		||||
"see the WCHAN field in action)"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Este es el «canal» en el cual el proceso está esperando.  Esta es la "
 | 
			
		||||
"dirección de una llamada de sistema, y puede ser buscada en una lista de "
 | 
			
		||||
"Este es el \"canal\" en el cual el proceso está esperando.  Esta es la "
 | 
			
		||||
"dirección de una llamada sistema, y puede ser buscada en una lista de "
 | 
			
		||||
"nombres si necesita un nombre textual. (Si tiene un /etc/psdatabasa "
 | 
			
		||||
"actualizado, entonces pruebe \"ps -l\" para ver el campo WCHAN en acción)"
 | 
			
		||||
 | 
			
		||||
@@ -704,7 +700,7 @@ msgstr "Cantidad de páginas de memoria virtual"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procmem.c:55
 | 
			
		||||
msgid "Number of resident set (non-swapped) pages"
 | 
			
		||||
msgstr "Cantidad de páginas de conjuntos residentes (que no están en intercambio)"
 | 
			
		||||
msgstr "Cantidad de páginas de conjuntos residentes (que no están en swap)"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procmem.c:56
 | 
			
		||||
msgid "Number of pages of shared (mmap'd) memory"
 | 
			
		||||
@@ -720,7 +716,7 @@ msgstr ""
 | 
			
		||||
"Cantidad de páginas del proceso en memoria real, menos 3 par administración. "
 | 
			
		||||
"Esto es solo las páginas que se cuentan entre texto, datos, o espacio de "
 | 
			
		||||
"pila. Esto no incluye páginas que no han sido cargadas a la demanda, o que "
 | 
			
		||||
"se encuentran en el dispositivo de intercambio."
 | 
			
		||||
"se encuentran en el dispositivo de swap."
 | 
			
		||||
 | 
			
		||||
# In México, Dominican Republic, Guatemala, Honduras, Panama, Peru
 | 
			
		||||
# and El Salvador, Number formats are the same as in the US, so no
 | 
			
		||||
@@ -1108,15 +1104,15 @@ msgstr "Total máximo de memoria compartida"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/swap.c:39 sysdeps/names/swap.c:48
 | 
			
		||||
msgid "Total Swap Space"
 | 
			
		||||
msgstr "Espacio de intercambio total"
 | 
			
		||||
msgstr "Espacio de swap total"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/swap.c:40 sysdeps/names/swap.c:49
 | 
			
		||||
msgid "Used Swap Space"
 | 
			
		||||
msgstr "Espacio de intercambio usado"
 | 
			
		||||
msgstr "Espacio de swap usado"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/swap.c:41 sysdeps/names/swap.c:50
 | 
			
		||||
msgid "Free Swap Space"
 | 
			
		||||
msgstr "Espacio de intercambio libre"
 | 
			
		||||
msgstr "Espacio de swap libre"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/swap.c:42
 | 
			
		||||
msgid "Page In"
 | 
			
		||||
@@ -1129,18 +1125,18 @@ msgstr "Páginas salidas"
 | 
			
		||||
#: sysdeps/names/swap.c:51
 | 
			
		||||
msgid "Total number of swap pages that have been brought in since system boot"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Cantidad total de páginas que han sido entradas al intercambio, desde el inicio del "
 | 
			
		||||
"Cantidad total de páginas que han sido entradas al swap, desde el inicio del "
 | 
			
		||||
"sistema"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/swap.c:53
 | 
			
		||||
msgid "Total number of swap pages that have been brought out since system boot"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Cantidad total de páginas que han sido sacadas del intercambio, desde el inicio del "
 | 
			
		||||
"Cantidad total de páginas que han sido sacadas del swap, desde el inicio del "
 | 
			
		||||
"sistema"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/sysdeps.c:49 sysdeps/names/sysdeps.c:76
 | 
			
		||||
msgid "Server Features"
 | 
			
		||||
msgstr "Características del servidor"
 | 
			
		||||
msgstr "Particularidades del Servidor"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/sysdeps.c:50 sysdeps/names/sysdeps.c:77
 | 
			
		||||
msgid "CPU Usage"
 | 
			
		||||
@@ -1152,7 +1148,7 @@ msgstr "Uso de la memoria"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/sysdeps.c:52 sysdeps/names/sysdeps.c:79
 | 
			
		||||
msgid "Swap Usage"
 | 
			
		||||
msgstr "Uso del intercambio"
 | 
			
		||||
msgstr "Uso del swap"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/sysdeps.c:53 sysdeps/names/sysdeps.c:80
 | 
			
		||||
msgid "System Uptime"
 | 
			
		||||
@@ -1240,7 +1236,7 @@ msgstr "Lista de los sistemas de archivos actualmente montados"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/uptime.c:38
 | 
			
		||||
msgid "Uptime"
 | 
			
		||||
msgstr "Tiempo activo"
 | 
			
		||||
msgstr "Uptime"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/uptime.c:39
 | 
			
		||||
msgid "Idletime"
 | 
			
		||||
@@ -1286,7 +1282,7 @@ msgstr "Error EMT"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/osf1/siglist.c:35 sysdeps/sun4/siglist.c:35
 | 
			
		||||
msgid "Floating-point exception"
 | 
			
		||||
msgstr "Excepción de coma flotante"
 | 
			
		||||
msgstr "Excepción de punto flotante"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/osf1/siglist.c:36 sysdeps/sun4/siglist.c:36
 | 
			
		||||
msgid "Kill"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,93 +1,92 @@
 | 
			
		||||
# Tamil translation of Tamil Libgtop 2.4.
 | 
			
		||||
# Copyright (C) 2003 Free Software Foundation, Inc.
 | 
			
		||||
# Dinesh Nadarajah <n_dinesh@yahoo.com>, 2003.
 | 
			
		||||
# 
 | 
			
		||||
# 
 | 
			
		||||
# Spain diffs with es.po for libgtop
 | 
			
		||||
# Copyright (C) 2002 Free Software Foundation, Inc.
 | 
			
		||||
# Carlos Perelló Marín <carlos@gnome-db.org>, 2002.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr "Project-Id-Version: Tamil Libgtop 2.4"
 | 
			
		||||
"POT-Creation-Date: 2003-09-16 17:19-0500\n"
 | 
			
		||||
"PO-Revision-Date: 2003-09-16 17:19-0500\n"
 | 
			
		||||
"Last-Translator: Dinesh Nadarajah <n_dinesh@yahoo.com>\n"
 | 
			
		||||
"Language-Team: Tamil <tamilinix@yahoogroups.com>\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: glibtop 1.90.2\n"
 | 
			
		||||
"POT-Creation-Date: 2002-05-28 15:54+0200\n"
 | 
			
		||||
"PO-Revision-Date: 2002-05-28 15:50+0200\n"
 | 
			
		||||
"Last-Translator: Carlos Perelló Marín <carlos@gnome-db.org>\n"
 | 
			
		||||
"Language-Team: Spanish <traductores@es.gnome.org>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
#: examples/smp.c:68
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Ticks (%ld per second):"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
msgid "Total"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74 sysdeps/names/mem.c:47
 | 
			
		||||
#: examples/smp.c:71 sysdeps/names/mem.c:47
 | 
			
		||||
msgid "User"
 | 
			
		||||
msgstr "பயனர்"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74 sysdeps/names/procuid.c:58
 | 
			
		||||
#: examples/smp.c:71 sysdeps/names/procuid.c:58
 | 
			
		||||
msgid "Nice"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
msgid "Sys"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
msgid "Idle"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:76
 | 
			
		||||
#: examples/smp.c:73
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"CPU          (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n"
 | 
			
		||||
"\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:80
 | 
			
		||||
#: examples/smp.c:77
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "CPU %3d      (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:97
 | 
			
		||||
#: examples/smp.c:94
 | 
			
		||||
msgid "Percent:"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#: examples/smp.c:95
 | 
			
		||||
msgid "Total (%)"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#: examples/smp.c:95
 | 
			
		||||
msgid "User (%)"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#: examples/smp.c:95
 | 
			
		||||
msgid "Nice (%)"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#: examples/smp.c:95
 | 
			
		||||
msgid "Sys (%)"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:99
 | 
			
		||||
#: examples/smp.c:96
 | 
			
		||||
msgid "Idle (%)"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:101
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"CPU          (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"
 | 
			
		||||
"\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:117
 | 
			
		||||
#: examples/smp.c:114
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "CPU %3d      (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:123
 | 
			
		||||
#: examples/smp.c:120
 | 
			
		||||
msgid "Spin:"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@@ -110,39 +109,39 @@ msgstr ""
 | 
			
		||||
msgid "write %d bytes"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:453
 | 
			
		||||
#: src/daemon/gnuserv.c:448
 | 
			
		||||
msgid "Enable debugging"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:453
 | 
			
		||||
#: src/daemon/gnuserv.c:448
 | 
			
		||||
msgid "DEBUG"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:455
 | 
			
		||||
#: src/daemon/gnuserv.c:450
 | 
			
		||||
msgid "Enable verbose output"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:455
 | 
			
		||||
#: src/daemon/gnuserv.c:450
 | 
			
		||||
msgid "VERBOSE"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:457
 | 
			
		||||
#: src/daemon/gnuserv.c:452
 | 
			
		||||
msgid "Don't fork into background"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:457
 | 
			
		||||
#: src/daemon/gnuserv.c:452
 | 
			
		||||
msgid "NO-DAEMON"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:459
 | 
			
		||||
#: src/daemon/gnuserv.c:454
 | 
			
		||||
msgid "Invoked from inetd"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:459
 | 
			
		||||
#: src/daemon/gnuserv.c:454
 | 
			
		||||
msgid "INETD"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:493
 | 
			
		||||
#: src/daemon/gnuserv.c:488
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Error on option %s: %s.\n"
 | 
			
		||||
@@ -318,7 +317,7 @@ msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/loadavg.c:39
 | 
			
		||||
msgid "Load Average"
 | 
			
		||||
msgstr "சுமாராக ஏற்று"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/loadavg.c:40
 | 
			
		||||
msgid "Running Tasks"
 | 
			
		||||
@@ -464,7 +463,7 @@ msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/netload.c:48 sysdeps/names/netload.c:66
 | 
			
		||||
msgid "Address"
 | 
			
		||||
msgstr "_முகவரி"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/netload.c:49 sysdeps/names/netload.c:67
 | 
			
		||||
msgid "Packets In"
 | 
			
		||||
@@ -532,7 +531,7 @@ msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procargs.c:38 sysdeps/names/procmem.c:47
 | 
			
		||||
msgid "Size"
 | 
			
		||||
msgstr "அளவு"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procargs.c:43
 | 
			
		||||
msgid "Length in bytes of the returned string."
 | 
			
		||||
@@ -681,10 +680,21 @@ msgid ""
 | 
			
		||||
"which are swapped out."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# In México, Dominican Republic, Guatemala, Honduras, Panama, Peru
 | 
			
		||||
# and El Salvador, Number formats are the same as in the US, so no
 | 
			
		||||
# translation is required for them (the use es.po string).
 | 
			
		||||
# Spain use "." chars instead of "," so the msgstr MUST be filled; otherwise
 | 
			
		||||
# it will default to es.po which uses the US format for numbers.
 | 
			
		||||
# On the other hand, strings that are the same here and in es.po can
 | 
			
		||||
# be left out.
 | 
			
		||||
#
 | 
			
		||||
#: sysdeps/names/procmem.c:62
 | 
			
		||||
msgid ""
 | 
			
		||||
"Current limit in bytes on the rss of the process (usually 2,147,483,647)."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Límite actual en bytes de conjunto compartido (RSS) del proceso "
 | 
			
		||||
"(habitualmente 2.147.483.647)."
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procsegment.c:42
 | 
			
		||||
msgid "Text_RSS"
 | 
			
		||||
@@ -788,7 +798,7 @@ msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procstate.c:40
 | 
			
		||||
msgid "State"
 | 
			
		||||
msgstr "நிலமை"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procstate.c:40
 | 
			
		||||
msgid "UID"
 | 
			
		||||
@@ -1210,7 +1220,7 @@ msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/osf1/siglist.c:30 sysdeps/sun4/siglist.c:30
 | 
			
		||||
msgid "Quit"
 | 
			
		||||
msgstr "வெளிச்செல்"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/osf1/siglist.c:31 sysdeps/sun4/siglist.c:31
 | 
			
		||||
msgid "Illegal instruction"
 | 
			
		||||
@@ -1266,7 +1276,7 @@ msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/osf1/siglist.c:44 sysdeps/sun4/siglist.c:44
 | 
			
		||||
msgid "Stop"
 | 
			
		||||
msgstr "நிறுத்து"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/osf1/siglist.c:45 sysdeps/sun4/siglist.c:45
 | 
			
		||||
msgid "Keyboard stop"
 | 
			
		||||
@@ -1323,4 +1333,3 @@ msgstr ""
 | 
			
		||||
#: sysdeps/osf1/siglist.c:58 sysdeps/sun4/siglist.c:58
 | 
			
		||||
msgid "User defined signal 2"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										119
									
								
								po/it.po
									
									
									
									
									
								
							
							
						
						
									
										119
									
								
								po/it.po
									
									
									
									
									
								
							@@ -5,9 +5,8 @@
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: libgtop\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2003-08-28 13:59+0200\n"
 | 
			
		||||
"PO-Revision-Date: 2003-08-28 14:23+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2003-01-25 08:30+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2003-01-25 15:51+0100\n"
 | 
			
		||||
"Last-Translator: Alessio Frusciante <algol@firenze.linux.it>\n"
 | 
			
		||||
"Language-Team: Italian <tp@lists.linux.it>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
@@ -17,7 +16,7 @@ msgstr ""
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Ticks (%ld per second):"
 | 
			
		||||
msgstr "Tick (%ld per secondo):"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74
 | 
			
		||||
msgid "Total"
 | 
			
		||||
@@ -93,68 +92,67 @@ msgstr "CPU %3d      (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:123
 | 
			
		||||
msgid "Spin:"
 | 
			
		||||
msgstr "Spin:"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: lib/read.c:75
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "read %d bytes"
 | 
			
		||||
msgstr "letti %d byte"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: lib/read_data.c:49
 | 
			
		||||
msgid "read data size"
 | 
			
		||||
msgstr "dimensione dei dati letti"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: lib/read_data.c:66
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "read data %d bytes"
 | 
			
		||||
msgstr "letti %d byte di dati"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: lib/write.c:48
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "write %d bytes"
 | 
			
		||||
msgstr "scrittura di %d byte"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:453
 | 
			
		||||
#: src/daemon/gnuserv.c:448
 | 
			
		||||
msgid "Enable debugging"
 | 
			
		||||
msgstr "Abilita debug"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:453
 | 
			
		||||
#: src/daemon/gnuserv.c:448
 | 
			
		||||
msgid "DEBUG"
 | 
			
		||||
msgstr "DEBUG"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:455
 | 
			
		||||
#: src/daemon/gnuserv.c:450
 | 
			
		||||
msgid "Enable verbose output"
 | 
			
		||||
msgstr "Abilita output prolisso"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:455
 | 
			
		||||
#: src/daemon/gnuserv.c:450
 | 
			
		||||
msgid "VERBOSE"
 | 
			
		||||
msgstr "VERBOSE"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:457
 | 
			
		||||
#: src/daemon/gnuserv.c:452
 | 
			
		||||
msgid "Don't fork into background"
 | 
			
		||||
msgstr "Non fare fork in background"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:457
 | 
			
		||||
#: src/daemon/gnuserv.c:452
 | 
			
		||||
msgid "NO-DAEMON"
 | 
			
		||||
msgstr "NO-DAEMON"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:459
 | 
			
		||||
#: src/daemon/gnuserv.c:454
 | 
			
		||||
msgid "Invoked from inetd"
 | 
			
		||||
msgstr "Invocato da inetd"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:459
 | 
			
		||||
#: src/daemon/gnuserv.c:454
 | 
			
		||||
msgid "INETD"
 | 
			
		||||
msgstr "INETD"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:493
 | 
			
		||||
#: src/daemon/gnuserv.c:488
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Error on option %s: %s.\n"
 | 
			
		||||
"Run '%s --help' to see a full list of available command line options.\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Errore nell'opzione %s: %s.\n"
 | 
			
		||||
"Eseguire '%s --help' per vedere una lista completa delle opzioni per la "
 | 
			
		||||
"linea di comando.\n"
 | 
			
		||||
"Eseguire '%s --help' per vedere una lista completa delle opzioni per la linea di comando.\n"
 | 
			
		||||
 | 
			
		||||
#: support/error.c:109
 | 
			
		||||
msgid "Unknown system error"
 | 
			
		||||
@@ -249,51 +247,51 @@ msgstr "Tempo di CPU in idle"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/cpu.c:48
 | 
			
		||||
msgid "Tick Frequency"
 | 
			
		||||
msgstr "Frequenza dei tick"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/cpu.c:49
 | 
			
		||||
msgid "SMP Total CPU Time"
 | 
			
		||||
msgstr "Tempo di CPU totale SMP"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/cpu.c:50
 | 
			
		||||
msgid "SMP CPU Time in User Mode"
 | 
			
		||||
msgstr "Tempo di CPU SMP in modalit? utente"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/cpu.c:51
 | 
			
		||||
msgid "SMP CPU Time in User Mode (nice)"
 | 
			
		||||
msgstr "Tempo di CPU SMP in modalit? utente (nice)"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/cpu.c:52
 | 
			
		||||
msgid "SMP CPU Time in System Mode"
 | 
			
		||||
msgstr "Tempo di CPU SMP in modalit? di sistema"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/cpu.c:53
 | 
			
		||||
msgid "SMP CPU Time in the Idle Task"
 | 
			
		||||
msgstr "Tempo di CPU SMP in idle"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/cpu.c:58 sysdeps/names/cpu.c:64
 | 
			
		||||
msgid "Number of clock ticks since system boot"
 | 
			
		||||
msgstr "Numero di tick dall'avvio del sistema"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/cpu.c:59 sysdeps/names/cpu.c:65
 | 
			
		||||
msgid "Number of clock ticks the system spent in user mode"
 | 
			
		||||
msgstr "Numero di tick trascorsi in modalit? utente"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/cpu.c:60 sysdeps/names/cpu.c:66
 | 
			
		||||
msgid "Number of clock ticks the system spent in user mode (nice)"
 | 
			
		||||
msgstr "Numero di tick trascorsi in modalit? utente (nice)"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/cpu.c:61 sysdeps/names/cpu.c:67
 | 
			
		||||
msgid "Number of clock ticks the system spent in system mode"
 | 
			
		||||
msgstr "Numero di tick trascorsi in modalit? di sistema"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/cpu.c:62 sysdeps/names/cpu.c:68
 | 
			
		||||
msgid "Number of clock ticks the system spent in the idle task"
 | 
			
		||||
msgstr "Numero di tick trascorsi in idle"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/cpu.c:63
 | 
			
		||||
msgid "Tick frequency (default is 100)"
 | 
			
		||||
msgstr "Frequenza dei tick (il valore predefinito è 100)"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/fsusage.c:39 sysdeps/names/fsusage.c:48
 | 
			
		||||
msgid "Total blocks"
 | 
			
		||||
@@ -308,10 +306,12 @@ msgid "Available blocks"
 | 
			
		||||
msgstr "Blocchi disponibili"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/fsusage.c:42 sysdeps/names/fsusage.c:51
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Total file nodes"
 | 
			
		||||
msgstr "Nodi file totali"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/fsusage.c:43 sysdeps/names/fsusage.c:52
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Free file nodes"
 | 
			
		||||
msgstr "Nodi file liberi"
 | 
			
		||||
 | 
			
		||||
@@ -328,10 +328,12 @@ msgid "Load Average"
 | 
			
		||||
msgstr "Media di carico"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/loadavg.c:40
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Running Tasks"
 | 
			
		||||
msgstr "Processi in esecuzione"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/loadavg.c:41
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Number of Tasks"
 | 
			
		||||
msgstr "Numero di processi"
 | 
			
		||||
 | 
			
		||||
@@ -344,6 +346,7 @@ msgid "Number of jobs running simultaneously averaged over 1, 5 and 15 minutes"
 | 
			
		||||
msgstr "Numero di job eseguiti simultaneamente (media su 1, 5 e 15 minuti)"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/loadavg.c:48
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Number of tasks currently running"
 | 
			
		||||
msgstr "Numero di processi attualmente in esecuzione"
 | 
			
		||||
 | 
			
		||||
@@ -373,11 +376,11 @@ msgstr "Buffer"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/mem.c:46
 | 
			
		||||
msgid "Cached"
 | 
			
		||||
msgstr "In cache"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/mem.c:48
 | 
			
		||||
msgid "Locked"
 | 
			
		||||
msgstr "Bloccata"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/mem.c:53
 | 
			
		||||
msgid "Total physical memory in kB"
 | 
			
		||||
@@ -401,7 +404,7 @@ msgstr "Dimensione dei buffer in kB"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/mem.c:58
 | 
			
		||||
msgid "Size of cached memory in kB"
 | 
			
		||||
msgstr "Dimensione della memoria in cache in kB"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/mem.c:59
 | 
			
		||||
msgid "Memory used from user processes in kB"
 | 
			
		||||
@@ -409,7 +412,7 @@ msgstr "Memoria usata nei processi utente in kB"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/mem.c:60
 | 
			
		||||
msgid "Memory in locked pages in kB"
 | 
			
		||||
msgstr "Memoria in pagine bloccate in kB"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/mountlist.c:38 sysdeps/names/mountlist.c:45
 | 
			
		||||
#: sysdeps/names/proclist.c:38 sysdeps/names/proclist.c:45
 | 
			
		||||
@@ -455,11 +458,11 @@ msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/msg_limits.c:46 sysdeps/names/msg_limits.c:57
 | 
			
		||||
msgid "Number of system message headers"
 | 
			
		||||
msgstr "Numero di intestazioni dei messaggi di sistema"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/netload.c:45 sysdeps/names/netload.c:63
 | 
			
		||||
msgid "Interface Flags"
 | 
			
		||||
msgstr "Flag delle interfacce"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/netload.c:46
 | 
			
		||||
msgid "MTU"
 | 
			
		||||
@@ -515,7 +518,7 @@ msgstr "Collisioni"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/netload.c:64
 | 
			
		||||
msgid "Maximum Transfer Unit"
 | 
			
		||||
msgstr "Massima unit? di trasferimento"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/ppp.c:38 sysdeps/names/ppp.c:45
 | 
			
		||||
msgid "PPP State"
 | 
			
		||||
@@ -543,7 +546,7 @@ msgstr "Dimensioni"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procargs.c:43
 | 
			
		||||
msgid "Length in bytes of the returned string."
 | 
			
		||||
msgstr "Lunghezza in byte della stringa restituita."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/prockernel.c:42
 | 
			
		||||
msgid "K_Flags"
 | 
			
		||||
@@ -620,12 +623,11 @@ msgstr ""
 | 
			
		||||
 | 
			
		||||
#. KStk_ESP
 | 
			
		||||
#: sysdeps/names/prockernel.c:71
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid ""
 | 
			
		||||
"The current value of esp (32-bit stack pointer), as found in the kernel "
 | 
			
		||||
"stack page for the process."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Il valore di ESP (stack pointer a 32 bit) come fornito dalla pagina dello "
 | 
			
		||||
"stack per il processo."
 | 
			
		||||
msgstr "Il valore di ESP (stack pointer a 32 bit)"
 | 
			
		||||
 | 
			
		||||
#. KStk_EIP
 | 
			
		||||
#: sysdeps/names/prockernel.c:74
 | 
			
		||||
@@ -656,7 +658,7 @@ msgstr "Residente"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procmem.c:47
 | 
			
		||||
msgid "Share"
 | 
			
		||||
msgstr "Condivisa"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procmem.c:48
 | 
			
		||||
msgid "Resident Set Size"
 | 
			
		||||
@@ -790,7 +792,7 @@ msgstr "Maschera dei segnali ignorati"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procsignal.c:48
 | 
			
		||||
msgid "Mask of caught signals"
 | 
			
		||||
msgstr "Maschera dei segnali catturati"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procstate.c:40
 | 
			
		||||
msgid "Cmd"
 | 
			
		||||
@@ -850,7 +852,7 @@ msgstr "CSTime"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/proctime.c:45
 | 
			
		||||
msgid "TimeOut"
 | 
			
		||||
msgstr "TimeOut"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/proctime.c:45
 | 
			
		||||
msgid "It_Real_Value"
 | 
			
		||||
@@ -904,15 +906,15 @@ msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/proctime.c:60
 | 
			
		||||
msgid "Tick frequency"
 | 
			
		||||
msgstr "Frequenza dei tick"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/proctime.c:61
 | 
			
		||||
msgid "SMP user-mode CPU time accumulated by process"
 | 
			
		||||
msgstr "Tempo di CPU SMP modalit? utente accumulato dal processo"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/proctime.c:62
 | 
			
		||||
msgid "SMP kernel-mode CPU time accumulated by process"
 | 
			
		||||
msgstr "Tempo di CPU SMP modalit? kernel accumulato dal processo "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procuid.c:56
 | 
			
		||||
msgid "Uid"
 | 
			
		||||
@@ -1096,7 +1098,7 @@ msgstr "Totale di pagine di swap scaricate dall'avvio del sistema"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/sysdeps.c:49 sysdeps/names/sysdeps.c:76
 | 
			
		||||
msgid "Server Features"
 | 
			
		||||
msgstr "Funzionalit? del server"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/sysdeps.c:50 sysdeps/names/sysdeps.c:77
 | 
			
		||||
msgid "CPU Usage"
 | 
			
		||||
@@ -1208,8 +1210,7 @@ msgstr "Tempo in secondi dall'avvio del sistema"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/uptime.c:45
 | 
			
		||||
msgid "Time in seconds the system spent in the idle task since system boot"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Tempo in secondi che il sistema ha passato in idle dall'avvio del sistema"
 | 
			
		||||
msgstr "Tempo in secondi che il sistema ha passato in idle dall'avvio del sistema"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/osf1/siglist.c:28 sysdeps/sun4/siglist.c:28
 | 
			
		||||
msgid "Hangup"
 | 
			
		||||
@@ -1289,27 +1290,27 @@ msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/osf1/siglist.c:47 sysdeps/sun4/siglist.c:47
 | 
			
		||||
msgid "Child status has changed"
 | 
			
		||||
msgstr "Lo stato del figlio è cambiato"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/osf1/siglist.c:48 sysdeps/sun4/siglist.c:48
 | 
			
		||||
msgid "Background read from tty"
 | 
			
		||||
msgstr "Lettura in background dalla tty"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/osf1/siglist.c:49 sysdeps/sun4/siglist.c:49
 | 
			
		||||
msgid "Background write to tty"
 | 
			
		||||
msgstr "Scrittura in background sulla tty"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/osf1/siglist.c:50 sysdeps/sun4/siglist.c:50
 | 
			
		||||
msgid "I/O now possible"
 | 
			
		||||
msgstr "I/O adesso possibile"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/osf1/siglist.c:51 sysdeps/sun4/siglist.c:51
 | 
			
		||||
msgid "CPU limit exceeded"
 | 
			
		||||
msgstr "Superato il limite della CPU"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/osf1/siglist.c:52 sysdeps/sun4/siglist.c:52
 | 
			
		||||
msgid "File size limit exceeded"
 | 
			
		||||
msgstr "Superato il limite nella dimensione dei file"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: sysdeps/osf1/siglist.c:53 sysdeps/sun4/siglist.c:53
 | 
			
		||||
msgid "Virtual alarm clock"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										25
									
								
								po/nl.po
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								po/nl.po
									
									
									
									
									
								
							@@ -6,14 +6,13 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: libgtop CVS\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2003-10-21 19:07+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2003-06-21 12:58+0200\n"
 | 
			
		||||
"PO-Revision-Date: 2002-10-29 13:14+0100\n"
 | 
			
		||||
"Last-Translator: Jeroen van der Vegt <A.J.vanderVegt@ITS.TUDelft.nl>\n"
 | 
			
		||||
"Language-Team: Dutch <nl@li.org>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
#, c-format
 | 
			
		||||
@@ -94,10 +93,8 @@ msgstr "Draaiing:"
 | 
			
		||||
 | 
			
		||||
#: lib/read.c:75
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "read %d byte"
 | 
			
		||||
msgid_plural "read %d bytes"
 | 
			
		||||
msgstr[0] "%d byte gelezen"
 | 
			
		||||
msgstr[1] "%d bytes gelezen"
 | 
			
		||||
msgid "read %d bytes"
 | 
			
		||||
msgstr "%d bytes gelezen"
 | 
			
		||||
 | 
			
		||||
#: lib/read_data.c:49
 | 
			
		||||
msgid "read data size"
 | 
			
		||||
@@ -105,17 +102,13 @@ msgstr "grootte van de gelezen data"
 | 
			
		||||
 | 
			
		||||
#: lib/read_data.c:66
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "read data %d byte"
 | 
			
		||||
msgid_plural "read data %d bytes"
 | 
			
		||||
msgstr[0] "lees %d byte"
 | 
			
		||||
msgstr[1] "lees %d bytes"
 | 
			
		||||
msgid "read data %d bytes"
 | 
			
		||||
msgstr "lees %d bytes"
 | 
			
		||||
 | 
			
		||||
#: lib/write.c:48
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "write %d byte"
 | 
			
		||||
msgid_plural "write %d bytes"
 | 
			
		||||
msgstr[0] "schrijf %d byte"
 | 
			
		||||
msgstr[1] "schrijf %d bytes"
 | 
			
		||||
msgid "write %d bytes"
 | 
			
		||||
msgstr "schrijf %d bytes"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:453
 | 
			
		||||
msgid "Enable debugging"
 | 
			
		||||
@@ -221,11 +214,11 @@ msgstr "%s: optie '-W %s' is dubbelzinnig\n"
 | 
			
		||||
msgid "%s: option `-W %s' doesn't allow an argument\n"
 | 
			
		||||
msgstr "%s: optie '-W %s' staat geen argument toe\n"
 | 
			
		||||
 | 
			
		||||
#: support/popthelp.c:23
 | 
			
		||||
#: support/popthelp.c:35
 | 
			
		||||
msgid "Show this help message"
 | 
			
		||||
msgstr "Laat deze uitleg zien"
 | 
			
		||||
 | 
			
		||||
#: support/popthelp.c:24
 | 
			
		||||
#: support/popthelp.c:36
 | 
			
		||||
msgid "Display brief usage message"
 | 
			
		||||
msgstr "Toon een korte handleiding"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										74
									
								
								po/pt.po
									
									
									
									
									
								
							
							
						
						
									
										74
									
								
								po/pt.po
									
									
									
									
									
								
							@@ -1,46 +1,44 @@
 | 
			
		||||
# libgtop's Portuguese Translation
 | 
			
		||||
# Copyright (C) 2001 libgtop
 | 
			
		||||
# Distributed under the same licence as the libgtop package
 | 
			
		||||
# Duarte Loreto <happyguy_pt@hotmail.com>, 2001, 2002, 2003
 | 
			
		||||
# Copyright (C) 2001 Free Software Foundation, Inc.
 | 
			
		||||
# Duarte Loreto <happyguy_pt@hotmail.com>, 2001, 2002
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: 2.4\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: Duarte Loreto <happyguy_pt@hotmail.com>\n"
 | 
			
		||||
"POT-Creation-Date: 2003-08-25 19:14+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2002-08-25 19:16+0000\n"
 | 
			
		||||
"Project-Id-Version: 1.4.1\n"
 | 
			
		||||
"POT-Creation-Date: 2002-05-06 01:18+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2002-04-02 00:06+0000\n"
 | 
			
		||||
"Last-Translator: Duarte Loreto <happyguy_pt@hotmail.com>\n"
 | 
			
		||||
"Language-Team: Portuguese <gnome_pt@yahoogroups.com>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
#: examples/smp.c:68
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Ticks (%ld per second):"
 | 
			
		||||
msgstr "Batidas (%ld por segundo):"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
msgid "Total"
 | 
			
		||||
msgstr "Total"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74 sysdeps/names/mem.c:47
 | 
			
		||||
#: examples/smp.c:71 sysdeps/names/mem.c:47
 | 
			
		||||
msgid "User"
 | 
			
		||||
msgstr "Utilizador"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74 sysdeps/names/procuid.c:58
 | 
			
		||||
#: examples/smp.c:71 sysdeps/names/procuid.c:58
 | 
			
		||||
msgid "Nice"
 | 
			
		||||
msgstr "Nice"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
msgid "Sys"
 | 
			
		||||
msgstr "Sis"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
msgid "Idle"
 | 
			
		||||
msgstr "Inactivo"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:76
 | 
			
		||||
#: examples/smp.c:73
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"CPU          (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n"
 | 
			
		||||
@@ -49,36 +47,36 @@ msgstr ""
 | 
			
		||||
"CPU          (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n"
 | 
			
		||||
"\n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:80
 | 
			
		||||
#: examples/smp.c:77
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "CPU %3d      (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n"
 | 
			
		||||
msgstr "CPU %3d      (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:97
 | 
			
		||||
#: examples/smp.c:94
 | 
			
		||||
msgid "Percent:"
 | 
			
		||||
msgstr "Percentagem:"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#: examples/smp.c:95
 | 
			
		||||
msgid "Total (%)"
 | 
			
		||||
msgstr "Total (%)"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#: examples/smp.c:95
 | 
			
		||||
msgid "User (%)"
 | 
			
		||||
msgstr "Utilizador (%)"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#: examples/smp.c:95
 | 
			
		||||
msgid "Nice (%)"
 | 
			
		||||
msgstr "Nice (%)"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#: examples/smp.c:95
 | 
			
		||||
msgid "Sys (%)"
 | 
			
		||||
msgstr "Sis (%)"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:99
 | 
			
		||||
#: examples/smp.c:96
 | 
			
		||||
msgid "Idle (%)"
 | 
			
		||||
msgstr "Inactivo (%)"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:101
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"CPU          (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"
 | 
			
		||||
@@ -87,12 +85,12 @@ msgstr ""
 | 
			
		||||
"CPU          (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"
 | 
			
		||||
"\n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:117
 | 
			
		||||
#: examples/smp.c:114
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "CPU %3d      (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"
 | 
			
		||||
msgstr "CPU %3d      (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:123
 | 
			
		||||
#: examples/smp.c:120
 | 
			
		||||
msgid "Spin:"
 | 
			
		||||
msgstr "Rotações:"
 | 
			
		||||
 | 
			
		||||
@@ -115,39 +113,39 @@ msgstr "dados lidos %d bytes"
 | 
			
		||||
msgid "write %d bytes"
 | 
			
		||||
msgstr "escreveu %d bytes"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:453
 | 
			
		||||
#: src/daemon/gnuserv.c:448
 | 
			
		||||
msgid "Enable debugging"
 | 
			
		||||
msgstr "Activar depuração"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:453
 | 
			
		||||
#: src/daemon/gnuserv.c:448
 | 
			
		||||
msgid "DEBUG"
 | 
			
		||||
msgstr "DEBUG"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:455
 | 
			
		||||
#: src/daemon/gnuserv.c:450
 | 
			
		||||
msgid "Enable verbose output"
 | 
			
		||||
msgstr "Activar resultados extensos"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:455
 | 
			
		||||
#: src/daemon/gnuserv.c:450
 | 
			
		||||
msgid "VERBOSE"
 | 
			
		||||
msgstr "VERBOSE"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:457
 | 
			
		||||
#: src/daemon/gnuserv.c:452
 | 
			
		||||
msgid "Don't fork into background"
 | 
			
		||||
msgstr "Não fazer fork em background"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:457
 | 
			
		||||
#: src/daemon/gnuserv.c:452
 | 
			
		||||
msgid "NO-DAEMON"
 | 
			
		||||
msgstr "NO-DAEMON"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:459
 | 
			
		||||
#: src/daemon/gnuserv.c:454
 | 
			
		||||
msgid "Invoked from inetd"
 | 
			
		||||
msgstr "Invocado do inetd"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:459
 | 
			
		||||
#: src/daemon/gnuserv.c:454
 | 
			
		||||
msgid "INETD"
 | 
			
		||||
msgstr "INETD"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:493
 | 
			
		||||
#: src/daemon/gnuserv.c:488
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Error on option %s: %s.\n"
 | 
			
		||||
@@ -294,7 +292,7 @@ msgstr "Número de batidas de relógio inactivas"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/cpu.c:63
 | 
			
		||||
msgid "Tick frequency (default is 100)"
 | 
			
		||||
msgstr "Frequência batidas (omissão é 100)"
 | 
			
		||||
msgstr "Frequência batidas (defeito é 100)"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/fsusage.c:39 sysdeps/names/fsusage.c:48
 | 
			
		||||
msgid "Total blocks"
 | 
			
		||||
@@ -437,7 +435,7 @@ msgstr "Tamanho em kB da fila de mensagens"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/msg_limits.c:41 sysdeps/names/msg_limits.c:52
 | 
			
		||||
msgid "Number of entries in message map"
 | 
			
		||||
msgstr "Número de entradas no mapa de mensagens"
 | 
			
		||||
msgstr "Número de entrasas no mapa de mensagens"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/msg_limits.c:42 sysdeps/names/msg_limits.c:53
 | 
			
		||||
msgid "Max size of message"
 | 
			
		||||
@@ -445,7 +443,7 @@ msgstr "Tamanho máx das mensagens"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/msg_limits.c:43 sysdeps/names/msg_limits.c:54
 | 
			
		||||
msgid "Default max size of queue"
 | 
			
		||||
msgstr "Tamanho máx por omissão da fila"
 | 
			
		||||
msgstr "Tamanho máx defeito da fila"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/msg_limits.c:44 sysdeps/names/msg_limits.c:55
 | 
			
		||||
msgid "Max queues system wide"
 | 
			
		||||
@@ -603,7 +601,7 @@ msgstr ""
 | 
			
		||||
"Isto poderá ser um bug, já que nem todos os processos são aplicações "
 | 
			
		||||
"compiladas em C.\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"O bit math deverá ser um décimal 4, e o bit de trace é décimal 10."
 | 
			
		||||
"O bit math deverá ser um decimal 4, e o bit de trace é decimal 10."
 | 
			
		||||
 | 
			
		||||
#. Min_Flt
 | 
			
		||||
#: sysdeps/names/prockernel.c:59
 | 
			
		||||
@@ -924,7 +922,7 @@ msgid ""
 | 
			
		||||
"an interval timer."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"O tempo (em jiffies) antes do próximo SIGALRM ser enviado ao processo devido "
 | 
			
		||||
"ao temporizador de intervalo."
 | 
			
		||||
"ao temporizador de intrevalo."
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/proctime.c:60
 | 
			
		||||
msgid "Tick frequency"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										90
									
								
								po/pt_BR.po
									
									
									
									
									
								
							
							
						
						
									
										90
									
								
								po/pt_BR.po
									
									
									
									
									
								
							@@ -1,45 +1,43 @@
 | 
			
		||||
# Brazilian Portuguese translation of libgtop
 | 
			
		||||
# Copyright (C) 2001-2003 Free Software Foundation, Inc.
 | 
			
		||||
#
 | 
			
		||||
# E. A. Tacão <tacao@conectiva.com.br>, 2001
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: libgtop 2.0.4\n"
 | 
			
		||||
"POT-Creation-Date: 2003-10-01 17:21-0400\n"
 | 
			
		||||
"PO-Revision-Date: 2003-10-01 17:20-0400\n"
 | 
			
		||||
"Project-Id-Version: LibGTOP\n"
 | 
			
		||||
"POT-Creation-Date: 2002-07-05 19:54-0300\n"
 | 
			
		||||
"PO-Revision-Date: 2002-07-05 19:59GMT-0300\n"
 | 
			
		||||
"Last-Translator: Evandro Fernandes Giovanini <evandrofg@ig.com.br>\n"
 | 
			
		||||
"Language-Team: Brazilian Portuguese <gnome-l10n-br@listas.cipsga.org.br>\n"
 | 
			
		||||
"Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
#: examples/smp.c:68
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Ticks (%ld per second):"
 | 
			
		||||
msgstr "Pulsos (%ld por segundo):"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
msgid "Total"
 | 
			
		||||
msgstr "Total"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74 sysdeps/names/mem.c:47
 | 
			
		||||
#: examples/smp.c:71 sysdeps/names/mem.c:47
 | 
			
		||||
msgid "User"
 | 
			
		||||
msgstr "Usuário"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74 sysdeps/names/procuid.c:58
 | 
			
		||||
#: examples/smp.c:71 sysdeps/names/procuid.c:58
 | 
			
		||||
msgid "Nice"
 | 
			
		||||
msgstr "Prioridade"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
msgid "Sys"
 | 
			
		||||
msgstr "Sys"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:74
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
msgid "Idle"
 | 
			
		||||
msgstr "Tempo ocioso"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:76
 | 
			
		||||
#: examples/smp.c:73
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"CPU          (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n"
 | 
			
		||||
@@ -48,36 +46,36 @@ msgstr ""
 | 
			
		||||
"CPU          (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n"
 | 
			
		||||
"\n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:80
 | 
			
		||||
#: examples/smp.c:77
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "CPU %3d      (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n"
 | 
			
		||||
msgstr "CPU %3d      (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:97
 | 
			
		||||
#: examples/smp.c:94
 | 
			
		||||
msgid "Percent:"
 | 
			
		||||
msgstr "Percentual:"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#: examples/smp.c:95
 | 
			
		||||
msgid "Total (%)"
 | 
			
		||||
msgstr "Total (%)"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#: examples/smp.c:95
 | 
			
		||||
msgid "User (%)"
 | 
			
		||||
msgstr "Usuário (%)"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#: examples/smp.c:95
 | 
			
		||||
msgid "Nice (%)"
 | 
			
		||||
msgstr "Prioridade (%)"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#: examples/smp.c:95
 | 
			
		||||
msgid "Sys (%)"
 | 
			
		||||
msgstr "Sys (%)"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:99
 | 
			
		||||
#: examples/smp.c:96
 | 
			
		||||
msgid "Idle (%)"
 | 
			
		||||
msgstr "Tempo ocioso (%)"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:101
 | 
			
		||||
#: examples/smp.c:98
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"CPU          (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"
 | 
			
		||||
@@ -86,12 +84,12 @@ msgstr ""
 | 
			
		||||
"CPU          (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"
 | 
			
		||||
"\n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:117
 | 
			
		||||
#: examples/smp.c:114
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "CPU %3d      (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"
 | 
			
		||||
msgstr "CPU %3d      (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:123
 | 
			
		||||
#: examples/smp.c:120
 | 
			
		||||
msgid "Spin:"
 | 
			
		||||
msgstr "Spin:"
 | 
			
		||||
 | 
			
		||||
@@ -114,39 +112,39 @@ msgstr "ler %d bytes de dados"
 | 
			
		||||
msgid "write %d bytes"
 | 
			
		||||
msgstr "escrever %d bytes"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:453
 | 
			
		||||
#: src/daemon/gnuserv.c:448
 | 
			
		||||
msgid "Enable debugging"
 | 
			
		||||
msgstr "Habilitar depuração"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:453
 | 
			
		||||
#: src/daemon/gnuserv.c:448
 | 
			
		||||
msgid "DEBUG"
 | 
			
		||||
msgstr "DEBUG"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:455
 | 
			
		||||
#: src/daemon/gnuserv.c:450
 | 
			
		||||
msgid "Enable verbose output"
 | 
			
		||||
msgstr "Habilitar saída com mensagens detalhadas "
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:455
 | 
			
		||||
#: src/daemon/gnuserv.c:450
 | 
			
		||||
msgid "VERBOSE"
 | 
			
		||||
msgstr "VERBOSE"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:457
 | 
			
		||||
#: src/daemon/gnuserv.c:452
 | 
			
		||||
msgid "Don't fork into background"
 | 
			
		||||
msgstr "Não passar para segundo plano"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:457
 | 
			
		||||
#: src/daemon/gnuserv.c:452
 | 
			
		||||
msgid "NO-DAEMON"
 | 
			
		||||
msgstr "NO-DAEMON"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:459
 | 
			
		||||
#: src/daemon/gnuserv.c:454
 | 
			
		||||
msgid "Invoked from inetd"
 | 
			
		||||
msgstr "Acionado pelo inetd"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:459
 | 
			
		||||
#: src/daemon/gnuserv.c:454
 | 
			
		||||
msgid "INETD"
 | 
			
		||||
msgstr "INETD"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:493
 | 
			
		||||
#: src/daemon/gnuserv.c:488
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Error on option %s: %s.\n"
 | 
			
		||||
@@ -477,15 +475,15 @@ msgstr "Endereço"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/netload.c:49 sysdeps/names/netload.c:67
 | 
			
		||||
msgid "Packets In"
 | 
			
		||||
msgstr "Pacotes recebidos"
 | 
			
		||||
msgstr "Páginas em Processamento"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/netload.c:50 sysdeps/names/netload.c:68
 | 
			
		||||
msgid "Packets Out"
 | 
			
		||||
msgstr "Pacotes enviados"
 | 
			
		||||
msgstr "Página em Espera"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/netload.c:51 sysdeps/names/netload.c:69
 | 
			
		||||
msgid "Packets Total"
 | 
			
		||||
msgstr "Total de pacotes"
 | 
			
		||||
msgstr "Total de Páginas"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/netload.c:52 sysdeps/names/netload.c:70
 | 
			
		||||
msgid "Bytes In"
 | 
			
		||||
@@ -595,14 +593,14 @@ msgid ""
 | 
			
		||||
"\n"
 | 
			
		||||
"The math bit should be a decimal 4, and the traced bit is decimal 10."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Sinalizadores do kernel para o processo.\n"
 | 
			
		||||
"Parâmetros do kernel para o processo.\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"No Linux, cada sinalizador tem o bit matemático definido, pois crt0.s "
 | 
			
		||||
"No Linux, cada parâmetro tem o bit matemático habilitado, pois crt0.s "
 | 
			
		||||
"verifica se há emulação matemática, de modo que não seja incluída na saída.\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"Isto é provavelmente um erro, já que nem todo os processos são programas C.\n"
 | 
			
		||||
"Isto é provavelmente um problema, já que nem todo processo é um programa C.\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"O bit matemático deve ser um 4 decimal, e o bit verificado é o 10 decimal."
 | 
			
		||||
"O bit matemático deve ser um 4 decimal, e o bit verificado é o decimal 10."
 | 
			
		||||
 | 
			
		||||
#. Min_Flt
 | 
			
		||||
#: sysdeps/names/prockernel.c:59
 | 
			
		||||
@@ -610,8 +608,8 @@ msgid ""
 | 
			
		||||
"The number of minor faults the process has made, those which have not "
 | 
			
		||||
"required loading a memory page from disk."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"O número de falhas menores do processo; aquelas que não provocaram a carga "
 | 
			
		||||
"de uma página de memória do disco."
 | 
			
		||||
"O número de falhas menores do processo, são aquelas que não provocaram a "
 | 
			
		||||
"busca de uma página de memória do disco."
 | 
			
		||||
 | 
			
		||||
#. Maj_Flt
 | 
			
		||||
#: sysdeps/names/prockernel.c:62
 | 
			
		||||
@@ -678,11 +676,11 @@ msgstr "Compartilhado"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procmem.c:48
 | 
			
		||||
msgid "Resident Set Size"
 | 
			
		||||
msgstr "Tamanho do conjunto residente"
 | 
			
		||||
msgstr "Configuração do Tamanho Residente"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procmem.c:48
 | 
			
		||||
msgid "Resident Set Size Limit"
 | 
			
		||||
msgstr "Limite do tamanho do conjunto residente"
 | 
			
		||||
msgstr "Limite da Parte Residente"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procmem.c:53
 | 
			
		||||
msgid "Total # of pages of memory"
 | 
			
		||||
@@ -694,7 +692,7 @@ msgstr "Número de páginas na memória virtual"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procmem.c:55
 | 
			
		||||
msgid "Number of resident set (non-swapped) pages"
 | 
			
		||||
msgstr "Número de páginas no conjunto residente (fora da troca)"
 | 
			
		||||
msgstr "Número de páginas residentes (fora da troca)"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procmem.c:56
 | 
			
		||||
msgid "Number of pages of shared (mmap'd) memory"
 | 
			
		||||
@@ -751,7 +749,7 @@ msgstr "Start_Stack"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procsegment.c:48
 | 
			
		||||
msgid "Text resident set size"
 | 
			
		||||
msgstr "Tamanho do conjunto residente texto"
 | 
			
		||||
msgstr "Parte residente do código"
 | 
			
		||||
 | 
			
		||||
#: sysdeps/names/procsegment.c:49
 | 
			
		||||
msgid "Shared-Lib resident set size"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										27
									
								
								po/sv.po
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								po/sv.po
									
									
									
									
									
								
							@@ -9,14 +9,13 @@
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: libgtop\n"
 | 
			
		||||
"POT-Creation-Date: 2003-10-22 00:07+0200\n"
 | 
			
		||||
"PO-Revision-Date: 2003-10-22 00:08+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2003-02-09 23:12+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2003-02-09 23:13+0100\n"
 | 
			
		||||
"Last-Translator: Christian Rose <menthos@menthos.com>\n"
 | 
			
		||||
"Language-Team: Swedish <sv@li.org>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 | 
			
		||||
 | 
			
		||||
#: examples/smp.c:71
 | 
			
		||||
#, c-format
 | 
			
		||||
@@ -118,39 +117,39 @@ msgstr "läste %d byte data"
 | 
			
		||||
msgid "write %d bytes"
 | 
			
		||||
msgstr "skrev %d byte"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:453
 | 
			
		||||
#: src/daemon/gnuserv.c:448
 | 
			
		||||
msgid "Enable debugging"
 | 
			
		||||
msgstr "Aktivera felsökning"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:453
 | 
			
		||||
#: src/daemon/gnuserv.c:448
 | 
			
		||||
msgid "DEBUG"
 | 
			
		||||
msgstr "FELSÖK"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:455
 | 
			
		||||
#: src/daemon/gnuserv.c:450
 | 
			
		||||
msgid "Enable verbose output"
 | 
			
		||||
msgstr "Aktivera utförlig utskrift"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:455
 | 
			
		||||
#: src/daemon/gnuserv.c:450
 | 
			
		||||
msgid "VERBOSE"
 | 
			
		||||
msgstr "UTFÖRLIG"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:457
 | 
			
		||||
#: src/daemon/gnuserv.c:452
 | 
			
		||||
msgid "Don't fork into background"
 | 
			
		||||
msgstr "Grena inte i bakgrunden"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:457
 | 
			
		||||
#: src/daemon/gnuserv.c:452
 | 
			
		||||
msgid "NO-DAEMON"
 | 
			
		||||
msgstr "INGEN-DEMON"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:459
 | 
			
		||||
#: src/daemon/gnuserv.c:454
 | 
			
		||||
msgid "Invoked from inetd"
 | 
			
		||||
msgstr "Startad från inetd"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:459
 | 
			
		||||
#: src/daemon/gnuserv.c:454
 | 
			
		||||
msgid "INETD"
 | 
			
		||||
msgstr "INETD"
 | 
			
		||||
 | 
			
		||||
#: src/daemon/gnuserv.c:493
 | 
			
		||||
#: src/daemon/gnuserv.c:488
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Error on option %s: %s.\n"
 | 
			
		||||
@@ -223,11 +222,11 @@ msgstr "%s: flaggan \"-W %s\" är tvetydig\n"
 | 
			
		||||
msgid "%s: option `-W %s' doesn't allow an argument\n"
 | 
			
		||||
msgstr "%s: flaggan \"-W %s\" tillåter inga argument\n"
 | 
			
		||||
 | 
			
		||||
#: support/popthelp.c:23
 | 
			
		||||
#: support/popthelp.c:35
 | 
			
		||||
msgid "Show this help message"
 | 
			
		||||
msgstr "Visa denna hjälptext"
 | 
			
		||||
 | 
			
		||||
#: support/popthelp.c:24
 | 
			
		||||
#: support/popthelp.c:36
 | 
			
		||||
msgid "Display brief usage message"
 | 
			
		||||
msgstr "Visa kortfattad användningstext"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,2 +0,0 @@
 | 
			
		||||
Makefile.in
 | 
			
		||||
Makefile
 | 
			
		||||
@@ -1,9 +0,0 @@
 | 
			
		||||
2000-01-02  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* c_types.pl ($demarshal_funcs): New variable.
 | 
			
		||||
 | 
			
		||||
1999-11-28  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* c_types.pl: New file.
 | 
			
		||||
	This is included in `$(top_srcdir)/lib/lib.pl'.
 | 
			
		||||
 | 
			
		||||
@@ -1 +0,0 @@
 | 
			
		||||
EXTRA_DIST	= c_types.pl
 | 
			
		||||
@@ -1,71 +0,0 @@
 | 
			
		||||
# Internal functions
 | 
			
		||||
 | 
			
		||||
my $c_strlen_func = sub {
 | 
			
		||||
  local ($_) = @_;
 | 
			
		||||
 | 
			
		||||
  return "strlen ($_) + 1";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
my $c_marshal_func = sub {
 | 
			
		||||
  my ($type, $param, $indent) = @_;
 | 
			
		||||
 | 
			
		||||
  my $code = '';
 | 
			
		||||
  $code .= sprintf ("%s_LIBGTOP_SEND_temp_len = strlen (%s)+1;\n",
 | 
			
		||||
		    $indent, $param);
 | 
			
		||||
  $code .= sprintf ("%smemcpy (_LIBGTOP_SEND_ptr, %s, %s);\n",
 | 
			
		||||
		    $indent, "&_LIBGTOP_SEND_temp_len", "sizeof (size_t)");
 | 
			
		||||
  $code .= sprintf ("%s_LIBGTOP_SEND_ptr += sizeof (size_t);\n", $indent);
 | 
			
		||||
  $code .= sprintf ("%smemcpy (_LIBGTOP_DATA_ptr, %s, %s);\n",
 | 
			
		||||
		    $indent, $param, "strlen ($param)+1");
 | 
			
		||||
  $code .= sprintf ("%s_LIBGTOP_DATA_ptr += strlen ($param)+1;\n",
 | 
			
		||||
		    $indent);
 | 
			
		||||
 | 
			
		||||
  $need_temp_len = 1;
 | 
			
		||||
 | 
			
		||||
  return $code;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
my $c_demarshal_func = sub {
 | 
			
		||||
  my ($type, $param, $indent) = @_;
 | 
			
		||||
 | 
			
		||||
  my $code = '';
 | 
			
		||||
  $code .= sprintf ("%s_LIBGTOP_demarshal_%s = _LIBGTOP_DATA_ptr;\n",
 | 
			
		||||
		    $indent, $param);
 | 
			
		||||
  $code .= sprintf ("%sif (_LIBGTOP_TEMP_len) --_LIBGTOP_TEMP_len;\n",
 | 
			
		||||
		    $indent);
 | 
			
		||||
  $code .= sprintf ("%s*(_LIBGTOP_DATA_ptr + _LIBGTOP_TEMP_len) = 0;\n",
 | 
			
		||||
		    $indent);
 | 
			
		||||
 | 
			
		||||
  $need_temp_len = 1;
 | 
			
		||||
 | 
			
		||||
  return $code;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Typeinfo array fields:
 | 
			
		||||
# ---------------------
 | 
			
		||||
# * C type name
 | 
			
		||||
# * Flag specifying whether we need to copy the parameter into temp storage
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
$typeinfo = {'long'	=> ['int64_t',		0],
 | 
			
		||||
	     'ulong'	=> ['u_int64_t',	0],
 | 
			
		||||
	     'pid_t'	=> ['pid_t',		0],
 | 
			
		||||
	     'int'	=> ['int',		0],
 | 
			
		||||
	     'retval'	=> ['int',		0],
 | 
			
		||||
	     'ushort'	=> ['unsigned short',	0],
 | 
			
		||||
	     'unsigned'	=> ['unsigned',		0],
 | 
			
		||||
	     'string'	=> ['const char *',	1],
 | 
			
		||||
	     };
 | 
			
		||||
 | 
			
		||||
$sizeof_funcs = {'string'	=> $c_strlen_func,
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
$marshal_funcs = {'string'	=> $c_marshal_func,
 | 
			
		||||
		 };
 | 
			
		||||
 | 
			
		||||
$demarshal_funcs = {'string'	=> $c_demarshal_func,
 | 
			
		||||
		   };
 | 
			
		||||
 | 
			
		||||
1;
 | 
			
		||||
@@ -1,7 +1,3 @@
 | 
			
		||||
2003-10-20  Bastien Nocera  <hadess@hadess.net>
 | 
			
		||||
 | 
			
		||||
	* Makefile.am: make it compile
 | 
			
		||||
 | 
			
		||||
2003-05-11  Andrew Sobala  <aes@gnome.org>
 | 
			
		||||
 | 
			
		||||
	* gnuserv.c: (permitted): fix buffer overflow vulnerability
 | 
			
		||||
 
 | 
			
		||||
@@ -40,7 +40,7 @@ libgtop_daemon2_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \
 | 
			
		||||
				  @sysdeps_suid_lib@ \
 | 
			
		||||
				  $(suid_sysdeps) $(suid_common)\
 | 
			
		||||
				  $(LIBGTOP_LIBS)\
 | 
			
		||||
				  @LIBSUPPORT@ @INTLLIBS@ @libs_xauth@ -lpopt
 | 
			
		||||
				  @LIBSUPPORT@ @INTLLIBS@ @libs_xauth@
 | 
			
		||||
 | 
			
		||||
libgtop_server2_SOURCES		= server.c slave.c io.c version.c daemon.h
 | 
			
		||||
libgtop_server2_LDADD		= $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid-2.0.la \
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user