$Id$ Jun/01/1998 =========== * We have some new ``suffix rules'': '__l' is a function defined in the client part; '__s' is a function defined in the sysdeps part and '__p' is a function that needs special priviledges. '__r' is mapped either on '__p' or on '__s'. the function without suffix is mapped on '__l'. * We now decide at runtime whether or not using the server is required for a particular function. All user programs now call the '__l' function defined in '-lgtop' (in the lib subdir). These functions either use 'glibtop_call__l' to call the server or call the '__r' function. * A function in the sysdeps directory now has the '__s' suffix if it do not need any priviledges (and thus can be called directly from client code) and the '__p' suffix otherwise (when it has to be called from the server). * If you call one of these functions: -> use the '__p' suffix to be sure to get the SUID-safe one (used in the server). -> use the '__s' suffix to be sure to get a function that doesn't need any priviledges. -> use the '__r' suffix otherwise (it is mapped either on the '__p' or on the '__s' one). Only use the '__p' and '__s' functions in a 'GLIBTOP_SUID_' conditional, otherwise you'll get undefined symbols ! * The server is now started from 'glibtop_init__r', but only when it's really needed; for instance on DEC OSF/1 you only need it for the proc* features - if you program only fetches the CPU usage, now server will be started. * Sorry, at the moment everything is a little bit unstable, I'm doing heavy changes. I've just some great ideas which still need some work: -> I want to have a SUID server that only implements those features that need to be SUID; everything else uses the sysdeps code directly. -> If a program only uses stuff that do not need the server, the server will not be started at all. -> I'm working on some kind of proxy server that can be used on a remote host; in feature one can then use the MDI stuff from ghex in gtop to have notebook pages displaying processes from different hosts. * Well it is as much unstable that it only works under Linux at the moment. 1998-06-01 Martin Baulig * sysdeps/common/sysdeps.c: now using '__r' functions, they are #defined either as the '__p' or the '__s' ones. * sysdeps/linux/*.c: changed call of 'glibtop_init__r', it now takes two additional arguments. * examples/{first.c, second.c}: now using 'glibtop_init' instead of 'glibtop_init__r'. * include/glibtop/sysdeps.h: added 'dummy' member so 'GLIBTOP_SYSDEPS_' now start with 1. * include/glibtop/*.h: we now #define 'glibtop_get_' as 'glibtop_get___l' and 'glibtop_get___r' either as the '__p' or the '__s' function. * lib/*.c: removed #if's - we now decide at runtime whether to use the server or to call the appropriate function for the sysdeps directory. 1998-05-28 Martin Baulig * src/server/main.c: we now use the '__p' functions, but only if the appropriate 'GLIBTOP_SUID_' has a non-zero value. * configure.in (@machine_incs@): always use `-I$(top_srcdir)/sysdeps/@sysdeps_dir@'; it's no longer conditional. * examples/Makefile.am: removed the '_linux' examples. * sysdeps/linux/*.c: renamed all functions implementing features to '__s'. * lib/*.c: renamed all functions implementing features to '__l'; we only emit code for those functions if the corresponding 'GLIBTOP_SUID_' has a positive value. * include/glibtop/*.h: added some new function suffixes: '__l' is a function defined in the client part; '__s' is a function defined in the sysdeps part and '__p' is a function that needs special priviledges. '__r' is mapped either on '__l' or on '__s'. * sysdeps/linux/glibtop_server.h: New file - defines system dependent constants 'GLIBTOP_SUID_' being either 'GLIBTOP_SYSDEPS_'+1 depending upon whether or not this feature requires using the server. * lib/sysdeps.c: removed that file; it is no longer needed. May/21/1998 =========== * doc/gnome-hackers.sgml: This is a short intro on how to use libgtop in the GNOME project. It covers especially the use of its 'configure' script and the automatically generated 'gtopConf.sh'. May/20/1998 =========== * 'gtopConf.sh' now defines 'GTOP_LIBS' and 'GTOP_INCS' in a manner that they contain everything that is needed to link some program with libgtop. It will use '-lgtop' only if the server is really needed and '-lgtop_sysdeps' otherwise; * 'gtopConf.sh' additionally defines 'GTOP_GUILE_LIBS' and 'GTOP_GUILE_INCS' containing everything that is needed to link some program both with libgtop and its guile interface. They are identically to 'GTOP_LIBS' and 'GTOP_INCS' if building the guile interface is disabled or guile cannot be found on the system. * 'configure' takes additional arguments '--enable-libgtop-server' and '--disable-libgtop-server' to use the server even when it's not needed or to disable it's use where it's needed. * 'configure' takes an argument '--without-libgtop-guile' to disable guile support. * 'configure takes an argument '--without-libgtop-names' to remove '-lgtop_names' (and '-lgtop_guile_names' when we have guile) from 'GTOP_LIBS'; in this case these libraries are not even built. May/19/1998 =========== * Libgtop is now in the GNOME CVS Repository. May/17/1998 =========== * we have now 'const char *glibtop_types_* []' consisting of the C types of the corresponding files of '_glibtop_*'. * added guile function '(glibtop-types-*)' and '(glibtop-descriptions-*)'. May/10/1998 =========== * Port to DEC OSF1 3.0 has been made: cpu (total, user, nice, sys, idle) mem (total, used, free) loadavg (loadavg) uptime (uptime) msg_limits (map, max, mnb, mni, tql) sem_limits (mni, msl, opm, vmx, aem) shm_limits (max, min, mni, seg) The following need the server to be SUID root: proclist (total, number, size) procdata (cmd, state, uid, pid, ppid, pgrp, tty, k_flags, session, tpgid, sigignore, sigcatch, signal, nice, priority, resident, rss, vsize, utime, stime, cutime, cstime, trs, drs) May/07/1998 =========== * 'flags' member of sysdeps/linux/procdata.c is now 'unsigned long flags [2]'. * When we give glibtop_get_procdata () a pid of zero, only the flags are returned. * We now use static constants instead of #defines for sysdeps flags. May/03/1998 =========== * VPATH-Build now working; sometimes it's necessary to copy $(top_srcdir)/po/cat-id-tbl.c to $(top_builddir)/po. * The library has been tested on the following systems: - i686-pc-linux-gnu - sparc-sun-sunos4.1.1 - alpha-dec-osf1 (that's DEC OSF1 3.0 and 3.2) * Compilation has been tested on the following systems (I have no root access there and cannot test the library because of this): - sparc-sun-solaris2 - i386-bsdi * Does no longer require Gnome. * Guile-Parts are compiled only if guile can be found. * Some of the executables are statically linked to copy them more easily between machines. May/02/1998 =========== * Global changes to the interfaces, all functions except glibtop_open() and glibtop_close() that took a server argument have now a '__r' suffix; the original name is now a macro that uses glibtop_global_server. Apr/10/1998 =========== Added new directory sysdeps/guile/names. It is the guile interface to the gtop_names library found in sysdeps/names. Changed GLIBTOP_DESCRIPTIONS to GLIBTOP_NAMES and added GLIBTOP_GUILE_NAMES to the header files. Apr/09/1998 =========== Added new directories guile and names to sysdeps. In names are some string constants about the data stored in the structures. guile is a guile interface for the library. It is used in examples/third (which has been completely rewritten). The header files define things from names when GLIBTOP_DESCRIPTIONS if defined and/or from guile when HAVE_GUILE is defined. Apr/08/1998 =========== Added guile wrapper for the library (see examples/third).