Compare commits

...

129 Commits

Author SHA1 Message Date
Benoît Dejean
91a312768d Dropped unused file and updated documentation.
* doc/reference.texi:
        * include/glibtop/limits.h:

        Dropped unused file and updated documentation.
2005-12-08 10:25:56 +00:00
Benoît Dejean
d9a666470c Bumped version number.
* configure.in:

        Bumped version number.
2005-12-07 09:52:36 +00:00
Benoît Dejean
79fc0e70c0 Small improvements. Use g_array_sized_new instead of g_array_new with
* procmap.c: (glibtop_get_proc_map_s):

        Small improvements.
        Use g_array_sized_new instead of g_array_new with
        reserved_size = 100.
        Don't use g_array_append_val to avoid copying
        glibtop_map_entries. Use g_array_set_size(size + 1) instead.

        I've run a little python benchmark and this shows a little
        speedup. I hope this would be more sensible in
        gnome-system-monitor (glibtop_get_procmap is intensively used for
        the 'Writable Memory' column).
2005-12-07 09:35:50 +00:00
Theppitak Karoonboonyanan
532f5ceb4f Added 'th' (Thai) to ALL_LINGUAS. Added Thai translation.
2005-12-04  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* configure.in: Added 'th' (Thai) to ALL_LINGUAS.
	* po/th.po: Added Thai translation.
2005-12-04 10:08:56 +00:00
Benoît Dejean
a326e2dcac Released 2.12.2. No 2.12.1.
* NEWS:
	* configure.in:

	Released 2.12.2.
	No 2.12.1.
2005-11-29 11:04:28 +00:00
Timur Jamakeev
8a626d9f97 Added 'ky' to ALL_LINGUAS.
2005-11-17  Timur Jamakeev  <timurj@cvs.gnome.org>

	* configure.in: Added 'ky' to ALL_LINGUAS.
2005-11-17 11:50:34 +00:00
Priit Laes
a6513af1c6 Translation updated by Ivar Smolin.
2005-11-16  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2005-11-16 06:23:21 +00:00
Benoît Dejean
95b2dfa326 Dropped many dead files. Bumped release number. I guess this closes
* configure.in:
	* include/glibtop/glibtop-backend-info.h:
	* include/glibtop/glibtop-backend.h:
	* include/glibtop/glibtop-client.h:
	* lib/glibtop-backend-info.c:
	* lib/glibtop-backend.c:
	* lib/glibtop-client-private.h:
	* lib/glibtop-client.c:
	* lib/test-backends.c:
	* sysdeps/common/backend.c:
	* sysdeps/common/libgtop-common.backend:

	Dropped many dead files.
	Bumped release number.
	I guess this closes #320250.
2005-10-30 18:46:27 +00:00
Benoît Dejean
ac3ad6d2aa Removed 1 g_return_*.
* glibtop_private.c: (read_boot_time):

	Removed 1 g_return_*.
2005-10-29 19:23:50 +00:00
Erdal Ronahi
4186c9a956 Added Kurdish translation 2005-10-28 21:45:43 +00:00
Christian Rose
7770480ad2 Reverted unauthorized changes made by user 'kloczek'.
2005-10-03  Christian Rose  <menthos@menthos.com>

	* sv.po: Reverted unauthorized changes made by
	user 'kloczek'.
2005-10-02 22:17:33 +00:00
Runa Bhattacharjee
50f20979df Added entry for Bengali (bn) Translation updation:10/01 2005-10-01 09:55:48 +00:00
Runa Bhattacharjee
78ec6945df Updated Bengali (bn) Translaion:10/01 2005-10-01 09:55:32 +00:00
Tomasz Kłoczko
170b03f4f2 s/charset=utf-8/charset=UTF-8/ 2005-09-25 16:25:35 +00:00
Tomasz Kłoczko
c183276e2b remove outdated strings and run "make update-po". 2005-09-25 16:24:46 +00:00
Inaki Larranaga
d7945bdc36 Updated Basque translation.
2005-09-08  Inaki Larranaga  <dooteo@euskalgnu.org>

	* eu.po: Updated Basque translation.
2005-09-08 19:29:41 +00:00
Benoît Dejean
2930c9f092 Released 2.12.0.
* NEWS:
        * configure.in:

        Released 2.12.0.
2005-09-04 22:31:58 +00:00
Josep Puigdemont i Casamajó
fe6a33a5fd Fixed some typos and strings. 2005-09-03 23:17:21 +00:00
Telsa Gwynne
30ebfb45d0 Updated Welsh Translation 2005-08-29 19:34:50 +00:00
Benoît Dejean
b43a1e01c0 Hum hum, it's better if release number is 2.11.92 too.
* configure.in:

	Hum hum, it's better if release number is 2.11.92 too.
2005-08-22 17:06:23 +00:00
Benoît Dejean
88d606d814 Released 2.11.92.
* NEWS:

	Released 2.11.92.
2005-08-22 17:02:57 +00:00
Mugurel Tudor
dd0d06898a Updated Romanian translation by Misu Moldovan <dumol@gnome.ro>
2005-08-22  Mugurel Tudor  <mugurelu@gnome.ro>

        * ro.po: Updated Romanian translation
	 by Misu Moldovan <dumol@gnome.ro>
2005-08-21 23:37:57 +00:00
Benoît Dejean
3e77f3cf13 Do not add irq, softirq and iowait to idle.
* cpu.c: (glibtop_get_cpu_s):

	Do not add irq, softirq and iowait to idle.
2005-08-15 00:09:47 +00:00
Benoît Dejean
22a1120348 Added missing includes. Added missing GLIBTOP_SUID_NETLIST.
* glibtop_server.h:
	* open.c:
	* open_suid.c:
	* procdata.c:

	Added missing includes.
	Added missing GLIBTOP_SUID_NETLIST.
2005-08-12 14:55:38 +00:00
Benoît Dejean
da4dc46b7a Released 2.11.91.
* NEWS:

	Released 2.11.91.
2005-08-07 23:12:39 +00:00
Benoît Dejean
03bcc48da6 Removed static examples.
* configure.in:
	* examples/Makefile.am:

	Removed static examples.
2005-08-03 22:47:19 +00:00
Benoît Dejean
708285f0d2 Reworked a bit. Warn on 2.6 without /sys.
* open.c: (set_linux_version), (glibtop_open_s):

	Reworked a bit.
	Warn on 2.6 without /sys.
2005-08-03 22:39:17 +00:00
Benoît Dejean
a0493a0ff1 Fixed for people running 2.6 without /sys.
* netload.c: (glibtop_get_netload_s):

	Fixed for people running 2.6 without /sys.
2005-08-03 13:26:06 +00:00
Dave Neary
9f7d505d20 Fix a C formatting string translation.
2005-08-02  Dave Neary  <bolsh@gimp.org>

	* tr.po: Fix a C formatting string translation.
2005-08-03 13:21:44 +00:00
Benoît Dejean
78cb7832c5 Moved _glibtop_init_hook_[sp] declaration to private glibtop/init_hooks.h.
* configure.in:
	* include/glibtop/Makefile.am:
	* include/glibtop/glibtop-server.h:
	* include/glibtop/init_hooks.h:
	* include/glibtop/sysdeps.h:
	* lib/init.c: (glibtop_init_s):
	* lib/sysdeps.c:
	* sysdeps/aix/open.c: (glibtop_init_p):
	* sysdeps/common/sysdeps_suid.c:
	* sysdeps/freebsd/open.c: (glibtop_init_p):
	* sysdeps/osf1/open_suid.c: (glibtop_init_p):
	* sysdeps/solaris/open_suid.c: (glibtop_init_p):
	* sysdeps/stub_suid/open.c: (glibtop_init_p):

	Moved _glibtop_init_hook_[sp] declaration to private
	glibtop/init_hooks.h. Marked them const.

	Fixed GLIBTOP_SUID_NETLIST issues.
2005-08-02 09:47:21 +00:00
Benoît Dejean
b3979e6942 Added GLIBTOP_SUID_NETLIST.
* glibtop_server.h:

	Added GLIBTOP_SUID_NETLIST.
2005-08-02 05:04:35 +00:00
Benoît Dejean
92d3176303 Added pprint_get_proc_kernel(pid).
Fixed prototypes.
2005-08-02 04:39:13 +00:00
Alexander Shopov
e5c7f87f50 Updated Bulgarian translation by Alexander Shopov <ash@contact.bg>
2005-06-28  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation by
	Alexander Shopov <ash@contact.bg>
2005-07-28 11:01:25 +00:00
Benoît Dejean
7e506a6c83 Released 2.11.90.
* NEWS:
        * configure.in: Released 2.11.90.
2005-07-25 13:20:08 +00:00
Benoît Dejean
1645027004 Fixed .flags.
* uptime.c:

	Fixed .flags.
2005-07-23 00:01:11 +00:00
Benoît Dejean
8e656af060 2.11.3 post release version bump.
* configure.in: 2.11.3 post release version bump.
2005-07-22 19:24:40 +00:00
Benoît Dejean
4efcfb2cb3 Cached getpagesize().
* glibtop_private.c: (get_page_size):
	* glibtop_private.h:
	* procmem.c: (glibtop_get_proc_mem_s):
	* procsegment.c: (glibtop_get_proc_segment_s):

	Cached getpagesize().
2005-07-22 19:20:39 +00:00
Nguyen Thai Ngoc Duy
59da1618b0 Merged from gnome-2.10 2005-07-21 11:47:39 +00:00
Ivan Stojmirov
e9ce3ccc1c done 2005-07-20 16:02:35 +00:00
Benoît Dejean
84e45a6519 Released 2.11.2.
* NEWS: Released 2.11.2.
2005-07-13 14:50:16 +00:00
Benoît Dejean
96fe554afd Split implementations. New (simpler) implementation for 2.6 (/sys is so
* netload.c: (read_value), (linux_2_6_stats), (linux_2_0_stats),
	(linux_2_4_stats), (glibtop_get_netload_s): Split implementations.
	New (simpler) implementation for 2.6 (/sys is so nice ;)
2005-07-09 21:09:15 +00:00
Benoît Dejean
16e0c943b2 Cached boot_time.
* glibtop_private.c: (read_boot_time), (get_boot_time): Cached boot_time.
2005-07-07 19:34:18 +00:00
Benoît Dejean
f409c553f5 Et m***e ... CVS got me. I wanted to commit a single change on the
toplevel configure.in but commited the whole tree. Sorry.

	* glibtop_private.c:
	* glibtop_private.h:
	* proctime.c:
	* uptime.c:

	Added new function get_boot_time.

	Retrieve boot_time from /proc/stat.
2005-07-05 23:08:58 +00:00
Benoît Dejean
b6a10fd8f7 Made some checks solaris only.
* configure.in: Made some checks solaris only.
2005-07-05 23:05:20 +00:00
Benoît Dejean
efeca4a865 2.11.2 post release version bump.
* configure.in: 2.11.2 post release version bump.
2005-07-05 23:02:46 +00:00
Hendrik Richter
5e70932b66 Fixed German translation by Jens Seidel <jensseidel@users.sf.net>.
2005-07-04  Hendrik Richter  <hendi@gnome-de.org>

	* de.po: Fixed German translation by
	Jens Seidel <jensseidel@users.sf.net>.
2005-07-04 18:01:16 +00:00
Benoît Dejean
d499bd3761 Released 2.11.1.
* NEWS: Released 2.11.1.
2005-07-03 10:08:38 +00:00
Ivan Stojmirov
48e3d5b2ec translated 100% 2005-07-02 10:17:37 +00:00
Rajesh Ranjan
55270e618e updted by rranjan@redhat.com 2005-06-24 07:53:11 +00:00
Kwok-Koon Cheung
a5c897b846 fix language team reference 2005-06-24 03:32:09 +00:00
Alexander Shopov
b0093954b3 Updated Bulgarian translation by Rostislav Raykov <zbrox@i-space.org>
2005-06-15  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation by
	Rostislav Raykov <zbrox@i-space.org>
2005-06-15 13:26:39 +00:00
Benoît Dejean
c81e055427 Removed LT_VERSION_INFO from LDFLAGS when unused.
* sysdeps/common/Makefile.am:
	* sysdeps/linux/Makefile.am: Removed LT_VERSION_INFO from LDFLAGS
	when unused.
2005-06-14 22:21:06 +00:00
Benoît Dejean
06fb19b5c6 Ensures buffer is 0-terminated.
* glibtop_private.c: (try_file_to_buffer): Ensures buffer is 0-terminated.
2005-06-14 22:17:49 +00:00
Ignacio Casal Quinteiro
f8d9557257 *** empty log message *** 2005-06-13 15:28:03 +00:00
Benoît Dejean
ef2ed50bf7 Added pagein/pageout for linux 2.6.
* swap.c: (glibtop_get_swap_s): Added pagein/pageout for linux 2.6.
2005-06-13 09:03:41 +00:00
Benoît Dejean
c19ba1af03 2.11.1 post release version bump.
* configure.in: 2.11.1 post release version bump.
2005-06-08 08:55:03 +00:00
Benoît Dejean
c1e5bdfb16 Released 2.11.0.
* NEWS: Released 2.11.0.
2005-06-08 08:41:13 +00:00
Benoît Dejean
be7dabf75d Added a lot of new functions to replace dirty macros. Every macro
* configure.in:
	* glibtop.h:
	* include/glibtop/close.h:
	* include/glibtop/cpu.h:
	* include/glibtop/fsusage.h:
	* include/glibtop/loadavg.h:
	* include/glibtop/mem.h:
	* include/glibtop/mountlist.h:
	* include/glibtop/msg_limits.h:
	* include/glibtop/netlist.h:
	* include/glibtop/netload.h:
	* include/glibtop/ppp.h:
	* include/glibtop/procargs.h:
	* include/glibtop/prockernel.h:
	* include/glibtop/proclist.h:
	* include/glibtop/procmap.h:
	* include/glibtop/procmem.h:
	* include/glibtop/procopenfiles.h:
	* include/glibtop/procsegment.h:
	* include/glibtop/procsignal.h:
	* include/glibtop/procstate.h:
	* include/glibtop/proctime.h:
	* include/glibtop/procuid.h:
	* include/glibtop/sem_limits.h:
	* include/glibtop/shm_limits.h:
	* include/glibtop/swap.h:
	* include/glibtop/sysdeps.h:
	* include/glibtop/sysinfo.h:
	* include/glibtop/uptime.h:
	* sysdeps/common/Makefile.am:
	* sysdeps/common/default.c: (glibtop_close), (glibtop_init),
	(glibtop_get_cpu), (glibtop_get_fsusage), (glibtop_get_uptime),
	(glibtop_get_sysinfo), (glibtop_get_swap), (glibtop_get_proc_uid),
	(glibtop_get_proc_time), (glibtop_get_proc_state),
	(glibtop_get_proc_signal), (glibtop_get_proc_segment),
	(glibtop_get_proc_open_files), (glibtop_get_proc_mem),
	(glibtop_get_proc_map), (glibtop_get_proc_args),
	(glibtop_get_proc_argv), (glibtop_get_proclist),
	(glibtop_get_proc_kernel), (glibtop_get_ppp),
	(glibtop_get_netlist), (glibtop_get_netload),
	(glibtop_get_mountlist), (glibtop_get_mem), (glibtop_get_loadavg),
	(glibtop_get_msg_limits), (glibtop_get_sem_limits),
	(glibtop_get_shm_limits), (glibtop_get_sysdeps):

	Added a lot of new functions to replace dirty macros.
	Every macro glibtop_get_*(buf[, args]) has been turned to a function.
2005-06-07 09:54:44 +00:00
Benoît Dejean
d37b1b9a2e Bye bye.
* dtd/: Bye bye.
2005-06-06 12:42:41 +00:00
Benoît Dejean
6f755a5ca7 Removed useless files.
* backends/: Removed useless files.
2005-06-06 12:40:47 +00:00
Benoît Dejean
4cd022b315 Removed translation.
* examples/smp.c: (main): Removed translation.

	* lib/lib.pl:
	* lib/read.c:
	* lib/read_data.c:
	* lib/write.c:
	* src/daemon/gnuserv.c: s/gi18n.h/gi18n-lib.h.
2005-06-06 12:33:42 +00:00
Benoît Dejean
69873a143d bye bye support.
* acinclude.m4: bye bye support.
2005-06-06 11:50:00 +00:00
Benoît Dejean
f5655f12d3 Removed unused files.
* support/ : Removed unused files.
2005-06-06 11:46:39 +00:00
Benoît Dejean
a71839c0a7 Got rid of include/libgtop-i18n.h.
* examples/smp.c:
	* include/Makefile.am:
	* include/libgtop-i18n.h:
	* lib/lib.pl:
	* lib/read.c:
	* lib/read_data.c:
	* lib/write.c:
	* src/daemon/gnuserv.c: Got rid of include/libgtop-i18n.h.
2005-06-06 11:25:36 +00:00
Benoît Dejean
74d9b24132 version bump.
* configure.in: version bump.
2005-06-06 10:02:33 +00:00
Benoît Dejean
d4ee5eb884 Updated so people can find the ChangeLogs.
* README: Updated so people can find the ChangeLogs.
2005-06-05 11:51:03 +00:00
Benoît Dejean
872a4180e4 Fixed compilation on mips. Closes #304570.
* siglist.c: Fixed compilation on mips. Closes #304570.
2005-05-25 22:28:42 +00:00
Jörgen Scheibengruber
e8351bae05 Added tmpfs to ignore list.
* mountlist.c: (ignore_mount_entry): Added tmpfs to ignore list.
2005-04-29 09:50:09 +00:00
Benoît Dejean
adb38dd2a3 2.10.2 post release bump.
* configure.in: 2.10.2 post release bump.

	* include/glibtop/Makefile.am:
	* include/glibtop/parameter.h:
	* lib/init.c: Re-install open.h to please GTop (libgtop perl wrapper).
2005-04-27 14:50:24 +00:00
Benoît Dejean
755d5fe5f5 Released 2.10.1.
* NEWS: Released 2.10.1.
2005-04-10 16:10:59 +00:00
Benoît Dejean
d1891b11ef Fixed gcc-4.0 warnings.
* glibtop_private.h: Fixed gcc-4.0 warnings.
2005-04-01 20:06:35 +00:00
Adi Attar
765a919305 Added Xhosa translation. Added "xh" to ALL_LINGUAS.
2005-04-01  Adi Attar  <aattar@cvs.gnome.org>

	* xh.po: Added Xhosa translation.
	* configure.in: Added "xh" to ALL_LINGUAS.
2005-04-01 09:23:50 +00:00
Steven Michael Murphy
ad2f74dbc3 Added new Language, Kinyarwanda (rw), to this package 2005-04-01 01:22:29 +00:00
Benoît Dejean
b017d60c83 Fixed.
* libgtop-2.0.pc.in: Fixed.
2005-03-31 12:05:52 +00:00
Benoît Dejean
29a991160c Fixed warning.
* lib/read_data.c: (glibtop_read_data_l): Fixed warning.
2005-03-29 13:18:15 +00:00
Benoît Dejean
59fd67c7e0 Removed a g_return_if_fail.
* fsusage.c: (get_partition): Removed a g_return_if_fail.
2005-03-29 13:16:58 +00:00
Benoît Dejean
bbc10e3790 Fixed behaviour when locale is not C s/strtod/g_ascii_strod/. (strtod
* loadavg.c: (glibtop_get_loadavg_s):
	* uptime.c: (glibtop_get_uptime_s): Fixed behaviour when locale is not C
	s/strtod/g_ascii_strod/. (strtod behaviour is locale specific, which is bad
	because linux /proc is always C.
2005-03-27 14:30:30 +00:00
Benoît Dejean
f4f88ff224 s/strerror/g_strerror.
* lib/error.c: (glibtop_error_io_vr), (glibtop_warn_io_vr):
s/strerror/g_strerror.
2005-03-25 13:26:24 +00:00
Benoît Dejean
fffccf3309 s/strerror/g_strerror.
* gnuserv.c: (syslog_io_message): s/strerror/g_strerror.
2005-03-25 13:25:41 +00:00
Benoît Dejean
3c0e03ee89 s/strerror/g_strerror/.
* open.c: (_glibtop_getkval): s/strerror/g_strerror/.
2005-03-25 13:25:01 +00:00
Benoît Dejean
fa9216f771 s/strerror/g_strerror/g.
* error.c: (glibtop_error_io_vr), (glibtop_warn_io_vr):
	* error_suid.c: (glibtop_error_io_vr), (glibtop_warn_io_vr):
	s/strerror/g_strerror/g.
2005-03-25 13:24:14 +00:00
Benoît Dejean
83a9bef192 s/strerror/g_strerror/.
* netload.c: (get_ipv6): s/strerror/g_strerror/.
2005-03-25 13:23:24 +00:00
Benoît Dejean
ca4dc56342 Updated.
* siglist.c: Updated.
2005-03-25 12:52:12 +00:00
Priit Laes
a97ee0a513 Translation updated by Ivar Smolin.
2005-03-19  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2005-03-19 08:35:47 +00:00
Adam Weinberger
41a723fde4 Updated Canadian English translation.
* en_CA.po: Updated Canadian English translation.
2005-03-17 05:25:52 +00:00
Baris Cicek
f673d2ea37 Updated Turkish Translation
* tr.po: Updated Turkish Translation
2005-03-12 23:34:22 +00:00
Benoît Dejean
cae488a4ee Post release version bump.
* configure.in: Post release version bump.
2005-03-11 15:06:12 +00:00
Benoît Dejean
ad79ab9540 Added mqueue to ignore list.
* mountlist.c: (ignore_mount_entry): Added mqueue to ignore list.
2005-03-11 14:54:11 +00:00
Benoît Dejean
e958d8dbbe Released 2.10.0.
* NEWS:
       * configure.in: Released 2.10.0.
2005-03-07 09:25:25 +00:00
Dan Damian
a58e2f6385 Updated Romanian translation by Mişu Moldovan <dumol@go.ro>.
* Updated Romanian translation by Mişu Moldovan <dumol@go.ro>.
2005-03-06 22:51:42 +00:00
Danilo Šegan
c505f26427 Updated Serbian translation. 2005-03-06 08:48:20 +00:00
Kwok-Koon Cheung
53aec7429f Updated traditional Chinese translation from GNOME HK Team Mark wrong
* zh_TW.po: Updated traditional Chinese translation from GNOME HK Team
	* bg.po: Mark wrong entry as fuzzy (msgfmt check failed).
2005-03-05 08:35:19 +00:00
Laszlo Dvornik
6099a46f42 Hungarian translation updated by Gabor Kelemen.
2005-03-04  Laszlo Dvornik  <dvornik@gnome.hu>

	* hu.po: Hungarian translation updated by Gabor Kelemen.
2005-03-04 15:05:40 +00:00
Alessio Frusciante
1711b912f1 Updated Italian translation. 2005-03-03 21:48:52 +00:00
Amanpreet Singh Alam
c817a9fac1 update by amanpreetalam@yahoo.com for pa.po 2005-03-03 12:10:00 +00:00
Benoît Dejean
a1657f81cb Released 2.9.92.
* NEWS: Released 2.9.92.
2005-02-28 08:59:38 +00:00
Benoît Dejean
0561316344 Forgot to add this file.
* fsusage.c: (_glibtop_freebsd_get_fsusage_read_write): Forgot to add
	this file.
2005-02-28 08:54:41 +00:00
Benoît Dejean
2c0f291b3c Fix a bug in netlist where glibtop_netlist.number was never initialized to
* Makefile.am:
	* cpu.c: (glibtop_get_cpu_p):
	* netlist.c: (glibtop_get_netlist_s):
	* netload.c: (glibtop_get_netload_p):
	* procmem.c: (glibtop_get_proc_mem_p):

	Fix a bug in netlist where glibtop_netlist.number was never initialized to 0
	(this resulted in a NULL pointer dereference in the network load feature
	of the multiload applet)

	* Add support for getting interface flags and packet counts even on interfaces
	without IP addresses (needed for the network load feature of the multiload applet)

	* Restore per-process limits in the !FreeBSD or __FreeBSD_version < 500013
	case

	* Add CPU interrupt time as IOWAIT to get support for the cpu load feature of
	the multiload applet.

	Patch from marcus@freebsd.org (Joe Marcus Clarke).
	Closes #168704.
2005-02-28 08:15:59 +00:00
Benoît Dejean
fc7d872381 * Add support for file system read and write counting (needed for the disk
* fsusage.c: * Add support for file system read and write counting
	(needed for the disk load feature of the multiload applet).
2005-02-28 08:11:15 +00:00
Benoît Dejean
c97d63f368 /me stupid. I've already post-bumped version.
* configure.in: /me stupid. I've already post-bumped version.
2005-02-25 00:02:59 +00:00
Artur Flinta
675145ea55 Updated Polish translation by GNOME PL Team.
2005-02-24  Artur Flinta  <aflinta@cvs.gnome.org>

	* pl.po: Updated Polish translation by GNOME PL Team.
2005-02-24 20:36:48 +00:00
Benoît Dejean
965bd33d55 post release bump 2.9.93.
* configure.in: post release bump 2.9.93.
2005-02-24 17:22:25 +00:00
Ankitkumar Rameshchandra Patel
7a5e1a0f37 ankit@redhat.com * Updated Gujarati Translation 2005-02-24 12:52:11 +00:00
Amanpreet Singh Alam
da24dd8fd9 update by amanpreetalam@yahoo.com 2005-02-24 04:47:57 +00:00
Benoît Dejean
717ee1c88f Add support for FreeBSD 6-CURRENT. Use the more portable getrlimit to
* Makefile.am:
	* netlist.c: (glibtop_get_netlist_s):
	* procmap.c: (glibtop_get_proc_map_p):
	* procmem.c: (glibtop_get_proc_mem_p):
	* procopenfiles.c: (glibtop_init_proc_open_files_s),
	(glibtop_get_proc_open_files_s):
	* proctime.c:

	Add support for FreeBSD 6-CURRENT.
	Use the more portable getrlimit to obtain process memory limits.
	Correctly determine process time.
	Stub out the procopenfiles() function (this is not yet implemented, however).
	Fix a nasty infinite loop and memory leak due to a forgot pointer increment.

	Patch from marcus@freebsd.org (Joe Marcus Clarke).
	Closes #168232.
2005-02-23 08:20:45 +00:00
Benoît Dejean
f031b77b3b Correct file system size calculations. Patch from marcus@freebsd.org (Joe
* fsusage.c: (glibtop_get_fsusage_s): Correct file system size calculations.
	Patch from marcus@freebsd.org (Joe Marcus Clarke).
	Closes #168232.
2005-02-23 08:18:48 +00:00
Roozbeh Pournader
e0ae6ebcaa Updated Persian translation by Azin Azadi <aazadi@gmail.com>.
2004-02-22  Roozbeh Pournader  <roozbeh@farsiweb.info>

	* fa.po: Updated Persian translation by
	  Azin Azadi <aazadi@gmail.com>.
2005-02-22 18:21:59 +00:00
Benoît Dejean
16123b6fe9 Build and install libgtop2_daemon only if needed.
* src/Makefile.am: Build and install libgtop2_daemon only if needed.
2005-02-22 12:42:09 +00:00
Priit Laes
672da9122e Translation updated by Ivar Smolin.
2005-02-22  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2005-02-22 09:46:02 +00:00
Benoît Dejean
35f0277afd don't export private symbols.
* lib/Makefile.am: don't export private symbols.
2005-02-21 15:24:26 +00:00
Leonid Kanter
8d77e50c03 fixed typo 2005-02-21 12:58:04 +00:00
Raphael Higino
82dc5aefe1 Updated pt_BR translation 2005-02-20 14:51:33 +00:00
Changwoo Ryu
f2f5ab9b73 Updated Korean translation.
2005-02-18  Changwoo Ryu  <cwryu@debian.org>

	* ko.po: Updated Korean translation.
2005-02-18 12:25:03 +00:00
Kostas Papadimas
49acc8769c Updated Greek Translation. 2005-02-18 11:45:38 +00:00
Vincent van Adrighem
15759a964a Translation updated by Tino Meinen.
2005-02-17  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Tino Meinen.
2005-02-17 13:29:37 +00:00
Jordi Mallach
649b88a7fa Updated Catalan translation. 2005-02-16 09:47:35 +00:00
Maxim Dziumanenko
073a6dd8c1 Update Ukrainian translation.
2005-02-15  Maxim Dziumanenko <mvd@mylinux.com.ua>

	* Update Ukrainian translation.
2005-02-15 19:04:50 +00:00
Benoît Dejean
d61ad50e23 ChangeLog commit 2005-02-15 12:53:53 +00:00
Benoît Dejean
53c43e6e90 Removed some dead files. Don't install private headers.
* backends/server/server.h:
	* configure.in:
	* glibtop.h:
	* include/glibtop/Makefile.am:
	* include/glibtop/gnuserv.h:
	* include/glibtop/open.h:
	* include/glibtop/read.h:
	* include/glibtop/read_data.h:
	* include/glibtop/types.h:
	* include/glibtop/write.h:
	* lib/close.c:
	* lib/init.c:
	* lib/lib.pl:
	* lib/open.c:
	* lib/parameter.c:
	* lib/read.c:
	* lib/read_data.c:
	* lib/write.c:
	* src/daemon/daemon.h:
	* src/daemon/io.c:
	* src/daemon/main.c: (handle_parent_connection):
	* src/daemon/slave.c: (handle_slave_connection),
	(handle_slave_command):
	* sysdeps/common/gnuslib.c:
	* sysdeps/solaris/glibtop_private.h: Removed some dead files.
	Don't install private headers.
2005-02-15 12:48:34 +00:00
Benoît Dejean
b43e879cc0 Misc. cleanups.
* daemon.h:
* gnuserv.c: (syslog_message), (syslog_io_message):
* main.c: (handle_parent_connection):
* slave.c: (handle_slave_connection), (handle_slave_command): Misc. cleanups.
2005-02-15 10:35:44 +00:00
Benoît Dejean
0fdfd65a2a Don't export private symbols.
* include/glibtop/error.h: Don't export private symbols.
2005-02-15 10:14:59 +00:00
Benoît Dejean
1ac8744251 G_GNUC_NORETURN love.
* include/glibtop/error.h: G_GNUC_NORETURN love.

	* include/glibtop/errors.h:
	* lib/errors.c: Bye bye dead code.
2005-02-15 09:55:01 +00:00
Benoît Dejean
bbbbb27edc Fixed G_GNUC attribute usage. Replaced macro by inline function.
* fsusage.c: (_glibtop_get_fsusage_read_write): Fixed G_GNUC attribute usage.
	Replaced macro by inline function.
2005-02-15 09:51:59 +00:00
Benoît Dejean
a5982555b9 Fixed G_GNUC attribute usage.
* fsusage.c: Fixed G_GNUC attribute usage.
2005-02-15 09:51:12 +00:00
Christophe Merlet
7d44f04aed Updated French translation. 2005-02-14 21:35:31 +00:00
Laurent Dhima
c9dc0d0ef8 Updated Albanian translation.
2005-02-14  Laurent Dhima  <laurenti@alblinux.net>

	* sq.po: Updated Albanian translation.
2005-02-14 12:25:09 +00:00
Benoît Dejean
e82f908824 Updated French translation.
* fr.po: Updated French translation.
2005-02-14 08:31:47 +00:00
Leonid Kanter
8365f40856 Updated Russian translation 2005-02-08 15:24:30 +00:00
David Lodge
b2917db0be Updated British translation.
2005-02-07  David Lodge <dave@cirt.net>

        * en_GB.po: Updated British translation.
2005-02-07 12:37:01 +00:00
236 changed files with 5570 additions and 71642 deletions

338
ChangeLog
View File

@@ -1,3 +1,341 @@
2005-12-08 Benoît Dejean <benoit@placenet.org>
* doc/reference.texi:
* include/glibtop/limits.h:
Dropped unused file and updated documentation.
2005-12-07 Benoît Dejean <benoit@placenet.org>
* configure.in:
Bumped version number.
2005-12-04 Theppitak Karoonboonyanan <thep@linux.thai.net>
* configure.in: Added 'th' (Thai) to ALL_LINGUAS.
2005-11-29 Benoît Dejean <benoit@placenet.org>
* NEWS:
* configure.in:
Released 2.12.2.
No 2.12.1.
2005-11-17 Timur Jamakeev <timurj@cvs.gnome.org>
* configure.in: Added 'ky' (Kirghiz) to ALL_LINGUAS.
2005-10-30 Benoît Dejean <benoit@placenet.org>
* configure.in:
* include/glibtop/glibtop-backend-info.h:
* include/glibtop/glibtop-backend.h:
* include/glibtop/glibtop-client.h:
* lib/glibtop-backend-info.c:
* lib/glibtop-backend.c:
* lib/glibtop-client-private.h:
* lib/glibtop-client.c:
* lib/test-backends.c:
* sysdeps/common/backend.c:
* sysdeps/common/libgtop-common.backend:
Dropped many dead files.
Bumped release number.
I guess this closes #320250.
2005-10-28 Erdal Ronahi <erdal.ronahi@gmail.com>
* configure.in: Added ku (Kurdish) to ALL_LINGUAS
2005-09-04 Benoît Dejean <benoit@placenet.org>
* NEWS:
* configure.in:
Released 2.12.0.
2005-08-22 Benoît Dejean <benoit@placenet.org>
* configure.in:
Hum hum, it's better if release number is 2.11.92 too.
2005-08-22 Benoît Dejean <benoit@placenet.org>
* NEWS:
Released 2.11.92.
2005-08-08 Benoît Dejean <benoit@placenet.org>
* NEWS:
Released 2.11.91.
2005-08-04 Benoît Dejean <TazForEver@dlfp.org>
* configure.in:
* examples/Makefile.am:
Removed static examples.
2005-08-02 Benoît Dejean <TazForEver@dlfp.org>
* configure.in:
* include/glibtop/Makefile.am:
* include/glibtop/glibtop-server.h:
* include/glibtop/init_hooks.h:
* include/glibtop/sysdeps.h:
* lib/init.c: (glibtop_init_s):
* lib/sysdeps.c:
* sysdeps/aix/open.c: (glibtop_init_p):
* sysdeps/common/sysdeps_suid.c:
* sysdeps/freebsd/open.c: (glibtop_init_p):
* sysdeps/osf1/open_suid.c: (glibtop_init_p):
* sysdeps/solaris/open_suid.c: (glibtop_init_p):
* sysdeps/stub_suid/open.c: (glibtop_init_p):
Moved _glibtop_init_hook_[sp] declaration to private
glibtop/init_hooks.h. Marked them const.
Fixed GLIBTOP_SUID_NETLIST issues.
2005-07-24 Benoît Dejean <TazForEver@dlfp.org>
* NEWS:
* configure.in: Released 2.11.90.
2005-07-22 Benoît Dejean <TazForEver@dlfp.org>
* configure.in: 2.11.3 post release version bump.
2005-07-13 Benoît Dejean <TazForEver@dlfp.org>
* NEWS: Released 2.11.2.
2005-07-06 Benoît Dejean <TazForEver@dlfp.org>
* configure.in: 2.11.2 post release version bump.
2005-07-03 Benoît Dejean <TazForEver@dlfp.org>
* NEWS: Released 2.11.1.
2005-06-15 Benoît Dejean <TazForEver@dlfp.org>
* sysdeps/common/Makefile.am:
* sysdeps/linux/Makefile.am: Removed LT_VERSION_INFO from LDFLAGS
when unused.
2005-06-08 Benoît Dejean <TazForEver@dlfp.org>
* configure.in: 2.11.1 post release version bump.
2005-06-08 Benoît Dejean <TazForEver@dlfp.org>
* NEWS: Released 2.11.0.
2005-06-07 Benoît Dejean <TazForEver@dlfp.org>
* configure.in:
* glibtop.h:
* include/glibtop/close.h:
* include/glibtop/cpu.h:
* include/glibtop/fsusage.h:
* include/glibtop/loadavg.h:
* include/glibtop/mem.h:
* include/glibtop/mountlist.h:
* include/glibtop/msg_limits.h:
* include/glibtop/netlist.h:
* include/glibtop/netload.h:
* include/glibtop/ppp.h:
* include/glibtop/procargs.h:
* include/glibtop/prockernel.h:
* include/glibtop/proclist.h:
* include/glibtop/procmap.h:
* include/glibtop/procmem.h:
* include/glibtop/procopenfiles.h:
* include/glibtop/procsegment.h:
* include/glibtop/procsignal.h:
* include/glibtop/procstate.h:
* include/glibtop/proctime.h:
* include/glibtop/procuid.h:
* include/glibtop/sem_limits.h:
* include/glibtop/shm_limits.h:
* include/glibtop/swap.h:
* include/glibtop/sysdeps.h:
* include/glibtop/sysinfo.h:
* include/glibtop/uptime.h:
* sysdeps/common/Makefile.am:
* sysdeps/common/default.c: (glibtop_close), (glibtop_init),
(glibtop_get_cpu), (glibtop_get_fsusage), (glibtop_get_uptime),
(glibtop_get_sysinfo), (glibtop_get_swap), (glibtop_get_proc_uid),
(glibtop_get_proc_time), (glibtop_get_proc_state),
(glibtop_get_proc_signal), (glibtop_get_proc_segment),
(glibtop_get_proc_open_files), (glibtop_get_proc_mem),
(glibtop_get_proc_map), (glibtop_get_proc_args),
(glibtop_get_proc_argv), (glibtop_get_proclist),
(glibtop_get_proc_kernel), (glibtop_get_ppp),
(glibtop_get_netlist), (glibtop_get_netload),
(glibtop_get_mountlist), (glibtop_get_mem), (glibtop_get_loadavg),
(glibtop_get_msg_limits), (glibtop_get_sem_limits),
(glibtop_get_shm_limits), (glibtop_get_sysdeps):
Added a lot of new functions to replace dirty macros.
Every macro glibtop_get_*(buf[, args]) has been turned to a function.
2005-06-06 Benoît Dejean <TazForEver@dlfp.org>
* dtd/: Bye bye.
2005-06-06 Benoît Dejean <TazForEver@dlfp.org>
* backends/: Removed useless files.
2005-06-06 Benoît Dejean <TazForEver@dlfp.org>
* examples/smp.c: (main): Removed translation.
* lib/lib.pl:
* lib/read.c:
* lib/read_data.c:
* lib/write.c:
* src/daemon/gnuserv.c: s/gi18n.h/gi18n-lib.h.
2005-06-06 Benoît Dejean <TazForEver@dlfp.org>
* acinclude.m4: bye bye support.
2005-06-06 Benoît Dejean <TazForEver@dlfp.org>
* support/ : Removed unused files.
2005-06-06 Benoît Dejean <TazForEver@dlfp.org>
* examples/smp.c:
* include/Makefile.am:
* include/libgtop-i18n.h:
* lib/lib.pl:
* lib/read.c:
* lib/read_data.c:
* lib/write.c:
* src/daemon/gnuserv.c: Got rid of include/libgtop-i18n.h.
2005-06-06 Benoît Dejean <TazForEver@dlfp.org>
* configure.in: version bump.
2005-06-05 Benoît Dejean <TazForEver@dlfp.org>
* README: Updated so people can find the ChangeLogs.
2005-04-27 Benoît Dejean <TazForEver@dlfp.org>
* configure.in: 2.10.2 post release bump.
* include/glibtop/Makefile.am:
* include/glibtop/parameter.h:
* lib/init.c: Re-install open.h to please GTop (libgtop perl wrapper).
2005-04-10 Benoît Dejean <TazForEver@dlfp.org>
* NEWS: Released 2.10.1.
2005-04-01 Adi Attar <aattar@cvs.gnome.org>
* configure.in: Added "xh" to ALL_LINGUAS.
2005-03-31 Steve Murphy <murf@e-tools.com>
* configure.in: Added "rw" to ALL_LINGUAS.
2005-03-31 Benoît Dejean <TazForEver@dlfp.org>
* libgtop-2.0.pc.in: Fixed.
2005-03-29 Benoît Dejean <TazForEver@dlfp.org>
* lib/read_data.c: (glibtop_read_data_l): Fixed warning.
2005-03-25 Benoît Dejean <TazForEver@dlfp.org>
* lib/error.c: (glibtop_error_io_vr), (glibtop_warn_io_vr):
s/strerror/g_strerror.
2005-03-11 Benoît Dejean <TazForEver@dlfp.org>
* configure.in: Post release version bump.
2005-03-07 Benoît Dejean <TazForEver@dlfp.org>
* NEWS:
* configure.in: Released 2.10.0.
2005-02-28 Benoît Dejean <TazForEver@dlfp.org>
* NEWS: Released 2.9.92.
2005-02-25 Benoît Dejean <TazForEver@dlfp.org>
* configure.in: /me stupid. I've already post-bumped version.
2005-02-24 Benoît Dejean <TazForEver@dlfp.org>
* configure.in: post release bump 2.9.93.
2005-02-22 Benoît Dejean <TazForEver@dlfp.org>
* src/Makefile.am: Build and install libgtop2_daemon only if needed.
2005-02-21 Benoît Dejean <TazForEver@dlfp.org>
* lib/Makefile.am: don't export private symbols.
2005-02-15 Benoît Dejean <TazForEver@dlfp.org>
* backends/server/server.h:
* configure.in:
* glibtop.h:
* include/glibtop/Makefile.am:
* include/glibtop/gnuserv.h:
* include/glibtop/open.h:
* include/glibtop/read.h:
* include/glibtop/read_data.h:
* include/glibtop/types.h:
* include/glibtop/write.h:
* lib/close.c:
* lib/init.c:
* lib/lib.pl:
* lib/open.c:
* lib/parameter.c:
* lib/read.c:
* lib/read_data.c:
* lib/write.c:
* src/daemon/daemon.h:
* src/daemon/io.c:
* src/daemon/main.c: (handle_parent_connection):
* src/daemon/slave.c: (handle_slave_connection),
(handle_slave_command):
* sysdeps/common/gnuslib.c:
* sysdeps/solaris/glibtop_private.h: Removed some dead files.
Don't install private headers.
Depends on glib-2.6.
Post-release bump : 2.9.92
2005-02-15 Benoît Dejean <TazForEver@dlfp.org>
* include/glibtop/error.h: Don't export private symbols.
2005-02-15 Benoît Dejean <TazForEver@dlfp.org>
* include/glibtop/error.h: G_GNUC_NORETURN love.
* include/glibtop/errors.h:
* lib/errors.c: Bye bye dead code.
2005-02-06 Benoît Dejean <TazForEver@dlfp.org>
* NEWS:

62
NEWS
View File

@@ -1,3 +1,65 @@
November 29, 2005: Overview of changes from 2.12.0 to 2.12.1
============================================================
* Dropped dead files
* linux: 1-line cleanup.
September 4, 2005: Overview of changes from 2.11.92 to 2.12.0
=============================================================
* Updated translations.
August 22, 2005: Overview of changes from 2.11.91 to 2.11.92
============================================================
* Linux:
- fixed for 2.6 without /sys
- glibtop_get_cpu() : Do not add irq, softirq and iowait to idle.
August 9, 2005: Overview of changes from 2.11.90 to 2.11.91
===========================================================
* All:
- cleaned some headers.
- removed static examples.
* Linux:
- fixed some issues with 2.6 without /sys
July 24, 2005: Overview of changes from 2.11.2 to 2.11.90
=========================================================
* Linux:
- fixed glibtop_uptime .flags.
July &3, 2005: Overview of changes from 2.11.1 to 2.11.2
========================================================
* Linux:
- little improvements for 2.6.
July 3, 2005: Overview of changes from 2.11.0 to 2.11.1
=======================================================
* Linux:
- glibtop_get_swap : added page(in|out) for linux 2.6.
June 8, 2005: Overview of changes from 2.10.x to 2.11.0
=======================================================
* Replaced a lot of macros by functions
* Got rid of dozens of useless files.
* libgtop 2.11.x are and will stay API and ABI compatible with 2.10.x, i swear.
April 10, 2005: Overview of changes from 2.10.0 to 2.10.1
=========================================================
* Updated i18n.
* Little cleanup and fixed gcc-4.0 compilation.
* linux: fixed loadavg and uptime if locale != C.
Updated siglist.
* Tighter libgtop-2.0.pc.
Mars 7, 2005: Overview of Changes from 2.9.92 to 2.10.0
=======================================================
* Updated i18n.
February 28, 2005: Overview of Changes from 2.9.90 to 2.9.92
============================================================
* *BSD updated by marcus@freebsd.org (Joe Marcus Clarke).
* Removed a lot of dead files :)
* Don't build&install libgtop_daemon when it's never used.
February 6, 2004: Overview of Changes from 2.9.90 to 2.9.91
==========================================================
* Fixed typo in stub.

16
README
View File

@@ -1,8 +1,20 @@
$Id$
LATEST NEWS:
===========
Please look also in the file 'NEWS' for latest news.
Martin
ChangeLogs:
==========
LibGTop has many ChangeLogs files. The following files are the the
most important :
- ChangeLog is the main ChangeLog.
- sysdeps/<arch>/ChangeLog is the ChangeLog for arch specific changes.
- sysdeps/common/ChangeLog is the ChangeLog for common changes (shared
implementation between archs).
Benoît

View File

@@ -503,76 +503,6 @@ AC_CHECKING(for AFS)
test -d /afs && AC_DEFINE(AFS)
])
dnl GNOME_SUPPORT_CHECKS
dnl Check for various support functions needed by the standard
dnl Gnome libraries. Sets LIBOBJS, might define some macros.
dnl This should only be used when building the Gnome libs;
dnl Gnome clients should not need this macro.
AC_DEFUN([GNOME_SUPPORT_CHECKS],[
# we need an `awk' to build `gnomesupport.h'
AC_REQUIRE([AC_PROG_AWK])
# this should go away soon
need_gnome_support=yes
AC_CHECK_FUNCS(getopt_long,,
[AC_LIBOBJ(getopt)
AC_LIBOBJ(getopt1)])
# for `scandir'
AC_HEADER_DIRENT
# copied from `configure.in' of `libiberty'
vars="program_invocation_short_name program_invocation_name sys_errlist"
for v in $vars; do
AC_MSG_CHECKING([for $v])
AC_CACHE_VAL(gnome_cv_var_$v,
[AC_TRY_LINK([int *p;], [extern int $v; p = &$v;],
[eval "gnome_cv_var_$v=yes"],
[eval "gnome_cv_var_$v=no"])])
if eval "test \"`echo '$gnome_cv_var_'$v`\" = yes"; then
AC_MSG_RESULT(yes)
n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
AC_DEFINE_UNQUOTED($n)
else
AC_MSG_RESULT(no)
fi
done
AC_REPLACE_FUNCS(memmove mkstemp scandir strcasecmp strerror strndup strnlen)
AC_REPLACE_FUNCS(strtok_r strtod strtol strtoul vasprintf vsnprintf)
AC_CHECK_FUNCS(realpath,,AC_LIBOBJ(canonicalize))
# to include `error.c' error.c has some HAVE_* checks
AC_CHECK_FUNCS(vprintf doprnt strerror_r)
# stolen from am_func_error_at_line
AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line,
[AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");],
am_cv_lib_error_at_line=yes,
am_cv_lib_error_at_line=no)])
if test $am_cv_lib_error_at_line = no; then
AC_LIBOBJ(error)
fi
# This is required if we declare setreuid () and setregid ().
AC_TYPE_UID_T
# see if we need to declare some functions. Solaris is notorious for
# putting functions into the `libc' but not listing them in the headers
AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h dirent.h)
GCC_NEED_DECLARATIONS(gethostname setreuid setregid getpagesize)
GCC_NEED_DECLARATION(scandir,[
#ifdef HAVE_DIRENT_H
#include <dirent.h>
#endif
])
AC_SUBST(need_gnome_support)
AM_CONDITIONAL(BUILD_GNOME_SUPPORT, test "$need_gnome_support" = yes)
])
dnl This file is intended for use both internally in libgtop and in every program
dnl that wants to use it.

View File

@@ -1,5 +0,0 @@
.deps
.libs
Makefile
Makefile.in
*.lo

View File

@@ -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

View File

@@ -1,7 +0,0 @@
.deps
.libs
Makefile
Makefile.in
*.lo
*.la
marshal.c

View File

@@ -1,50 +0,0 @@
2003-10-20 Bastien Nocera <hadess@hadess.net>
* backend-common.c: (_open_common): s/u_int64_t/guint64/
2003-10-20 Bastien Nocera <hadess@hadess.net>
* backend-common.h: fixed compilation
2000-11-26 Martin Baulig <martin@home-of-linux.org>
* glibtop-backend-private.h: Removed.
* backend-common.h: New files.
* backend-common.c (_open_common): Don't overwrite
`backend->_priv'.
2000-11-22 Martin Baulig <martin@home-of-linux.org>
* Makefile.am: Link libgtop_backend_common.la against
$(top_builddir)/sysdeps/common/libgtop_common.la and
$(top_builddir)/lib/libgtop_server.la.
2000-02-22 Martin Baulig <martin@home-of-linux.org>
* backend-sysdeps.c (LibGTopBackendInfo): Call this
`LibGTopBackendInfo_Common' when we don't use gmodule.
2000-02-22 Martin Baulig <martin@home-of-linux.org>
* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR)
when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise.
2000-01-12 Martin Baulig <martin@home-of-linux.org>
* Makefile.am: Install everything in $(LIBGTOP_BACKEND_DIR).
* libgtop-common.backend: New file.
* backend-common.c (glibtop_backend_common): Renamed to
`LibGTopBackendInfo'.
2000-01-12 Martin Baulig <martin@home-of-linux.org>
Initial version of the "glibtop-backend-common" backend.
* backend-common.c: New file.
* glibtop-backend-private.h: New file.
* marshal.pl: New file. Automatically creates `marshal.c'.

View 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-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

View File

@@ -1,61 +0,0 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <backend-common.h>
static int
_open_common (glibtop_server *, glibtop_backend *, guint64, const char **);
static int
_close_common (glibtop_server *, glibtop_backend *, void *closure);
extern glibtop_call_vector glibtop_backend_common_call_vector;
#ifdef LIBGTOP_USE_GMODULE
glibtop_backend_info LibGTopBackendInfo = {
"glibtop-backend-common", _open_common, _close_common,
&glibtop_backend_common_call_vector
};
#else
glibtop_backend_info LibGTopBackendInfo_Common = {
"glibtop-backend-common", _open_common, _close_common,
&glibtop_backend_common_call_vector
};
#endif
static int
_open_common (glibtop_server *server, glibtop_backend *backend,
guint64 features, const char **backend_args)
{
return 0;
}
static int
_close_common (glibtop_server *server, glibtop_backend *backend,
void *closure)
{
return 0;
}

View File

@@ -1,36 +0,0 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef __GLIBTOP_BACKEND_COMMON_H__
#define __GLIBTOP_BACKEND_COMMON_H__
#include <glibtop.h>
#include <glibtop/global.h>
#include <glibtop/open.h>
#include <glibtop/glibtop-backend.h>
#include <glibtop/glibtop-backend-info.h>
#endif

View File

@@ -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>

View File

@@ -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 '';

View File

@@ -1,10 +0,0 @@
.deps
.libs
Makefile
Makefile.in
*.lo
*.la
marshal.c
demarshal.c
libgtop_server
command.h

View File

@@ -1,125 +0,0 @@
2004-08-22 Benoît Dejean <tazforever@dlfp.org>
* server.c: (handle_slave_connection): Replaced //comment by /*C89*/.
2004-03-09 Bastien Nocera <hadess@hadess.net>
* command.c: (glibtop_call_i):
* demarshal.pl:
* marshal.pl:
* read_data.c: (glibtop_read_data_i):
* server.c: (handle_slave_connection): fix g_malloc usage on non-Linux
platforms (patch by Benoît Dejean <bnet@ifrance.com>)
2003-10-20 Bastien Nocera <hadess@hadess.net>
* backend-server.c: (_open_server):
* backend-server.h:
* command.h.in: s/u_int64_t/guint64/
2003-10-20 Bastien Nocera <hadess@hadess.net>
* backend-server.h:
* command.h.in:
* demarshal.pl:
* server.h: fixed compilation
2003-10-20 Bastien Nocera <hadess@hadess.net>
* backend-server.c: (_open_server):
* command.c: (glibtop_call_i):
* demarshal.pl:
* marshal.pl:
* read_data.c: (glibtop_read_data_i):
* server.c: (main), (handle_slave_connection):
replace all the xmalloc crap by glib memory management functions
2003-10-20 Bastien Nocera <hadess@hadess.net>
* Makefile.am: removed traces of guile, intllibs and libgnomesupport
2000-11-27 Martin Baulig <martin@home-of-linux.org>
* backend-server.c (backend_server_quark): New global variable.
(_open_server, _close_server): Use the quark.
* commands.c: Likewise.
2000-11-26 Martin Baulig <martin@home-of-linux.org>
* backend-server.h: New file.
(backend_server_private): New struct, formerly known
as glibtop_backend_private.
* glibtop-backend-private.h: Removed.
* backend-server.c: (_open_server): Use g_object_set_data()
to set add the backend_server_private data to the glibtop_backend,
don't override `backend->_priv'.
(_close_server): Use g_object_get_data() to get the data.
[FIXME: Use quarks directly.]
* read.c: (glibtop_read_i): Replaced the glibtop_server and
glibtop_backend arguments with backend_server_private.
* read_data.c: (glibtop_read_data_i): Likewise.
* write.c: (glibtop_write_i): Likewise.
2000-02-22 Martin Baulig <martin@home-of-linux.org>
* backend-sysdeps.c (LibGTopBackendInfo): Call this
`LibGTopBackendInfo_Server' when we don't use gmodule.
2000-02-22 Martin Baulig <martin@home-of-linux.org>
* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR)
when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise.
2000-01-18 Martin Baulig <martin@home-of-linux.org>
* demarshal.pl: Only emit code for functions which are
really suid/sgid.
2000-01-13 Martin Baulig <martin@home-of-linux.org>
* write.c (glibtop_write_i): The buffer which we write is
now a `const'.
2000-01-12 Martin Baulig <martin@home-of-linux.org>
* Makefile.am: Install everything except the server binary
in $(LIBGTOP_BACKEND_DIR).
* libgtop-server.backend: New file.
* backend-server.c (glibtop_backend_server): Renamed to
`LibGTopBackendInfo'.
2000-01-08 Martin Baulig <martin@home-of-linux.org>
* command.h.in (glibtop_response): New structure.
2000-01-02 Martin Baulig <martin@home-of-linux.org>
* command.pl: New file. Creates `command.h' from `command.h.in'.
* command.h.in: New file. Template file for `command.h'.
* io.c, version.c: New files. Copied here from `src/daemon'.
* demarshal.pl: New file. Automatically creates `demarshal.c'.
* demarshal.c: This automatically created file handles the
demarshalling in the libgtop_server.
* Makefile.am: Build the `libgtop_server' here.
* server.c, server.h: New files. Copied here from `src/daemon'.
2000-01-01 Martin Baulig <martin@home-of-linux.org>
Initial version of the "glibtop-backend-server" backend.
* command.c, read.c, read_data.c, write.c: New files. Moved here
from the `lib' directory.
* backend-server.c: New file.
* glibtop-backend-private.h: New file.
* marshal.pl: New file. Automatically creates `marshal.c'.

View File

@@ -1,84 +0,0 @@
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
INCLUDES = @INCLUDES@ -D_BSD \
-DLIBGTOP_COMPILE_SYSTEM=\"`uname -s`\" \
-DLIBGTOP_COMPILE_RELEASE=\"`uname -r`\" \
-DLIBGTOP_COMPILE_MACHINE=\"`uname -m`\"
backenddir = @LIBGTOP_BACKEND_DIR@
if LIBGTOP_USE_GMODULE
backendlibdir = $(backenddir)
else
backendlibdir = $(libdir)
endif
dynamic_ldflags = @libgtop_dynamic_ldflags@
backend_DATA = \
libgtop-server.backend
noinst_HEADERS = \
backend-server.h
backendlib_LTLIBRARIES = \
libgtop_backend_server.la
bin_PROGRAMS = \
@server_programs@
EXTRA_PROGRAMS = \
libgtop_server
libgtop_backend_server_la_SOURCES = \
backend-server.c \
marshal.c \
command.c \
read.c \
read_data.c \
write.c
libgtop_backend_server_la_LDFLAGS = \
$(LT_VERSION_INFO) $(dynamic_ldflags)
libgtop_server_SOURCES = \
server.c \
server.h \
demarshal.c \
version.c \
io.c
libgtop_server_LDADD = \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid.la \
$(top_builddir)/sysdeps/common/libgtop_suid_common.la
if ENABLE_STATIC
libgtop_server_LDFLAGS = -static
endif
BUILT_SOURCES = \
marshal.c \
demarshal.c \
command.h
EXTRA_DIST = \
marshal.pl \
demarshal.pl \
command.pl \
command.h.in \
libgtop-server.backend
CLEANFILES = $(BUILT_SOURCES)
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
mv tmp-t marshal.c
demarshal.c: demarshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/demarshal.pl < $(top_srcdir)/features.def > tmp-t
mv tmp-t demarshal.c
command.h: command.pl command.h.in $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/command.pl $(top_srcdir)/features.def $(srcdir)/command.h.in > tmp-t
mv tmp-t command.h

View File

@@ -1,113 +0,0 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <backend-server.h>
static int
_open_server (glibtop_server *, glibtop_backend *, guint64, const char **);
static int
_close_server (glibtop_server *, glibtop_backend *, void *);
extern glibtop_call_vector glibtop_backend_server_call_vector;
#ifdef LIBGTOP_USE_GMODULE
glibtop_backend_info LibGTopBackendInfo = {
"glibtop-backend-server", _open_server, _close_server,
&glibtop_backend_server_call_vector
};
#else
glibtop_backend_info LibGTopBackendInfo_Server = {
"glibtop-backend-server", _open_server, _close_server,
&glibtop_backend_server_call_vector
};
#endif
static int
_open_server (glibtop_server *server, glibtop_backend *backend,
guint64 features, const char **backend_args)
{
backend_server_private *priv;
priv = g_malloc (sizeof (backend_server_private));
glibtop_backend_set_closure_data (backend, priv);
#ifdef DEBUG
fprintf (stderr, "open_server - %p, %p, %p\n", server, backend, priv);
fprintf (stderr, "Opening pipe to server (%s).\n", LIBGTOP_SERVER);
#endif
if (pipe (priv->input) || pipe (priv->output)) {
glibtop_warn_io_r (server, "cannot make a pipe");
return -1;
}
priv->pid = fork ();
if (priv->pid < 0) {
glibtop_warn_io_r (server, "fork failed");
return -1;
} else if (priv->pid == 0) {
close (0); close (1);
close (priv->input [0]);
close (priv->output [1]);
dup2 (priv->input [1], 1);
dup2 (priv->output [0], 0);
execl (LIBGTOP_SERVER, "libgtop-server", NULL);
glibtop_error_io_r (server, "execl (%s)",
LIBGTOP_SERVER);
_exit (2);
}
close (priv->input [1]);
close (priv->output [0]);
glibtop_server_ref (server);
priv->server = server;
return 0;
}
static int
_close_server (glibtop_server *server, glibtop_backend *backend,
void *closure)
{
backend_server_private *priv = closure;
kill (priv->pid, SIGKILL);
close (priv->input [0]);
close (priv->output [1]);
glibtop_server_unref (priv->server);
priv->pid = 0;
g_free (priv);
return 0;
}

View File

@@ -1,65 +0,0 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef __GLIBTOP_BACKEND_COMMON_H__
#define __GLIBTOP_BACKEND_COMMON_H__
#include <glibtop.h>
#include <glibtop/global.h>
#include <glibtop/open.h>
#include <glibtop/glibtop-backend.h>
#include <glibtop/glibtop-backend-info.h>
typedef struct _backend_server_private backend_server_private;
struct _backend_server_private
{
guint64 flags;
int input [2]; /* Pipe client <- server */
int output [2]; /* Pipe client -> server */
pid_t pid; /* PID of the server */
glibtop_server *server;
};
void *
glibtop_call_i (glibtop_server *server, backend_server_private *priv,
unsigned command, size_t send_size, const void *send_ptr,
size_t data_size, const void *data_ptr,
size_t recv_size, void *recv_ptr,
int *retval_ptr);
void
glibtop_read_i (backend_server_private *priv, size_t size, void *buf);
void *
glibtop_read_data_i (backend_server_private *priv);
void
glibtop_write_i (backend_server_private *priv, size_t size, const void *buf);
#endif

View File

@@ -1,94 +0,0 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <backend-server.h>
#include "command.h"
void *
glibtop_call_i (glibtop_server *server, backend_server_private *priv,
unsigned command, size_t send_size, const void *send_buf,
size_t data_size, const void *data_buf,
size_t recv_size, void *recv_ptr,
int *retval_ptr)
{
glibtop_command cmnd = {0};
glibtop_response resp = {0};
cmnd.command = command;
/* If send_size is less than _GLIBTOP_PARAM_SIZE (normally 16 Bytes), we
* send it together with command, so we only need one system call instead
* of two. */
if (send_size <= _GLIBTOP_PARAM_SIZE) {
memcpy (cmnd.parameter, send_buf, send_size);
cmnd.param_size = send_size;
} else {
cmnd.send_size = send_size;
}
cmnd.data_size = data_size;
glibtop_write_i (priv, sizeof (glibtop_command), &cmnd);
if (data_size) {
#ifdef SLAVE_DEBUG
fprintf (stderr, "SENDING %d bytes of DATA.\n", data_size);
#endif
glibtop_write_i (priv, data_size, data_buf);
}
glibtop_read_i (priv, sizeof (glibtop_response), &resp);
#ifdef SLAVE_DEBUG
fprintf (stderr, "RESPONSE: %d - %d - %ld - %ld - %p - %ld\n",
resp.retval, resp.glibtop_errno,
(long) resp.recv_size, (long) resp.data_size,
recv_ptr, (long) recv_size);
#endif
if (retval_ptr)
*retval_ptr = resp.glibtop_errno;
if (resp.recv_size != recv_size) {
glibtop_warn_r (server, "Expected %ld bytes, but got %ld.",
(long) recv_size, (long) resp.recv_size);
return NULL;
}
if (recv_ptr)
glibtop_read_i (priv, recv_size, recv_ptr);
if (resp.data_size) {
void *ptr = g_malloc (resp.data_size);
glibtop_read_i (priv, resp.data_size, ptr);
return ptr;
}
return NULL;
}

View File

@@ -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;

View File

@@ -1,385 +0,0 @@
#!/usr/bin/perl
require 'c_types.pl';
$[ = 1; # set array base to 1
$, = ' '; # set output field separator
$\ = "\n"; # set output record separator
$always_use_temp_storage = 0;
sub toupper {
local($_) = @_;
tr/a-z/A-Z/;
return $_;
}
sub tolower {
local($_) = @_;
tr/A-Z/a-z/;
return $_;
}
print '/* demarshal.c */';
print "/* This is a generated file. Please modify `demarshal.pl' */";
print '';
print '#include <glibtop.h>';
print '#include <glibtop/open.h>';
print '';
print '#include <glibtop/sysdeps.h>';
print '#include <glibtop/union.h>';
print '';
print '#include <glibtop/backend.h>';
print '';
print '#include <glibtop-backend-private.h>';
print '#include "server.h"';
print '';
$feature_count = 0;
while (<>) {
chop; # strip record separator
if (/^[^\#]/) {
&output($_);
}
}
sub output {
local($line) = @_;
@line_fields = split(/\|/, $line, 9999);
$retval = $line_fields[1];
$element_def = $line_fields[3];
$feature = $line_fields[2];
$param_def = $line_fields[4];
return if $feature =~ /^@/;
$name = 'glibtop_'.$feature;
$orig = $feature;
$feature =~ s/^@//;
$space = $feature;
$space =~ s/./ /g;
$features{++$feature_count} = $feature;
$orig_retval = $retval;
if ($retval eq 'retval') {
$retval_param = '&retval';
$call_prefix = '';
$call_prefix_space = '';
$prefix = 'retval = ';
$prefix_space = ' ';
$retval = 'int';
} elsif ($retval !~ /^void$/) {
$retval_param = 'NULL';
$prefix = 'retval = ';
$prefix_space = ' ';
$call_prefix = 'retval = ';
$call_prefix_space = ' ';
} else {
$retval_param = 'NULL';
$call_prefix = '';
$call_prefix_space = '';
$prefix = '';
$prefix_space = '';
}
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
}
$need_temp_storage = $always_use_temp_storage;
$first_param_name = '';
$size_code = "\t/* send size */\n";
$size_code .= "\t_LIBGTOP_SEND_len = 0;\n";
$local_var_decl_code = '';
$local_var_decl_code .= "\tsize_t _LIBGTOP_SEND_len, _LIBGTOP_RECV_len;\n";
$local_var_decl_code .= "\toff_t _LIBGTOP_SEND_offset;\n";
$local_var_decl_code .= "\tchar *_LIBGTOP_RECV_buf, *_LIBGTOP_RECV_ptr;\n";
$local_var_decl_code .= "\tconst char *_LIBGTOP_SEND_ptr;\n";
$local_var_decl_code .= sprintf
(qq[\tglibtop_%s %s;\n], $feature, $feature);
if ($retval !~ /^void$/) {
$local_var_decl_code .= sprintf ("\t%s retval = (%s) 0;\n",
$retval, $retval);
}
$init_local_var_code = "\t/* variable initialization */\n";
$init_local_var_code .= sprintf
(qq[\tmemset (&%s, 0, sizeof (glibtop_%s));\n], $feature, $feature);
$init_local_var_code .= "\t_LIBGTOP_SEND_offset = 0;\n";
$init_local_var_code .= "\t_LIBGTOP_SEND_ptr = ".
"(char *) send_ptr;\n";
$demarshal_code = '';
$call_param = '';
$param_decl = '';
$need_temp_len = 0;
$nr_params = (@params = split(/:/, $param_def, 9999));
for ($param = 1; $param <= $nr_params; $param++) {
$list = $params[$param];
$type = $params[$param];
$type =~ s/\(.*//;
$list =~ s/^.*\(//;
$list =~ s/\)$//;
$count = (@fields = split(/,/, $list, 9999));
for ($field = 1; $field <= $count; $field++) {
my $c_type = $typeinfo->{$type}->[1];
if ($first_param_name eq '') {
$first_param_name = $fields[$field];
}
if ($typeinfo->{$type}->[2]) {
$need_temp_storage = 1;
}
if ($param_decl eq '') {
$param_decl = ",\n " . $space . ' ';
} else {
$param_decl = $param_decl . ', ';
}
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
$call_param = $call_param . ', _LIBGTOP_demarshal_' . $fields[$field];
$size_code .= "\t_LIBGTOP_SEND_len += ";
if ($typeinfo->{$type}->[2]) {
$size_code .= sprintf ("sizeof (size_t)");
} else {
$size_code .= sprintf ("sizeof (%s)", $c_type);
}
$size_code .= ";\n";
$local_var_decl_code .= sprintf
(qq[\t%s _LIBGTOP_demarshal_%s;\n], $c_type, $fields[$field]);
$init_local_var_code .= sprintf
(qq[\tmemset (&_LIBGTOP_demarshal_%s, 0, sizeof (%s));\n],
$fields[$field], $c_type);
$demarshal_code .= "\t_LIBGTOP_SEND_ptr = ".
"(char *) send_ptr + _LIBGTOP_SEND_offset;\n";
if ($typeinfo->{$type}->[2]) {
$demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_TEMP_len, _LIBGTOP_SEND_ptr, sizeof (size_t));\n");
$demarshal_code .= sprintf
(qq[\t_LIBGTOP_DATA_len += _LIBGTOP_TEMP_len;\n]);
$demarshal_code .= sprintf
(qq[\tif (_LIBGTOP_DATA_len > data_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n]);
$demarshal_code .= sprintf
(qq[\t_LIBGTOP_DATA_offset += _LIBGTOP_TEMP_len;\n]);
}
if (defined $demarshal_funcs->{$type}) {
$demarshal_code .= $demarshal_funcs->{$type}->($c_type, $fields[$field], "\t");
} else {
$demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_demarshal_%s, _LIBGTOP_SEND_ptr, %s);\n",
$fields[$field], "sizeof ($c_type)");
}
$demarshal_code .= "\t_LIBGTOP_SEND_offset += ";
if ($typeinfo->{$type}->[2]) {
$demarshal_code .= sprintf ("sizeof (size_t)");
} else {
$demarshal_code .= sprintf ("sizeof (%s)", $c_type);
}
$demarshal_code .= ";\n";
}
}
if (!($demarshal_code eq '')) {
$demarshal_code = sprintf (qq[\t/* demarshal start */\n%s\n],
$demarshal_code);
}
if ($line_fields[3] eq '') {
$call_code = sprintf
("\tretval = glibtop_get_%s_p (server%s);\n",
$feature, $call_param);
} elsif ($line_fields[3] eq 'array') {
$call_code = sprintf
("\tretval = glibtop_get_%s_p (server, &array%s);\n",
$feature, $call_param);
$local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]);
} elsif ($line_fields[3] =~ /^array/) {
$call_code = sprintf
("\tretval = glibtop_get_%s_p (server, &array, &%s%s);\n",
$feature, $feature, $call_param);
$local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]);
} else {
$call_code = sprintf
("\tretval = glibtop_get_%s_p (server, &%s%s);\n",
$feature, $feature, $call_param);
}
if ($orig_retval eq 'retval') {
$call_code .= sprintf
(qq[\tif (retval_ptr)\n\t\t*retval_ptr = retval;\n]);
} else {
$call_code .= sprintf
(qq[\tif (retval_ptr)\n\t\t*retval_ptr = server->glibtop_errno;\n]);
}
$size_code .= sprintf
(qq[\tif (_LIBGTOP_SEND_len != send_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n\n]);
$size_code .= "\t/* recv size */\n";
$size_code .= "\t_LIBGTOP_RECV_len = 0;\n";
if ($line_fields[3] eq '') {
} elsif ($line_fields[3] eq 'array') {
$size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n";
} elsif ($line_fields[3] =~ /^array/) {
$size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n";
$size_code .= sprintf
(qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature);
} else {
$size_code .= sprintf
(qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature);
}
$size_code .= "\n";
$size_code .= "\t/* recv buffer */\n";
if ($line_fields[3] eq '') {
$size_code .= "\t_LIBGTOP_RECV_buf = NULL;\n";
} else {
$size_code .= "\t_LIBGTOP_RECV_buf = g_malloc (_LIBGTOP_RECV_len);\n";
}
$size_code .= "\t_LIBGTOP_RECV_ptr = _LIBGTOP_RECV_buf;\n\n";
$recv_buf_code = '';
if ($line_fields[3] eq '') {
} elsif ($line_fields[3] eq 'array') {
$recv_buf_code = "\t/* write recv buffer */\n";
$recv_buf_code .= sprintf
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]);
$recv_buf_code .= sprintf
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]);
} elsif ($line_fields[3] =~ /^array/) {
$recv_buf_code = "\t/* write recv buffer */\n";
$recv_buf_code .= sprintf
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]);
$recv_buf_code .= sprintf
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]);
$recv_buf_code .= sprintf
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n],
$feature, $feature);
$recv_buf_code .= sprintf
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature);
} else {
$recv_buf_code = "\t/* write recv buffer */\n";
$recv_buf_code .= sprintf
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n],
$feature, $feature);
$recv_buf_code .= sprintf
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature);
}
$recv_buf_code .= "\n";
$recv_buf_code .= "\t*recv_buf_ptr = _LIBGTOP_RECV_buf;\n";
$recv_buf_code .= "\t*recv_size_ptr = _LIBGTOP_RECV_len;\n";
if ($orig_retval eq 'pointer(string)') {
$need_temp_storage = 1;
$local_var_decl_code .= "\tchar **_LIBGTOP_TEMP_ptr;\n";
$local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_ptr;\n";
$local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_base;\n";
$local_var_decl_code .= "\toff_t _LIBGTOP_ARRAY_offset;\n";
$local_var_decl_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n";
$recv_buf_code .= "\n";
$recv_buf_code .= "\t_LIBGTOP_TEMP_len = 0;\n";
$recv_buf_code .= "\t_LIBGTOP_TEMP_ptr = retval;\n";
$recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++)\n";
$recv_buf_code .= "\t\t_LIBGTOP_TEMP_len += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
$recv_buf_code .= "\n";
$recv_buf_code .= "\t_LIBGTOP_TEMP_len += sizeof (off_t) + 1;\n";
$recv_buf_code .= "\t_LIBGTOP_TEMP_len += array.number * sizeof (off_t);\n";
$recv_buf_code .= "\t_LIBGTOP_ARRAY_base = g_malloc (_LIBGTOP_TEMP_len);";
$recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = _LIBGTOP_ARRAY_base;\n";
$recv_buf_code .= "\t_LIBGTOP_ARRAY_offset = array.number * sizeof (off_t);\n";
$recv_buf_code .= "\t_LIBGTOP_ARRAY_offset += sizeof (off_t);\n";
$recv_buf_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) _LIBGTOP_ARRAY_ptr;\n";
$recv_buf_code .= "\n";
$recv_buf_code .= "\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n";
$recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n";
$recv_buf_code .= "\t\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n";
$recv_buf_code .= "\t\t_LIBGTOP_ARRAY_offset += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
$recv_buf_code .= "\t}\n\n";
$recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) _LIBGTOP_ARRAY_off_ptr;\n";
$recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n";
$recv_buf_code .= "\t\tstrcpy (_LIBGTOP_ARRAY_ptr, *_LIBGTOP_TEMP_ptr);\n";
$recv_buf_code .= "\t\t_LIBGTOP_ARRAY_ptr += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
$recv_buf_code .= "\t}\n\n";
$recv_buf_code .= "\tif (recv_data_ptr) {\n";
$recv_buf_code .= "\t\t*recv_data_ptr = _LIBGTOP_ARRAY_base;\n";
$recv_buf_code .= "\t\t*recv_data_size_ptr = _LIBGTOP_TEMP_len;\n";
$recv_buf_code .= "\t}\n";
} elsif ($line_fields[3] =~ /^array/) {
$recv_buf_code .= "\n";
$recv_buf_code .= "\tif (recv_data_ptr) {\n";
$recv_buf_code .= "\t\t*recv_data_ptr = retval;\n";
$recv_buf_code .= "\t\t*recv_data_size_ptr = array.total;\n";
$recv_buf_code .= "\t}\n";
}
if ($need_temp_storage) {
$local_var_decl_code .= "\tsize_t _LIBGTOP_TEMP_len;\n";
$local_var_decl_code .= "\tsize_t _LIBGTOP_DATA_len;\n";
$local_var_decl_code .= "\toff_t _LIBGTOP_DATA_offset;\n";
$local_var_decl_code .= "\tchar *_LIBGTOP_DATA_ptr;\n";
$init_local_var_code .= "\t_LIBGTOP_DATA_len = 0;\n";
$init_local_var_code .= "\t_LIBGTOP_DATA_offset = 0;\n";
$init_local_var_code .= "\t_LIBGTOP_DATA_ptr = ".
"(char *) data_ptr;\n";
}
$func_decl_code = sprintf
(qq[static int\n_glibtop_demarshal_%s_i (glibtop *server, glibtop_backend *backend, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)\n], $feature);
if (!($call_code eq '')) {
$call_code .= "\n";
}
$func_body_code = sprintf
(qq[%s%s%s%s], $size_code, $demarshal_code, $call_code, $recv_buf_code);
$total_code = sprintf
(qq[%s{\n%s\n%s\n%s\n\treturn 0;\n}\n],
$func_decl_code, $local_var_decl_code, $init_local_var_code,
$func_body_code);
$total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n",
&toupper($feature), $total_code,
&toupper($feature));
print $total_code;
}
$func_decl_code = sprintf
(qq[int\nglibtop_demarshal_func_i (glibtop *server, glibtop_backend *backend, unsigned command, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)]);
$switch_body_code = '';
for ($nr = 1; $nr <= $feature_count; $nr++) {
$feature = $features{$nr};
$switch_body_code .= sprintf
(qq[#if GLIBTOP_SUID_%s\n\tcase GLIBTOP_CMND_%s:\n\t\treturn _glibtop_demarshal_%s_i\n\t\t\t(server, backend, send_ptr, send_size,\n\t\t\t data_ptr, data_size,\n\t\t\t recv_buf_ptr, recv_size_ptr,\n\t\t\t recv_data_ptr, recv_data_size_ptr, retval_ptr);\n#endif /* GLIBTOP_SUID_%s */\n],
&toupper ($feature), &toupper ($feature), $feature, &toupper ($feature));
}
$switch_code = sprintf
(qq[\tswitch (command) {\n%s\tdefault:\n\t\treturn -GLIBTOP_ERROR_INVALID_ARGUMENT;\n\t}\n], $switch_body_code);
$total_code = sprintf
(qq[%s\n{\n%s}\n\n], $func_decl_code, $switch_code);
print $total_code;
1;

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -1,305 +0,0 @@
#!/usr/bin/perl
require 'c_types.pl';
$[ = 1; # set array base to 1
$, = ' '; # set output field separator
$\ = "\n"; # set output record separator
$always_use_temp_storage = 1;
sub toupper {
local($_) = @_;
tr/a-z/A-Z/;
return $_;
}
sub tolower {
local($_) = @_;
tr/A-Z/a-z/;
return $_;
}
print '/* marshal.c */';
print "/* This is a generated file. Please modify `marshal.pl' */";
print '';
print '#include <backend-server.h>';
print '';
print '#include <glibtop/sysdeps.h>';
print '#include <glibtop/union.h>';
print '';
print '#include "command.h"';
print '#include <glibtop/call-vector.h>';
print '';
$feature_count = 0;
while (<>) {
chop; # strip record separator
if (/^[^#]/) {
&output($_);
}
}
sub output {
local($line) = @_;
@line_fields = split(/\|/, $line, 9999);
$retval = $line_fields[1];
$feature = $line_fields[2];
$param_def = $line_fields[4];
$orig = $feature;
$feature =~ s/^@//;
$space = $feature;
$space =~ s/./ /g;
$features{++$feature_count} = $orig;
return if $orig =~ /^@/;
$orig_retval = $retval;
if ($retval eq 'retval') {
$retval_param = '&retval';
$call_prefix = '';
$call_prefix_space = '';
$prefix = 'retval = ';
$prefix_space = ' ';
$retval = 'int';
}
elsif ($retval !~ /^void$/) {
$retval_param = 'NULL';
$prefix = 'retval = ';
$prefix_space = ' ';
$call_prefix = 'retval = ';
$call_prefix_space = ' ';
}
else {
$retval_param = 'NULL';
$call_prefix = '';
$call_prefix_space = '';
$prefix = '';
$prefix_space = '';
}
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
}
$need_temp_storage = $always_use_temp_storage;
$local_var_init_code = "\t/* variable initialization */\n";
$local_var_init_code .= "\t_LIBGTOP_SEND_len = 0;\n";
$local_var_init_code .= "\t_LIBGTOP_DATA_len = 0;\n";
$local_var_init_code .= "\t_LIBGTOP_SEND_offset = 0;\n";
$local_var_init_code .= "\t_LIBGTOP_SEND_ptr = ".
"(char *) _LIBGTOP_SEND_buf;\n";
$marshal_code = "\t/* marshal start */\n";
$marshal_code .= "\tmemset (_LIBGTOP_SEND_buf, 0, _LIBGTOP_SEND_len);\n";
$first_param_name = '';
$size_code = '';
$call_param = '';
$param_decl = '';
$need_temp_len = 0;
$nr_params = (@params = split(/:/, $param_def, 9999));
for ($param = 1; $param <= $nr_params; $param++) {
$list = $params[$param];
$type = $params[$param];
$type =~ s/\(.*//;
$list =~ s/^.*\(//;
$list =~ s/\)$//;
$count = (@fields = split(/,/, $list, 9999));
for ($field = 1; $field <= $count; $field++) {
my $c_type = $typeinfo->{$type}->[1];
if ($first_param_name eq '') {
$first_param_name = $fields[$field];
}
if ($typeinfo->{$type}->[2]) {
$need_temp_storage = 1;
}
if ($param_decl eq '') {
$param_decl = ",\n " . $space . ' ';
}
else {
$param_decl = $param_decl . ', ';
}
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
$call_param = $call_param . ', ' . $fields[$field];
$size_code .= "\t_LIBGTOP_SEND_len += ";
if ($typeinfo->{$type}->[2]) {
$size_code .= sprintf ("sizeof (size_t)");
} else {
$size_code .= sprintf ("sizeof (%s)", $c_type);
}
$size_code .= ";\n";
if (defined $sizeof_funcs->{$type}) {
$size_code .= "\t_LIBGTOP_DATA_len += ";
$size_code .= $sizeof_funcs->{$type}->($fields[$field]);
$size_code .= ";\n";
}
$marshal_code .= "\t_LIBGTOP_SEND_ptr = ".
"(char *) _LIBGTOP_SEND_buf + _LIBGTOP_SEND_offset;\n";
if (defined $marshal_funcs->{$type}) {
$marshal_code .= $marshal_funcs->{$type}->($c_type, $fields[$field], "\t");
} else {
$marshal_code .= sprintf ("\tmemcpy (_LIBGTOP_SEND_ptr, %s, %s);\n",
'&'.$fields[$field], "sizeof ($c_type)");
}
$marshal_code .= "\t_LIBGTOP_SEND_offset += ";
if ($typeinfo->{$type}->[2]) {
$marshal_code .= sprintf ("sizeof (size_t)");
} else {
$marshal_code .= sprintf ("sizeof (%s)", $c_type);
}
$marshal_code .= ";\n";
}
}
$local_var_code = "";
$local_var_code .= "\tunsigned _LIBGTOP_SEND_offset, _LIBGTOP_SEND_len;\n";
$local_var_code .= "\tunsigned _LIBGTOP_DATA_len;\n";
if ($need_temp_len) {
$local_var_code .= "\tunsigned _LIBGTOP_SEND_temp_len;\n";
}
$local_var_code .= "\tvoid *_LIBGTOP_SEND_buf, *_LIBGTOP_DATA_buf;\n";
$local_var_code .= "\tchar *_LIBGTOP_SEND_ptr, *_LIBGTOP_DATA_ptr;\n";
if ($retval !~ /^void$/) {
$local_var_code .= sprintf ("\t%s retval = (%s) 0;\n",
$retval, $retval);
}
$total_code = '';
$send_buf_code = "\t/* send buffer */\n";
$send_buf_code .= "\t_LIBGTOP_SEND_buf = ";
if ($need_temp_storage) {
$send_buf_code .= "g_malloc (_LIBGTOP_SEND_len+1)";
} else {
$send_buf_code .= '(void *) &'.$first_param_name;
}
$send_buf_code .= ";\n\n";
$send_buf_code .= "\t/* data buffer */\n";
$send_buf_code .= "\t_LIBGTOP_DATA_buf = ";
if ($need_temp_storage) {
$send_buf_code .= "g_malloc (_LIBGTOP_DATA_len+1)";
} else {
$send_buf_code .= 'NULL';
}
$send_buf_code .= ";\n";
$send_buf_code .= "\t_LIBGTOP_DATA_ptr = _LIBGTOP_DATA_buf;\n";
$call_code = '';
$call_code .= sprintf ("\t%sglibtop_call_i (server, closure, GLIBTOP_CMND_%s,\n",
$call_prefix, &toupper($feature));
$call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space,
"_LIBGTOP_SEND_len", "_LIBGTOP_SEND_buf");
$call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space,
"_LIBGTOP_DATA_len", "_LIBGTOP_DATA_buf");
if ($line_fields[3] eq '') {
$call_code .= sprintf ("\t\t\t%s0, NULL,\n", $call_prefix_space);
} elsif ($line_fields[3] eq 'array') {
$call_code .= sprintf ("\t\t\t%ssizeof (glibtop_array), array,\n",
$call_prefix_space);
} else {
$call_code .= sprintf ("\t\t\t%ssizeof (glibtop_%s), buf,\n",
$call_prefix_space, $feature);
}
$call_code .= sprintf ("\t\t\t%s%s);\n", $call_prefix_space, $retval_param);
if ($need_temp_storage) {
$send_buf_free_code = "\tg_free (_LIBGTOP_SEND_buf);\n";
$send_buf_free_code .= "\tg_free (_LIBGTOP_DATA_buf);\n";
} else {
$send_buf_free_code = "";
}
if (!($size_code eq '')) {
$size_code = sprintf (qq[\t/* send size */\n%s\n], $size_code);
}
if ($orig_retval eq 'pointer(string)') {
$call_code .= "\n";
$local_var_code .= "\tchar *_LIBGTOP_ARRAY_ptr, **ptrlist;\n";
$local_var_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n";
$local_var_code .= "\tint i;\n";
$call_code .= "\tptrlist = g_malloc (array->number+1 * sizeof (char *));\n";
$call_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) retval;\n";
$call_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) retval;\n";
$call_code .= "\t_LIBGTOP_ARRAY_off_ptr++;\n\n";
$call_code .= "\tfor (i = 0; i < array->number; i++)\n";
$call_code .= "\t\tptrlist [i] = g_strdup (_LIBGTOP_ARRAY_ptr + *_LIBGTOP_ARRAY_off_ptr++);\n";
$call_code .= "\tptrlist [array->number] = NULL;\n\n";
$call_code .= "\tg_free (retval);\n";
$call_code .= "\tretval = ptrlist;\n";
}
$total_code .= sprintf ("%s%s\n%s\n%s\n%s\n",
$size_code, $send_buf_code, $marshal_code,
$call_code, $send_buf_free_code);
$return_code = '';
if ($retval !~ /^void$/) {
$return_code .= "\treturn retval;\n";
} else {
$return_code .= "\treturn;\n";
}
$total_code .= $return_code;
$func_decl = 'static '.$retval."\n";
if ($line_fields[3] eq '') {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n",
$feature, $param_decl);
} elsif ($line_fields[3] eq 'array') {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n",
$feature, $param_decl);
} elsif ($line_fields[3] =~ /^array/) {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n",
$feature, 'glibtop_'.$feature, $param_decl);
} else {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n",
$feature, 'glibtop_'.$feature, $param_decl);
}
$total_code = sprintf ("%s{\n%s\n%s\n%s\n%s}\n", $func_decl,
$local_var_code, $local_var_init_code,
$total_code);
$total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n",
&toupper($feature), $total_code,
&toupper($feature));
print $total_code;
}
$call_vector_code = '';
for ($nr = 1; $nr <= $feature_count; $nr++) {
$feature = $features{$nr};
$orig = $feature;
$feature =~ s/^@//;
if ($orig =~ /^@/) {
$call_vector_code .= sprintf (qq[\tNULL,\n]);
} else {
$call_vector_code .= sprintf
(qq[\#if GLIBTOP_SUID_%s\n\t_glibtop_get_%s_c,\n\#else\n\tNULL,\n\#endif\n],
&toupper($feature), $feature);
}
}
print 'glibtop_call_vector glibtop_backend_server_call_vector = {';
print $call_vector_code;
print '};';
print '';

View File

@@ -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);
}

View File

@@ -1,58 +0,0 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <backend-server.h>
void *
glibtop_read_data_i (backend_server_private *priv)
{
size_t size;
void *ptr;
int ret;
#ifdef DEBUG
fprintf (stderr, "LIBRARY: reading %d data bytes.\n", sizeof (size_t));
#endif
ret = read (priv->input [0], (void *)&size, sizeof (size_t));
if (ret < 0)
glibtop_error_io_r (priv->server, "read data size");
#ifdef DEBUG
fprintf (stderr, "LIBRARY: really reading %d data bytes (ret = %d).\n", size, ret);
#endif
if (!size) return NULL;
ptr = g_malloc (size);
ret = read (priv->input [0], ptr, size);
if (ret < 0)
glibtop_error_io_r (priv->server, "read data %d bytes");
return ptr;
}

View File

@@ -1,189 +0,0 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include "server.h"
static glibtop _glibtop_global_server;
glibtop *glibtop_global_server = &_glibtop_global_server;
#include <glibtop.h>
#include <glibtop/union.h>
#include <glibtop/sysdeps.h>
#include <sys/utsname.h>
const unsigned long glibtop_server_features =
GLIBTOP_SUID_CPU +
GLIBTOP_SUID_MEM +
GLIBTOP_SUID_SWAP +
GLIBTOP_SUID_UPTIME +
GLIBTOP_SUID_LOADAVG +
GLIBTOP_SUID_SHM_LIMITS +
GLIBTOP_SUID_MSG_LIMITS +
GLIBTOP_SUID_SEM_LIMITS +
GLIBTOP_SUID_PROCLIST +
GLIBTOP_SUID_PROC_STATE +
GLIBTOP_SUID_PROC_UID +
GLIBTOP_SUID_PROC_MEM +
GLIBTOP_SUID_PROC_TIME +
GLIBTOP_SUID_PROC_SIGNAL +
GLIBTOP_SUID_PROC_KERNEL +
GLIBTOP_SUID_PROC_SEGMENT +
GLIBTOP_SUID_PROC_ARGS +
GLIBTOP_SUID_PROC_MAP +
GLIBTOP_SUID_NETINFO +
GLIBTOP_SUID_NETLOAD +
GLIBTOP_SUID_INTERFACE_NAMES +
GLIBTOP_SUID_PPP;
#include <fcntl.h>
#include <locale.h>
int
main(int argc, char *argv[])
{
struct utsname uts;
int uid, euid, gid, egid;
glibtop *server;
/* !!! WE ARE ROOT HERE - CHANGE WITH CAUTION !!! */
uid = getuid (); euid = geteuid ();
gid = getgid (); egid = getegid ();
if (uname (&uts) < 0) _exit (1);
if (strcmp (uts.sysname, LIBGTOP_COMPILE_SYSTEM) ||
strcmp (uts.release, LIBGTOP_COMPILE_RELEASE) ||
strcmp (uts.machine, LIBGTOP_COMPILE_MACHINE)) {
fprintf (stderr, "Can only run on %s %s %s\n",
LIBGTOP_COMPILE_SYSTEM,
LIBGTOP_COMPILE_RELEASE,
LIBGTOP_COMPILE_MACHINE);
_exit (1);
}
server = glibtop_global_server;
if (!server->_priv)
server->_priv = g_malloc (sizeof (glibtop_server_private));
glibtop_init_p (server, 0, 0);
if (setreuid (euid, uid)) _exit (1);
if (setregid (egid, gid)) _exit (1);
/* !!! END OF SUID ROOT PART !!! */
handle_slave_connection (0, 0);
_exit (0);
}
void
handle_slave_connection (int input, int output)
{
glibtop_command _cmnd, *cmnd = &_cmnd;
glibtop *server = glibtop_global_server;
/* glibtop_send_version_i (glibtop_global_server, output); */
while (do_read (input, cmnd, sizeof (glibtop_command))) {
size_t recv_size = 0, send_size = 0, recv_data_size = 0;
void *recv_ptr = NULL, *recv_data_ptr = NULL, *data_ptr = NULL;
char parameter [BUFSIZ];
int retval, func_retval;
glibtop_response resp;
#ifdef DEBUG
fprintf (stderr, "Slave %d received command "
"%ld from client.\n", getpid (), (long) cmnd->command);
#endif
if (cmnd->send_size >= BUFSIZ)
glibtop_error ("Client sent %d bytes, but buffer is %d",
cmnd->send_size, BUFSIZ);
else if (cmnd->param_size >= BUFSIZ)
glibtop_error ("Client sent %d bytes, but buffer is %d",
cmnd->param_size, BUFSIZ);
memset (parameter, 0, sizeof (parameter));
if (cmnd->send_size) {
#ifdef DEBUG
fprintf (stderr, "Client has %d bytes of data.\n",
cmnd->send_size);
#endif
send_size = cmnd->send_size;
do_read (input, parameter, send_size);
} else if (cmnd->param_size) {
#ifdef DEBUG
fprintf (stderr, "Client has %d bytes of parameter data.\n",
cmnd->param_size);
#endif
send_size = cmnd->param_size;
memcpy (parameter, cmnd->parameter, send_size);
}
if (cmnd->data_size) {
#ifdef DEBUG
fprintf (stderr, "CLIENT has %d bytes of extra data for us.\n",
cmnd->data_size);
#endif
data_ptr = g_malloc (cmnd->data_size);
do_read (input, data_ptr, cmnd->data_size);
}
retval = glibtop_demarshal_func_i (server, NULL,
cmnd->command,
parameter, send_size,
data_ptr, cmnd->data_size,
&recv_ptr, &recv_size,
&recv_data_ptr, &recv_data_size,
&func_retval);
#ifdef DEBUG
fprintf (stderr, "Retval %d / %d - %p - %d\n",
retval, func_retval, recv_ptr, recv_size);
if (recv_data_size) {
fprintf (stderr, "Returning %d bytes of data from %p.\n",
recv_data_size, recv_data_ptr);
}
#endif
memset (&resp, 0, sizeof (glibtop_response));
resp.retval = retval;
resp.glibtop_errno = func_retval;
resp.recv_size = recv_size;
resp.data_size = recv_data_size;
do_output (output, &resp, recv_ptr, recv_data_ptr);
}
}

View File

@@ -1,84 +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/parameter.h>
#include <fcntl.h>
#include <sys/wait.h>
#include <sys/socket.h>
#include <syslog.h>
#include <glibtop/backend.h>
#include <glibtop-backend-private.h>
#include "command.h"
G_BEGIN_DECLS
/* Some don't have LOG_PERROR */
#ifndef LOG_PERROR
#define LOG_PERROR 0
#endif
#define LIBGTOP_VERSION_STRING "Libgtop %s server version %s (%u,%u,%u,%u)."
#if defined(HAVE_GETDTABLESIZE)
#define GET_MAX_FDS() getdtablesize()
#else
/* Fallthrough case - please add other #elif cases above
for different OS's as necessary */
#define GET_MAX_FDS() 256
#endif
void
do_output (int s, glibtop_response *resp, const void *recv_ptr,
const void *data_ptr);
int
do_read (int s, void *ptr, size_t total_size);
void
handle_slave_connection (int input, int output);
int
glibtop_demarshal_func_i (glibtop *server, glibtop_backend *backend, unsigned command, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr);
void
glibtop_send_version_i (glibtop *server, int fd);
extern int enable_debug;
extern int verbose_output;
G_END_DECLS
#endif

View File

@@ -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");
}
}

View File

@@ -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);
}

View File

@@ -1,7 +0,0 @@
.deps
.libs
Makefile
Makefile.in
*.lo
*.la
marshal.c

View File

@@ -1,68 +0,0 @@
2003-10-20 Bastien Nocera <hadess@hadess.net>
* backend-sysdeps.c: (_open_sysdeps): s/u_int64_t/guint64/
2003-10-20 Bastien Nocera <hadess@hadess.net>
* backend-sysdeps.h: fixed compilation
2000-11-26 Martin Baulig <martin@home-of-linux.org>
* glibtop-backend-private.h: Removed.
* backend-sysdeps.h: New files.
* backend-sysdeps.c (_open_sysdeps): Don't overwrite
`backend->_priv'.
2000-11-22 Martin Baulig <martin@home-of-linux.org>
* Makefile.am: Link libgtop_backend_sysdeps.la against
$(top_builddir)/sysdeps/$(sysdeps_dir)/libgtop_sysdeps.la and
$(top_builddir)/lib/libgtop_server.la.
* libgtop-sysdeps.backend: Removed the ExtraLibs section.
2000-02-22 Martin Baulig <martin@home-of-linux.org>
* backend-sysdeps.c (LibGTopBackendInfo): Call this
`LibGTopBackendInfo_Sysdeps' when we don't use gmodule.
2000-02-22 Martin Baulig <martin@home-of-linux.org>
* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR)
when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise.
2000-01-22 Martin Baulig <martin@home-of-linux.org>
* libgtop-sysdeps.backend: Added "ExtraLibs" section to
load `-lgtop_sysdeps'.
2000-01-12 Martin Baulig <martin@home-of-linux.org>
* Makefile.am: Install everything in $(LIBGTOP_BACKEND_DIR).
* libgtop-sysdeps.backend: New file.
* backend-sysdeps.c (glibtop_backend_sysdeps): Renamed to
`LibGTopBackendInfo'.
2000-01-12 Martin Baulig <martin@home-of-linux.org>
* marshal.pl: Create the `_glibtop_init_hook_s' as well.
* marshal.pl: Don't create code for things which are now
in the new `glibtop-backend-common' backend.
2000-01-02 Martin Baulig <martin@home-of-linux.org>
* marshal.pl: New file. Automatically creates `marshal.c'.
* call-vector.c: Removed.
2000-01-01 Martin Baulig <martin@home-of-linux.org>
Initial version of the "glibtop-backend-sysdeps" backend.
* backend-sysdeps.c: New file.
* glibtop-backend-private.h: New file.

View 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

View File

@@ -1,76 +0,0 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <backend-sysdeps.h>
static int
_open_sysdeps (glibtop_server *, glibtop_backend *, guint64, const char **);
static int
_close_sysdeps (glibtop_server *, glibtop_backend *, void *);
extern glibtop_call_vector glibtop_backend_sysdeps_call_vector;
#ifdef LIBGTOP_USE_GMODULE
glibtop_backend_info LibGTopBackendInfo = {
"glibtop-backend-sysdeps", _open_sysdeps, _close_sysdeps,
&glibtop_backend_sysdeps_call_vector
};
#else
glibtop_backend_info LibGTopBackendInfo_Sysdeps = {
"glibtop-backend-sysdeps", _open_sysdeps, _close_sysdeps,
&glibtop_backend_sysdeps_call_vector
};
#endif
static int
_open_sysdeps (glibtop_server *server, glibtop_backend *backend,
guint64 features, const char **backend_args)
{
glibtop_init_func_t *init_fkt;
/* Do the initialization, but only if not already initialized. */
if ((server->flags & _GLIBTOP_INIT_STATE_SYSDEPS) == 0) {
glibtop_open_s (server, "glibtop", features, 0);
for (init_fkt = _glibtop_init_hook_s; *init_fkt; init_fkt++)
(*init_fkt) (server);
server->info->sysdeps.pointer_size = sizeof (void*)*8;
server->flags |= _GLIBTOP_INIT_STATE_SYSDEPS;
}
return 0;
}
static int
_close_sysdeps (glibtop_server *server, glibtop_backend *backend,
void *closure)
{
return 0;
}

View File

@@ -1,36 +0,0 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef __GLIBTOP_BACKEND_SYSDEPS_H__
#define __GLIBTOP_BACKEND_SYSDEPS_H__
#include <glibtop.h>
#include <glibtop/global.h>
#include <glibtop/open.h>
#include <glibtop/glibtop-backend.h>
#include <glibtop/glibtop-backend-info.h>
#endif

View File

@@ -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>

View File

@@ -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 '';

View File

@@ -7,13 +7,13 @@ AM_CONFIG_HEADER(config.h)
AC_CANONICAL_SYSTEM
LIBGTOP_MAJOR_VERSION=2
LIBGTOP_MINOR_VERSION=9
LIBGTOP_MICRO_VERSION=91
LIBGTOP_MINOR_VERSION=12
LIBGTOP_MICRO_VERSION=3
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
AM_INIT_AUTOMAKE(libgtop, $LIBGTOP_VERSION)
dnl increment if the interface has additions, changes, removals.
LIBGTOP_CURRENT=5
LIBGTOP_CURRENT=6
dnl increment any time the source changes; set to
dnl 0 if you increment CURRENT
@@ -22,7 +22,7 @@ LIBGTOP_REVISION=0
dnl increment if any interfaces have been added; set to 0
dnl if any interfaces have been removed. removal has
dnl precedence over adding, so set to 0 if both happened.
LIBGTOP_AGE=0
LIBGTOP_AGE=1
# you can set this to `-snap' for instance to create
# a `libgtop-1.x.y-snap.tar.gz' tarball.
@@ -112,28 +112,7 @@ if test x$build_inodedb = xyes ; then
AC_DEFINE(GLIBTOP_INODEDB)
fi
if test x$libgtop_smp = xyes ; then
smp_examples='smp'
smp_static_examples='smp_static'
else
smp_examples=
smp_static_examples=
fi
if test "x$enable_static" != xno; then
static_targets="first_static second_static mountlist_static procmap_static netload_static sysdeps_static timings_static $smp_static_examples pprint_static procargs_static df_static netlist netlist_static openfiles_static"
else
static_targets=""
fi
AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
AM_CONDITIONAL(ENABLE_SHARED, test x$enable_static = xyes)
AC_SUBST(static_targets)
AC_SUBST(smp_examples)
GLIB_REQUIRED=2.4.0
GLIB_REQUIRED=2.6.0
PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED)
AC_SUBST(GLIB_CFLAGS)
@@ -195,28 +174,33 @@ AH_TEMPLATE(HAVE_VMGETINFO, [Define to 1 if you have the 'vmgetinfo' function in
AC_CHECK_LIB(perfstat, vmgetinfo, AC_DEFINE(HAVE_VMGETINFO))
dnl Solaris
AC_CHECK_LIB(kstat, kstat_open)
AC_CHECK_FUNCS(getloadavg swapctl)
AC_CHECK_HEADERS(procfs.h sys/procfs.h, break)
case "$host_os" in
solaris*)
AC_CHECK_LIB(kstat, kstat_open)
AC_CHECK_FUNCS(getloadavg swapctl)
AC_CHECK_HEADERS(procfs.h sys/procfs.h, break)
dnl Some versions of Solaris require -lelf for -lkvm
AC_CHECK_LIB(kvm, kvm_open,[
LIBS="-lkvm $LIBS"
],[AC_MSG_CHECKING(for kvm_open in -lkvm with -lelf)
AC_CACHE_VAL(ac_cv_lib_kvm_with_elf,
[ac_save_LIBS="$LIBS"
LIBS="-lkvm -lelf $LIBS"
AC_TRY_LINK([char kvm_open();], [kvm_open()],
ac_cv_lib_kvm_with_elf=yes, ac_cv_lib_kvm_with_elf=no)
LIBS="$ac_save_LIBS"
])
if test "$ac_cv_lib_kvm_with_elf" = "yes"; then
AC_MSG_RESULT(yes)
LIBS="-lkvm -lelf $LIBS"
else
AC_MSG_RESULT(no)
fi
])
dnl Some versions of Solaris require -lelf for -lkvm
AC_CHECK_LIB(kvm, kvm_open,[
LIBS="-lkvm $LIBS"
],[AC_MSG_CHECKING(for kvm_open in -lkvm with -lelf)
AC_CACHE_VAL(ac_cv_lib_kvm_with_elf,
[ac_save_LIBS="$LIBS"
LIBS="-lkvm -lelf $LIBS"
AC_TRY_LINK([char kvm_open();], [kvm_open()],
ac_cv_lib_kvm_with_elf=yes, ac_cv_lib_kvm_with_elf=no)
LIBS="$ac_save_LIBS"
])
if test "$ac_cv_lib_kvm_with_elf" = "yes"; then
AC_MSG_RESULT(yes)
LIBS="-lkvm -lelf $LIBS"
else
AC_MSG_RESULT(no)
fi
])
;;
esac
dnl For DEC OSF1
AC_CHECK_LIB(mach, vm_statistics)
@@ -254,7 +238,7 @@ AC_TYPE_SIGNAL
AC_FUNC_STRFTIME
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
ALL_LINGUAS="am ar az be bg bn bs ca cs cy da de el en_CA en_GB es et eu fa fi fr ga gl gu he hi hr hu id it ja ko lt lv mi mk ml mn ms nb ne nl nn no or pa pl pt pt_BR ro ru sk sl sq sr sr@Latn sv ta tr uk vi zh_CN zh_TW"
ALL_LINGUAS="am ar az be bg bn bs ca cs cy da de el en_CA en_GB es et eu fa fi fr ga gl gu he hi hr hu id it ja ko ku ky lt lv mi mk ml mn ms nb ne nl nn no or pa pl pt pt_BR ro ru rw sk sl sq sr sr@Latn sv ta th tr uk vi xh zh_CN zh_TW"
GETTEXT_PACKAGE=libgtop-2.0
AC_SUBST(GETTEXT_PACKAGE)

View File

@@ -111,7 +111,7 @@ The @samp{xcpu_} values are for SMP systems - they are the same than
@code{total}, @code{user}, @code{nice}, @code{sys}, @code{idle},
@code{iowait}, @code{irq} and @code{softirq}
except that they are arrays of @code{GLIBTOP_NCPU} (defined in
@file{<glibtop/limits.h>}) elements and contain one value for each CPU
@file{<glibtop/cpu.h>}) elements and contain one value for each CPU
in the system.
@table @code
@@ -680,7 +680,7 @@ Standard unix nice level of process.
Number of additional process groups.
@item groups
Array of additional process groups@*
(@code{GLIBTOP_MAX_GROUPS} is defined in @file{<glibtop/limits.h>}).
(@code{GLIBTOP_MAX_GROUPS} is defined in @file{<glibtop/procuid.h>}).
@end table
@page
@@ -1484,13 +1484,7 @@ struct _glibtop_mountentry
@end cartouche
@end example
@ifset LIBGTOP-1-1
@code{GLIBTOP_MOUNTENTRY_LEN} is defined in @file{<glibtop/limits.h>}.
@end ifset
@ifclear LIBGTOP-1-1
@code{GLIBTOP_MOUNTENTRY_LEN} is defined in @file{<glibtop.h>}
(this was moved to @file{<glibtop/limits.h>} in LibGTop 1.1.0).
@end ifclear
@code{GLIBTOP_MOUNTENTRY_LEN} is defined in @file{<glibtop.h>}.
@table @code
@item devname

View File

@@ -1,2 +0,0 @@
Makefile.in
Makefile

View File

@@ -1,9 +0,0 @@
backenddir = @LIBGTOP_BACKEND_DIR@
backend_DATA = \
libgtop-backends.dtd \
libgtop-backend-info.dtd
EXTRA_DIST = |
$(backend_DATA)

View File

@@ -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)>

View File

@@ -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)>

View File

@@ -1,3 +1,13 @@
2005-08-02 Benoît Dejean <TazForEver@dlfp.org>
* pprint.c: (pprint_get_cpu), (pprint_get_loadavg),
(pprint_get_mem), (pprint_get_msg_limits), (pprint_get_netlist),
(pprint_get_swap), (pprint_get_uptime), (pprint_get_proc_kernel),
(main):
Added pprint_get_proc_kernel(pid).
Fixed prototypes.
2005-01-22 Benoît Dejean <TazForEver@dlfp.org>
* openfiles.c: (show_open_files): Updated.

View File

@@ -8,112 +8,43 @@ DEFS = @DEFS@
noinst_PROGRAMS = first second pprint procargs df netlist \
mountlist procmap netload sysdeps timings \
openfiles \
@static_targets@ @smp_examples@
EXTRA_PROGRAMS = first_static second_static \
mountlist_static procmap_static \
smp smp_static openfiles_static \
netload_static sysdeps_static \
timings_static pprint_static procargs_static \
df_static netlist_static
openfiles smp
first_SOURCES = first.c
first_LDADD = $(top_builddir)/lib/libgtop-2.0.la
first_static_SOURCES = $(first_SOURCES)
first_static_LDADD = $(first_LDADD)
first_static_LDFLAGS = -static
second_SOURCES = second.c
second_LDADD = $(top_builddir)/lib/libgtop-2.0.la -lm
second_static_SOURCES = $(second_SOURCES)
second_static_LDADD = $(second_LDADD)
second_static_LDFLAGS = -static
procmap_SOURCES = procmap.c
procmap_LDADD = $(top_builddir)/lib/libgtop-2.0.la
procmap_static_SOURCES = $(procmap_SOURCES)
procmap_static_LDADD = $(procmap_LDADD)
procmap_static_LDFLAGS = -static
netload_SOURCES = netload.c
netload_LDADD = $(top_builddir)/lib/libgtop-2.0.la
netload_static_SOURCES = $(netload_SOURCES)
netload_static_LDADD = $(netload_LDADD)
netload_static_LDFLAGS = -static
sysdeps_SOURCES = sysdeps.c
sysdeps_LDADD = $(top_builddir)/lib/libgtop-2.0.la
sysdeps_static_SOURCES = $(sysdeps_SOURCES)
sysdeps_static_LDADD = $(sysdeps_LDADD)
sysdeps_static_LDFLAGS = -static
mountlist_SOURCES = mountlist.c
mountlist_LDADD = $(top_builddir)/lib/libgtop-2.0.la
mountlist_static_SOURCES= $(mountlist_SOURCES)
mountlist_static_LDADD = $(mountlist_LDADD)
mountlist_static_LDFLAGS= -static
smp_SOURCES = smp.c
smp_LDADD = $(top_builddir)/lib/libgtop-2.0.la -lm
smp_static_SOURCES = $(smp_SOURCES)
smp_static_LDADD = $(smp_LDADD)
smp_static_LDFLAGS = -static
timings_SOURCES = timings.c
timings_LDADD = $(top_builddir)/lib/libgtop-2.0.la
timings_static_SOURCES = $(timings_SOURCES)
timings_static_LDADD = $(timings_LDADD)
timings_static_LDFLAGS = -static
pprint_SOURCES = pprint.c
pprint_LDADD = $(top_builddir)/lib/libgtop-2.0.la
pprint_static_SOURCES = $(pprint_SOURCES)
pprint_static_LDADD = $(pprint_LDADD)
pprint_static_LDFLAGS = -static
procargs_SOURCES = procargs.c
procargs_LDADD = $(top_builddir)/lib/libgtop-2.0.la
procargs_static_SOURCES = $(procargs_SOURCES)
procargs_static_LDADD = $(procargs_LDADD)
procargs_static_LDFLAGS = -static
df_SOURCES = df.c
df_LDADD = $(top_builddir)/lib/libgtop-2.0.la
df_static_SOURCES = $(df_SOURCES)
df_static_LDADD = $(df_LDADD)
df_static_LDFLAGS = -static
netlist_SOURCES = netlist.c
netlist_LDADD = $(top_builddir)/lib/libgtop-2.0.la
netlist_static_SOURCES = $(netlist_SOURCES)
netlist_static_LDADD = $(netlist_LDADD)
netlist_static_LDFLAGS = -static
openfiles_SOURCES = openfiles.c
openfiles_LDADD = $(top_builddir)/lib/libgtop-2.0.la
openfiles_static_SOURCES = $(openfiles_SOURCES)
openfiles_static_LDADD = $(openfiles_LDADD)
openfiles_static_LDFLAGS = -static

View File

@@ -2,6 +2,7 @@
#include <glibtop/union.h>
#include <unistd.h>
#include <stdio.h>
#include <stddef.h>
@@ -28,7 +29,7 @@ printf(".%u = " FORMAT " }\n", SIZE - 1 , buf.ARRAY[SIZE - 1]); \
static void pprint_get_cpu()
static void pprint_get_cpu(void)
{
glibtop_cpu buf;
@@ -81,7 +82,7 @@ static void pprint_get_fsusage(const char *mountpoint)
static void pprint_get_loadavg()
static void pprint_get_loadavg(void)
{
glibtop_loadavg buf;
@@ -98,7 +99,7 @@ static void pprint_get_loadavg()
static void pprint_get_mem()
static void pprint_get_mem(void)
{
glibtop_mem buf;
@@ -156,7 +157,7 @@ static void pprint_get_mountlist(gboolean allfs)
static void pprint_get_msg_limits()
static void pprint_get_msg_limits(void)
{
glibtop_msg_limits buf;
@@ -189,7 +190,7 @@ static void pprint_get_netload(const char *iface)
}
static void pprint_get_netlist()
static void pprint_get_netlist(void)
{
glibtop_netlist buf;
char **devices;
@@ -211,7 +212,7 @@ static void pprint_get_netlist()
static void pprint_get_swap()
static void pprint_get_swap(void)
{
glibtop_swap buf;
@@ -229,7 +230,7 @@ static void pprint_get_swap()
static void pprint_get_uptime()
static void pprint_get_uptime(void)
{
glibtop_uptime buf;
@@ -246,6 +247,23 @@ static void pprint_get_uptime()
static void pprint_get_proc_kernel(pid_t pid)
{
glibtop_proc_kernel buf;
glibtop_get_proc_kernel(&buf, pid);
HEADER_PPRINT(glibtop_get_proc_kernel);
PPRINT(flags, "%#llx");
PPRINT(k_flags, "%llu");
PPRINT(min_flt, "%llu");
PPRINT(maj_flt, "%llu");
PPRINT(cmin_flt, "%llu");
PPRINT(cmaj_flt, "%llu");
FOOTER_PPRINT();
}
int main()
{
@@ -275,6 +293,8 @@ int main()
pprint_get_uptime();
pprint_get_proc_kernel(getpid());
glibtop_close();
return 0;

View File

@@ -31,8 +31,6 @@
#include <glibtop.h>
#include <glibtop/cpu.h>
#include "libgtop-i18n.h"
int
main (int argc, char *argv [])
{
@@ -44,10 +42,6 @@ main (int argc, char *argv [])
char separator [BUFSIZ], buffer [BUFSIZ];
int ncpu, i;
setlocale (LC_ALL, "");
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
textdomain (GETTEXT_PACKAGE);
glibtop_init();
glibtop_get_cpu (&cpu);
@@ -73,16 +67,16 @@ main (int argc, char *argv [])
memset (separator, '-', 91);
separator [92] = '\0';
sprintf (buffer, _("Ticks (%ld per second):"), frequency);
sprintf (buffer, "Ticks (%ld per second):", frequency);
printf ("\n\n%-26s %12s %12s %12s %12s %12s\n%s\n", buffer,
_("Total"), _("User"), _("Nice"), _("Sys"), _("Idle"), separator);
"Total", "User", "Nice", "Sys", "Idle", separator);
printf (_("CPU (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n\n"),
printf ("CPU (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n\n",
(unsigned long) cpu.flags, total, user, nice, sys, idle);
for (i = 0; i < glibtop_global_server->ncpu; i++) {
printf (_("CPU %3d (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n"), i,
printf ("CPU %3d (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n", i,
(unsigned long) cpu.flags,
(unsigned long) cpu.xcpu_total [i],
(unsigned long) cpu.xcpu_user [i],
@@ -99,11 +93,11 @@ main (int argc, char *argv [])
printf ("%s\n\n\n", separator);
printf ("%-26s %12s %12s %12s %12s %12s\n%s\n", _("Percent:"),
_("Total (%)"), _("User (%)"), _("Nice (%)"), _("Sys (%)"),
_("Idle (%)"), separator);
printf ("%-26s %12s %12s %12s %12s %12s\n%s\n", "Percent:",
"Total (%)", "User (%)", "Nice (%)", "Sys (%)",
"Idle (%)", separator);
printf (_("CPU (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n\n"),
printf ("CPU (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n\n",
(unsigned long) cpu.flags, (double) total * 100.0 / total,
(double) user * 100.0 / total,
(double) nice * 100.0 / total,
@@ -119,13 +113,13 @@ main (int argc, char *argv [])
p_sys = ((double) cpu.xcpu_sys [i]) * 100.0 / sys;
p_idle = ((double) cpu.xcpu_idle [i]) * 100.0 / idle;
printf (_("CPU %3d (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"),
printf ("CPU %3d (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n",
i, (unsigned long) cpu.flags, p_total, p_user, p_nice,
p_sys, p_idle);
}
printf ("%s\n%-26s %12.3f %12.3f %12.3f %12.3f %12.3f\n\n", separator,
_("Spin:"), s_total * 100.0 / total, s_user * 100.0 / user,
"Spin:", s_total * 100.0 / total, s_user * 100.0 / user,
s_nice * 100.0 / nice, s_sys * 100.0 / sys, s_idle * 100.0 / idle);
exit (0);

View File

@@ -51,7 +51,6 @@ LIBGTOP_MICRO_VERSION >= (micro)))
#include <glibtop/global.h>
#include <glibtop_server.h>
#include <glibtop/types.h>
#ifdef HAVE_GLIBTOP_MACHINE_H
#include <glibtop_machine.h>
@@ -95,9 +94,8 @@ extern glibtop *glibtop_global_server;
extern const unsigned long glibtop_server_features;
#define glibtop_init() glibtop_init_r(&glibtop_global_server, 0, 0);
#define glibtop_close() glibtop_close_r(glibtop_global_server);
glibtop *
glibtop_init (void);
glibtop *
glibtop_init_r (glibtop **server_ptr,

View File

@@ -1,4 +1,2 @@
SUBDIRS = glibtop
EXTRA_DIST = libgtop-i18n.h

View File

@@ -3,9 +3,11 @@ glibtopdir = $(includedir)/libgtop-2.0/glibtop
glibtop_HEADERS = close.h loadavg.h prockernel.h procstate.h \
sem_limits.h uptime.h command.h mem.h proclist.h \
proctime.h shm_limits.h version.h cpu.h msg_limits.h \
procmem.h procuid.h swap.h write.h error.h open.h \
procsegment.h read.h sysdeps.h global.h \
procsignal.h read_data.h union.h types.h gnuserv.h \
procmem.h procuid.h swap.h \
procsegment.h sysdeps.h global.h \
procsignal.h union.h gnuserv.h \
parameter.h mountlist.h fsusage.h procmap.h signal.h \
inodedb.h sysinfo.h ppp.h procargs.h netload.h \
netlist.h procopenfiles.h
netlist.h procopenfiles.h open.h
noinst_HEADERS = error.h write.h read_data.h read.h init_hooks.h

View File

@@ -28,6 +28,8 @@
G_BEGIN_DECLS
void glibtop_close (void);
void glibtop_close_r (glibtop *server);
void glibtop_close_s (glibtop *server);

View File

@@ -80,7 +80,7 @@ struct _glibtop_cpu
xcpu_flags; /* GLIBTOP_XCPU_IDLE */
};
#define glibtop_get_cpu(cpu) glibtop_get_cpu_l(glibtop_global_server, cpu)
void glibtop_get_cpu(glibtop_cpu *buf);
#if GLIBTOP_SUID_CPU
#define glibtop_get_cpu_r glibtop_get_cpu_p

View File

@@ -21,6 +21,11 @@
Boston, MA 02111-1307, USA.
*/
/*
* This is private API
*/
#ifndef __GLIBTOP_ERROR_H__
#define __GLIBTOP_ERROR_H__
@@ -28,20 +33,20 @@
G_BEGIN_DECLS
void glibtop_error_vr (glibtop *server, const char *format, va_list args);
void glibtop_warn_vr (glibtop *server, const char *format, va_list args);
void glibtop_error_io_vr (glibtop *server, const char *format, int, va_list args);
void glibtop_warn_io_vr (glibtop *server, const char *format, int, va_list args);
void glibtop_error_vr (glibtop *server, const char *format, va_list args) G_GNUC_INTERNAL G_GNUC_NORETURN;
void glibtop_warn_vr (glibtop *server, const char *format, va_list args) G_GNUC_INTERNAL;
void glibtop_error_io_vr (glibtop *server, const char *format, int, va_list args) G_GNUC_INTERNAL G_GNUC_NORETURN;
void glibtop_warn_io_vr (glibtop *server, const char *format, int, va_list args) G_GNUC_INTERNAL;
void glibtop_error_r (glibtop *server, const char *format, ...) G_GNUC_PRINTF(2, 3);
void glibtop_warn_r (glibtop *server, const char *format, ...) G_GNUC_PRINTF(2, 3);
void glibtop_error_io_r (glibtop *server, const char *format, ...) G_GNUC_PRINTF(2, 3);
void glibtop_warn_io_r (glibtop *server, const char *format, ...) G_GNUC_PRINTF(2, 3);
void glibtop_error_r (glibtop *server, const char *format, ...) G_GNUC_INTERNAL G_GNUC_PRINTF(2, 3) G_GNUC_NORETURN;
void glibtop_warn_r (glibtop *server, const char *format, ...) G_GNUC_INTERNAL G_GNUC_PRINTF(2, 3);
void glibtop_error_io_r (glibtop *server, const char *format, ...) G_GNUC_INTERNAL G_GNUC_PRINTF(2, 3) G_GNUC_NORETURN;
void glibtop_warn_io_r (glibtop *server, const char *format, ...) G_GNUC_INTERNAL G_GNUC_PRINTF(2, 3);
void glibtop_error (const char *format, ...) G_GNUC_PRINTF(1, 2);
void glibtop_warn (const char *format, ...) G_GNUC_PRINTF(1, 2);
void glibtop_error_io (const char *format, ...) G_GNUC_PRINTF(1, 2);
void glibtop_warn_io (const char *format, ...) G_GNUC_PRINTF(1, 2);
void glibtop_error (const char *format, ...) G_GNUC_INTERNAL G_GNUC_PRINTF(1, 2) G_GNUC_NORETURN;
void glibtop_warn (const char *format, ...) G_GNUC_INTERNAL G_GNUC_PRINTF(1, 2);
void glibtop_error_io (const char *format, ...) G_GNUC_INTERNAL G_GNUC_PRINTF(1, 2) G_GNUC_NORETURN;
void glibtop_warn_io (const char *format, ...) G_GNUC_INTERNAL G_GNUC_PRINTF(1, 2);
G_END_DECLS

View File

@@ -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

View File

@@ -53,7 +53,7 @@ struct _glibtop_fsusage
guint64 read, write; /* Total blocks read and written */
};
#define glibtop_get_fsusage(fsusage,disk) glibtop_get_fsusage_l(glibtop_global_server, fsusage, disk)
void glibtop_get_fsusage(glibtop_fsusage *buf, const char *mount_dir);
#define glibtop_get_fsusage_r glibtop_get_fsusage_s

View File

@@ -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 *,
guint64, 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

View File

@@ -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, guint64 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

View File

@@ -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,
guint64 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

View File

@@ -36,11 +36,6 @@ typedef struct _glibtop_server_info glibtop_server_info;
typedef struct _glibtop_closure glibtop_closure;
typedef int (*glibtop_init_func_t) (glibtop_server *, glibtop_closure *);
extern glibtop_init_func_t _glibtop_init_hook_s [];
extern glibtop_init_func_t _glibtop_init_hook_p [];
struct _glibtop_server_info
{
int ncpu; /* Number of CPUs, zero if single-processor */

View File

@@ -42,7 +42,6 @@ static char header_rcsid [] = "!Header: gnuserv.h,v 2.4 95/02/16 11:58:11 arup a
/* gnuserv should not be compiled using SOCKS */
#define DO_NOT_SOCKSIFY
#include <glibtop.h>
#include <glibtop/error.h>
#undef read
#undef write
#undef open

View File

@@ -0,0 +1,11 @@
#ifndef H_LIBGTOP_INIT_HOOKS_1122955666
#define H_LIBGTOP_INIT_HOOKS_1122955666
#include <glibtop.h>
typedef void (*glibtop_init_func_t)(glibtop *);
extern const glibtop_init_func_t _glibtop_init_hook_s[];
extern const glibtop_init_func_t _glibtop_init_hook_p[];
#endif /* H_LIBGTOP_INIT_HOOKS_1122955666 */

View File

@@ -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 ((guint64)-1) */
#define GLIBTOP_UNLIMITED (~(guint64)0)
/* Maximum length of a backend name. */
#define GLIBTOP_BACKEND_NAME_LEN 40
G_END_DECLS
#endif

View File

@@ -47,7 +47,7 @@ struct _glibtop_loadavg
last_pid; /* GLIBTOP_LOADAVG_LAST_PID */
};
#define glibtop_get_loadavg(loadavg) glibtop_get_loadavg_l(glibtop_global_server, loadavg)
void glibtop_get_loadavg(glibtop_loadavg *buf);
#if GLIBTOP_SUID_LOADAVG
#define glibtop_get_loadavg_r glibtop_get_loadavg_p

View File

@@ -55,7 +55,7 @@ struct _glibtop_mem
locked; /* GLIBTOP_MEM_LOCKED */
};
#define glibtop_get_mem(mem) glibtop_get_mem_l(glibtop_global_server, mem)
void glibtop_get_mem(glibtop_mem *buf);
#if GLIBTOP_SUID_MEM
#define glibtop_get_mem_r glibtop_get_mem_p

View File

@@ -55,7 +55,8 @@ struct _glibtop_mountlist
size; /* GLIBTOP_MOUNTLIST_SIZE */
};
#define glibtop_get_mountlist(mountlist,all_fs) glibtop_get_mountlist_l(glibtop_global_server, mountlist, all_fs)
glibtop_mountentry *
glibtop_get_mountlist(glibtop_mountlist *buf, int all_fs);
#define glibtop_get_mountlist_r glibtop_get_mountlist_s

View File

@@ -53,7 +53,7 @@ struct _glibtop_msg_limits
msgtql; /* GLIBTOP_IPC_MSGTQL */
};
#define glibtop_get_msg_limits(msg) glibtop_get_msg_limits_l(glibtop_global_server, msg)
void glibtop_get_msg_limits(glibtop_msg_limits *buf);
#if GLIBTOP_SUID_MSG_LIMITS
#define glibtop_get_msg_limits_r glibtop_get_msg_limits_p

View File

@@ -37,7 +37,7 @@ struct _glibtop_netlist
guint32 number;
};
#define glibtop_get_netlist(netlist) glibtop_get_netlist_l(glibtop_global_server, netlist)
char** glibtop_get_netlist(glibtop_netlist *buf);
#if GLIBTOP_SUID_NETLIST
#define glibtop_get_netlist_r glibtop_get_netlist_p

View File

@@ -107,7 +107,7 @@ struct _glibtop_netload
guint8 hwaddress[8]; /* GLIBTOP_NETLOAD_HWADDRESS */
};
#define glibtop_get_netload(netload,interface) glibtop_get_netload_l(glibtop_global_server, netload, interface)
void glibtop_get_netload(glibtop_netload *buf, const char *interface);
#if GLIBTOP_SUID_NETLOAD
#define glibtop_get_netload_r glibtop_get_netload_p

View File

@@ -23,8 +23,6 @@
#define __GLIBTOP_OPEN_H__
#include <glibtop.h>
#include <glibtop/read.h>
#include <glibtop/error.h>
G_BEGIN_DECLS

View File

@@ -23,7 +23,6 @@
#define __GLIBTOP_PARAMETER_H__
#include <glibtop.h>
#include <glibtop/open.h>
G_BEGIN_DECLS

View File

@@ -51,7 +51,7 @@ struct _glibtop_ppp
bytes_out; /* GLIBTOP_PPP_BYTES_OUT */
};
#define glibtop_get_ppp(ppp,device) glibtop_get_ppp_l(glibtop_global_server, ppp, device)
void glibtop_get_ppp(glibtop_ppp *buf, unsigned short device);
#if GLIBTOP_SUID_PPP
#define glibtop_get_ppp_r glibtop_get_ppp_p

View File

@@ -46,9 +46,8 @@ char *
glibtop_get_proc_args_l (glibtop *server, glibtop_proc_args *buf,
pid_t pid, unsigned max_len);
#define glibtop_get_proc_args(proc_args,pid,max_len) glibtop_get_proc_args_l(glibtop_global_server, proc_args, pid, max_len)
char *
glibtop_get_proc_args (glibtop_proc_args *buf, pid_t pid, unsigned max_len);
#if GLIBTOP_SUID_PROC_ARGS
@@ -82,8 +81,8 @@ char **
glibtop_get_proc_argv_l (glibtop *server, glibtop_proc_args *buf,
pid_t pid, unsigned max_len);
#define glibtop_get_proc_argv(proc_args,pid,max_len) glibtop_get_proc_argv_l(glibtop_global_server, proc_args, pid, max_len)
char **
glibtop_get_proc_argv (glibtop_proc_args *buf, pid_t pid, unsigned max_len);
G_END_DECLS

View File

@@ -64,7 +64,7 @@ struct _glibtop_proc_kernel
char wchan [40];
};
#define glibtop_get_proc_kernel(p1, p2) glibtop_get_proc_kernel_l(glibtop_global_server, p1, p2)
void glibtop_get_proc_kernel(glibtop_proc_kernel *buf, pid_t pid);
#if GLIBTOP_SUID_PROC_KERNEL
#define glibtop_get_proc_kernel_r glibtop_get_proc_kernel_p

View File

@@ -62,7 +62,8 @@ struct _glibtop_proclist
size; /* GLIBTOP_PROCLIST_SIZE */
};
#define glibtop_get_proclist(proclist,which,arg) glibtop_get_proclist_l(glibtop_global_server, proclist, which, arg)
unsigned *
glibtop_get_proclist(glibtop_proclist *buf, gint64 which, gint64 arg);
#if GLIBTOP_SUID_PROCLIST
#define glibtop_get_proclist_r glibtop_get_proclist_p

View File

@@ -70,8 +70,9 @@ struct _glibtop_proc_map
total, /* GLIBTOP_PROC_MAP_TOTAL */
size; /* GLIBTOP_PROC_MAP_SIZE */
};
glibtop_map_entry *
glibtop_get_proc_map(glibtop_proc_map *buf, pid_t pid);
#define glibtop_get_proc_map(proc_map,pid) glibtop_get_proc_map_l(glibtop_global_server, proc_map, pid)
#if GLIBTOP_SUID_PROC_MAP
#define glibtop_get_proc_map_r glibtop_get_proc_map_p

View File

@@ -55,7 +55,7 @@ struct _glibtop_proc_mem
* of the process; usually 2,147,483,647 */
};
#define glibtop_get_proc_mem(p1, p2) glibtop_get_proc_mem_l(glibtop_global_server, p1, p2)
void glibtop_get_proc_mem(glibtop_proc_mem *buf, pid_t pid);
#if GLIBTOP_SUID_PROC_MEM
#define glibtop_get_proc_mem_r glibtop_get_proc_mem_p

View File

@@ -94,7 +94,8 @@ struct _glibtop_proc_open_files
size; /* GLIBTOP_PROC_OPEN_FILES_SIZE */
};
#define glibtop_get_proc_open_files(proc_open_files,pid) glibtop_get_proc_open_files_l(glibtop_global_server, proc_open_files, pid)
glibtop_open_files_entry *
glibtop_get_proc_open_files(glibtop_proc_open_files *buf, pid_t pid);
#if GLIBTOP_SUID_PROC_FILE
#define glibtop_get_proc_open_files_r glibtop_get_proc_open_files_p

View File

@@ -58,7 +58,7 @@ struct _glibtop_proc_segment
start_stack; /* address of the bottom of stack segment */
};
#define glibtop_get_proc_segment(p1, p2) glibtop_get_proc_segment_l(glibtop_global_server, p1, p2)
void glibtop_get_proc_segment(glibtop_proc_segment *buf, pid_t pid);
#if GLIBTOP_SUID_PROC_SEGMENT
#define glibtop_get_proc_segment_r glibtop_get_proc_segment_p

View File

@@ -49,7 +49,7 @@ struct _glibtop_proc_signal
sigcatch [2]; /* mask of caught signals */
};
#define glibtop_get_proc_signal(p1, p2) glibtop_get_proc_signal_l(glibtop_global_server, p1, p2)
void glibtop_get_proc_signal(glibtop_proc_signal *buf, pid_t pid);
#if GLIBTOP_SUID_PROC_SIGNAL
#define glibtop_get_proc_signal_r glibtop_get_proc_signal_p

View File

@@ -74,7 +74,7 @@ struct _glibtop_proc_state
last_processor;
};
#define glibtop_get_proc_state(p1, p2) glibtop_get_proc_state_l(glibtop_global_server, p1, p2)
void glibtop_get_proc_state(glibtop_proc_state *buf, pid_t pid);
#if GLIBTOP_SUID_PROC_STATE
#define glibtop_get_proc_state_r glibtop_get_proc_state_p

View File

@@ -70,7 +70,8 @@ struct _glibtop_proc_time
xcpu_stime [GLIBTOP_NCPU]; /* SMP machines. */
};
#define glibtop_get_proc_time(p1, p2) glibtop_get_proc_time_l(glibtop_global_server, p1, p2)
void glibtop_get_proc_time(glibtop_proc_time *buf, pid_t pid);
#if GLIBTOP_SUID_PROC_TIME
#define glibtop_get_proc_time_r glibtop_get_proc_time_p

View File

@@ -80,7 +80,7 @@ struct _glibtop_proc_uid
};
#define glibtop_get_proc_uid(p1, p2) glibtop_get_proc_uid_l(glibtop_global_server, p1, p2)
void glibtop_get_proc_uid(glibtop_proc_uid *buf, pid_t pid);
#if GLIBTOP_SUID_PROC_UID
#define glibtop_get_proc_uid_r glibtop_get_proc_uid_p

View File

@@ -25,7 +25,6 @@
#define __GLIBTOP_READ_H__
#include <glibtop.h>
#include <glibtop/error.h>
G_BEGIN_DECLS

View File

@@ -25,7 +25,6 @@
#define __GLIBTOP_READ_DATA_H__
#include <glibtop.h>
#include <glibtop/error.h>
G_BEGIN_DECLS

View File

@@ -59,7 +59,7 @@ struct _glibtop_sem_limits
semaem; /* GLIBTOP_IPC_SEMAEM */
};
#define glibtop_get_sem_limits(sem) glibtop_get_sem_limits_l(glibtop_global_server, sem)
void glibtop_get_sem_limits(glibtop_sem_limits *buf);
#if GLIBTOP_SUID_SEM_LIMITS
#define glibtop_get_sem_limits_r glibtop_get_sem_limits_p

View File

@@ -49,7 +49,7 @@ struct _glibtop_shm_limits
shmall; /* GLIBTOP_IPC_SHMALL */
};
#define glibtop_get_shm_limits(shm) glibtop_get_shm_limits_l(glibtop_global_server, shm)
void glibtop_get_shm_limits(glibtop_shm_limits *buf);
#if GLIBTOP_SUID_SHM_LIMITS
#define glibtop_get_shm_limits_r glibtop_get_shm_limits_p

View File

@@ -49,7 +49,8 @@ struct _glibtop_swap
pageout; /* GLIBTOP_SWAP_PAGEOUT */
};
#define glibtop_get_swap(swap) glibtop_get_swap_l(glibtop_global_server, swap)
void
glibtop_get_swap(glibtop_swap *buf);
#if GLIBTOP_SUID_SWAP
#define glibtop_get_swap_r glibtop_get_swap_p

View File

@@ -58,10 +58,6 @@ G_BEGIN_DECLS
#define GLIBTOP_SYSDEPS_ALL ((1 << GLIBTOP_MAX_SYSDEPS) - 1)
typedef void (*glibtop_init_func_t) (glibtop *);
extern glibtop_init_func_t _glibtop_init_hook_s [];
extern glibtop_init_func_t _glibtop_init_hook_p [];
typedef struct _glibtop_sysdeps glibtop_sysdeps;
struct _glibtop_sysdeps
@@ -94,8 +90,7 @@ struct _glibtop_sysdeps
ppp; /* glibtop_ppp */
};
#define glibtop_get_sysdeps(sysdeps) glibtop_get_sysdeps_r(glibtop_global_server,sysdeps)
void glibtop_get_sysdeps (glibtop_sysdeps *buf);
void glibtop_get_sysdeps_r (glibtop *server, glibtop_sysdeps *buf);

View File

@@ -54,11 +54,10 @@ struct _glibtop_sysinfo
glibtop_entry cpuinfo [GLIBTOP_NCPU];
};
#define glibtop_get_sysinfo() glibtop_get_sysinfo_s(glibtop_global_server)
#define glibtop_get_sysinfo_r glibtop_get_sysinfo_s
const glibtop_sysinfo *glibtop_get_sysinfo_s (glibtop *server);
const glibtop_sysinfo *glibtop_get_sysinfo (void);
G_END_DECLS

View File

@@ -1,38 +0,0 @@
/* $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_TYPES_H__
#define __GLIBTOP_TYPES_H__
G_BEGIN_DECLS
#define GLIBTOP_TYPE_LONG 1
#define GLIBTOP_TYPE_ULONG 2
#define GLIBTOP_TYPE_DOUBLE 3
#define GLIBTOP_TYPE_INT 4
#define GLIBTOP_TYPE_CHAR 5
#define GLIBTOP_TYPE_STRING 6
G_END_DECLS
#endif

View File

@@ -45,7 +45,7 @@ struct _glibtop_uptime
guint64 boot_time;
};
#define glibtop_get_uptime(uptime) glibtop_get_uptime_l(glibtop_global_server, uptime)
void glibtop_get_uptime (glibtop_uptime *buf);
#if GLIBTOP_SUID_UPTIME
#define glibtop_get_uptime_r glibtop_get_uptime_p

View File

@@ -25,7 +25,6 @@
#define __GLIBTOP_WRITE_H__
#include <glibtop.h>
#include <glibtop/error.h>
G_BEGIN_DECLS

View File

@@ -1,11 +0,0 @@
#include <config.h>
#include <libintl.h>
#define _(String) gettext (String)
#ifdef gettext_noop
# define N_(String) gettext_noop (String)
#else
# define N_(String) (String)
#endif

View File

@@ -7,7 +7,7 @@ libgtop_2_0_la_SOURCES = init.c open.c close.c command.c read.c \
read_data.c write.c lib.c parameter.c \
sysdeps.c
libgtop_2_0_la_LDFLAGS = $(LT_VERSION_INFO)
libgtop_2_0_la_LDFLAGS = $(LT_VERSION_INFO) -export-symbols-regex "^[^_].*"
libgtop_2_0_la_LIBADD = $(GLIB_LIBS) $(top_builddir)/sysdeps/common/libgtop_common-2.0.la $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la $(sysdeps_suid_lib)
BUILT_SOURCES = lib.c

View File

@@ -23,6 +23,7 @@
#include <glibtop.h>
#include <glibtop/open.h>
#include <glibtop/error.h>
#include <glibtop/close.h>
#include <glibtop/command.h>

View File

@@ -23,8 +23,13 @@
Boston, MA 02111-1307, USA.
*/
#include <config.h>
#include <glibtop/error.h>
#include <glib/gstrfuncs.h>
#include <errno.h>
#define DEFAULT_NAME "LibGTop-Server"
/* Prints error message and exits. */
@@ -56,7 +61,7 @@ glibtop_error_io_vr (glibtop_server *server, char *format, int error, va_list ar
{
print_server_name (server);
vfprintf (stderr, format, args);
fprintf (stderr, ": %s\n", strerror (error));
fprintf (stderr, ": %s\n", g_strerror (error));
#ifdef LIBGTOP_ENABLE_DEBUG
abort ();
@@ -82,7 +87,7 @@ glibtop_warn_io_vr (glibtop_server *server, char *format, int error, va_list arg
{
print_server_name (server);
vfprintf (stderr, format, args);
fprintf (stderr, ": %s\n", strerror (error));
fprintf (stderr, ": %s\n", g_strerror (error));
#ifdef LIBGTOP_FATAL_WARNINGS
abort ();

View File

@@ -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 (G_UNLIKELY(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);
}

View File

@@ -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, &param);
return param.entry;
}

View File

@@ -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, guint64 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;
}

View File

@@ -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

Some files were not shown because too many files have changed in this diff Show More