userinfo 2.2 released March 17, 2007 The compile farm at sourceforge.net is no longer available so I don't have access to OS's other than FreeBSD (4.1) and Linux (2.6) for build testing. If you have a machine other than the above and would like to test compilation on, please let me know of build failures so we can fix them. Updated my email address. Changed the follow symbolic links option -l to -L. The users idle time (login.so) is shown in seconds rather than minutes. Added contrib/fexists.c. userinfo 2.1 released July 30, 2005 This release includes some major fixes and code cleanups. Module writers should have another look at doc/README.modules as all of the function names have changed (ui_module_exec() not passwd_exec()). Details follow: The command line options -x and -X behave like -O in that they take a module name to load. No need to specify both. Verbosity (-v) is reset for each module unless specified twice. The strings UNKNOWN, NONE, ON and OFF are more hardcoded and are not configurable in config.h. The ui_module_exec() function has changed to drop these strings and module writers should look at the 'Output Key' from 'ui -h' as a guideline for static strings. It's kinda pointless but there are less arguments to this function to worry about. A modules help and dup warning is only shown once. Fixed a memory leak in the login.so module. Fixed module chaining of more than two modules. Bugfix for modules which take no options. Bugfix for the -d option when used with other modules. userinfo 2.0 released December 05, 2004 It's been awhile since the last release, but hopefully worth the wait. The program has been split up into modules which will need to be loaded either from the command-line or from a configuration file. See doc/uirc for an example configuration file and doc/README.modules for how to write your own modules. Here's some details about the changes: Added option -m to specify a deliminator for multi-value fields. The old hardcoded character, and new default, was/is a comma. Added option -O, -d and -c to load modules. Read the manual page or look at doc/uirc for configuration file syntax. Added option -d to load the default modules (passwd.so, mail.so, and login.so). By default, no modules are loaded. This option may be used anywhere in the module list. Added option -x to chain the output of a loaded module to the input of the next loaded module. This will only work if the next loaded module is chainable. Added option -X to prevent the chained module from outputting it's info. This will just pass the strings which would be outputted to the next module (like -x). Changed the main executable options a bit: Changed option -F to -l (symbolic links) Changed option -j to -t (time format) Changed option -d to -F (field separator) The default time format has changed to "%s" (seconds since epoch). The old format contained a ":" which is the default field separator. Use -t to change it to whatever you want. If your running Solaris please read KnownBugs. Changed the options for the modules a bit. To see the options for the modules, load the module with -O, or -c if using a configuration file, or both, when using the -h help switch. The login module now supports multiple logins of the same username. For example, if a user is logged in more than once and the -y module option is specified the output might be: tty2,tty3. Added an example module and shell script to contrib/ in the archive. When a user has logged in via console and the hostname option in the login module is requested, either from the lastlog or from utmp, display the "none" string rather than the "unknown" string. Port to NetBSD. May compile on OpenBSD too, but it hasn't been tested. Removed the Darwin port. It's just not worth the hassle. Automake has been updated. This means DESTDIR support is included in the Makefile. Fixed ouput of empty password fields from getpwnam(). Don't try an convert passwd.so options -c and -e to a time stamp, just dump the passwd structure strings. The exception is if the user is not root, then the unknown string is used. Different OS's use different methods when displaying these values. See getspnam(3) or getpwent(3). We now use getutxent() on systems that support and utilize utmpx. Login process id's are gotten from this utmpx structure rather than KVM or the /proc filesystem. Much more efficient and less error-prone. When requesting the mail folder size and the size is zero, display zero and not the "none" string.