User::utmp Copyright © 2001 Michael Piotrowski. All Rights Reserved. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Description ----------- This module provides a simple Perl interface to utmp- and utmpx-style databases on UNIX systems, the most important being /etc/utmp, which provides information about users currently logged in. There is also experimental support for writing utmp files. For further details see the POD documentation embedded in the file Utmp.pm, which will also be installed as User::Utmp(3) manpage, and the example.pl script. Prerequisites ------------- Your system should be compliant with SVID2 or at least provide setutent(), getutent(), endutent(), utmpname() functions compliant with SVID2. Utmpx is supported if your system complies with the Single UNIX Specification. Hint files are provided for AIX, HP-UX, Linux, and Solaris. If you're using a system for which there is no hint file, User::Utmp will be built with basic utmp support, and, if the _XOPEN_UNIX macro is defined, with basic utmpx support. If you want to use additional fields provided by your system's implementation, you'll have to define the appropriate flags. BSD systems typically provide no utmp functions at all and are thus unsupported. Portability note ---------------- Unfortunately, the contents of the utmp structure are highly system-dependent, making multi-platform support difficult. Utmpx is formally standardized, but the definition leaves many details to the implementation. Therefore User::Utmp uses hint files (see the hints directory and the ExtUtils::MakeMaker man page) to control the inclusion of system-dependent code. Note that the Linux hint file enables support for the ut_host and ut_addr fields; these fields exist on the system I tested it, which is fairly recent. Older versions of Linux seem to have much more limited Utmp implementations. There might be problems with utmpname() on Solaris due to the underlying utmpxname(3) function. I'd appreciate any information on this matter. Building the module ------------------- The module can be built using this sequence of commands: perl Makefile.PL make make test Besides testing if the module is loadable, "make test" currently contains only one other test. This test checks if a utmp record matching the current user and tty can be found. If utmpx is available, the same test is also done using utmpx functions. I *think* this is pretty portable, but if it fails, it might be because that the assumptions made by the test do not apply to your system, not because User::Utmp doesn't work. I'd appreciate any ideas for portable tests. Also included is the script example.pl, which can be used for further testing. Installation ------------ make install History ------- User::Utmp was developed as a quick solution for a project at hand. It's therefore a straightforward translation of the C interface to Perl, but reduces the number of functions from four to two. It currently has the following limitations: - It's not object-oriented - It's not reentrant and therefore not thread-safe - It reads the whole file Feedback -------- User::Utmp was tested on HP-UX 10.20, Solaris 2.5.1 and 7 and Linux 2.0.36, and reported to work on AIX. If you are building the module on another architecture I'd appreciate a note about how you got on. Michael Piotrowski