glibc/login/README.utmpd
Ulrich Drepper af6f39063b Update.
1997-10-26 18:12  Ulrich Drepper  <drepper@cygnus.com>

	* libio/genops.c: Partial undo of last patch.
	* libio/stdfiles.c: Likewise.
	* libio/iofdopen.c: Use _IO_FILE_complete, not _IO_file_plus.
	* libio/iopopen.c: Likewise.
	* libio/iovdprintf.c: Likewise.
	* libio/libio.h: Remove duplicated `;'.
	* libio/stdio.c: Remove misleading comment.
	* libio/stdio.h: Declare standard streams as variables.

	* login/Makefile (distribute): Add README.utmpd.
	* login/README.utmpd: New file.
	Provided by Mark M. Kettenis <kettenis@phys.uva.nl>.

	* manual/job.texi: Document tcgetsid.
	* manual/pattern.texi: Document globfree.
	* manual/terminal.texi: Document B38400 ... B460800.

	* posix/confstr.c: Print "-D_FILE_OFFSET_SIZE=64" for _CS_LFS_CFLAGS.

	* posix/unistd.h: Add explanation of _POSIX_* constants.

	* posix/unists.h: Add prototypes for __pread, __pread64, __pwrite
	and __pwrite64.
	* sysdeps/generic/pread.c: Define as __pread and make pread weak alias.
	* sysdeps/generic/pread64.c: Likewise.
	* sysdeps/generic/pwrite.c: Likewise.
	* sysdeps/generic/pwrite64.c: Likewise.
	* sysdeps/posix/pread.c: Likewise.
	* sysdeps/posix/pwrite.c: Likewise.
	* sysdeps/posix/pread64.c: New file.
	* sysdeps/posix/pwrite64.c: Likewise.
	* sysdeps/unix/sysv/linux/Makefile [$(subdir)=posix] (sysdep_routines):
	Add s_pread64 and s_pwrite64.
	* sysdeps/unix/sysv/linux/pread.c: New file.
	* sysdeps/unix/sysv/linux/pread64.c: New file.
	* sysdeps/unix/sysv/linux/pwrite.c: New file.
	* sysdeps/unix/sysv/linux/pwrite64.c: New file.
	* sysdeps/unix/sysv/linux/s_pread64.c: New file.
	* sysdeps/unix/sysv/linux/s_pwrite64.c: New file.
	* sysdeps/unix/sysv/linux/syscalls.list: Add pread and pwrite.
	* sysdeps/unix/sysv/linux/alpha/pread64.c: New (empty) file.
	* sysdeps/unix/sysv/linux/alpha/pwrite64.c: New (empty) file.
	* sysdeps/unix/sysv/linux/sparc/sparc64/pread64.c: New (empty) file.
	* sysdeps/unix/sysv/linux/sparc/sparc64/pwrite64.c: New (empty) file.
	* sysdeps/unix/sysv/linux/alpha/syscalls.list: Add pread and pwrite
	with weak aliases for *64 functions.
	* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise.

	* string/bits/string2.h: Add casts to allow void * arguments.

	* sysdeps/i386/i486/bits/string.h: Define index and rindex only if
	__USE_BSD or __USE_XOPEN_EXTENDED.

	* sysdeps/unix/sysv/linux/bits/socket.h: Add SCM_RIGHTS and other
	SCM_* constants from kernel header.

	* termios/termios.h: Add prototype for tcgetsid.

1997-10-26 13:26  Thorsten Kukuk  <kukuk@vt.uni-paderborn.de>

	* sunrpc/clnt_perr.c: Add trailing '\0' to strings.

	* sunrpc/get_myaddr.c: Include rpc/clnt.h for prototypes.

	* sunrpc/pmap_clnt.c: Use get_myaddress from header file.

1997-10-26 05:26  Ulrich Drepper  <drepper@cygnus.com>

	* configure.in: Punt if any directory mentioned in the
	enable-add-on parameter does not exist.

1997-10-25 19:25  Ulrich Drepper  <drepper@cygnus.com>

	* termios/Makefile (routines): Add tcgetsid.
	* termios/tcgetsid.c: New file.
	Provided by Mark M. Kettenis <kettenis@phys.uva.nl>.

1997-10-25 18:56  Ulrich Drepper  <drepper@cygnus.com>

	* stdlib/stdlib.h: Remove mblen optimization.
	* stdlib/mblen.c: Rewrite to make sure global state is not changed.
	Reported by anderson@metrolink.com.

1997-10-19 21:51  Wolfram Gloger  <wg@wolfram.dent.med.uni-muenchen.de>

	* malloc/thread-m.h [_LIBC]:  Use new __libc_internal_tsd_{set,get}
	interface for thread-specific data.

1997-10-25 06:51  Ulrich Drepper  <drepper@cygnus.com>

	* elf/dl-addr.c: Use braces for correct logical grouping.
	Patch by Wolfram Gloger <wmglo@dent.med.uni-muenchen.de>.

1997-10-18 09:15  Geoff Keating  <geoffk@ozemail.com.au>

	* io/ftwtest-sh: Sometimes /tmp is a symlink to somewhere more
	convenient; that caused this test to break.

	* sysdeps/powerpc/dl-machine.h: Fix typo.

	* sysdeps/powerpc/bits/fenv.h: Don't use floating-point registers
	when -msoft-float is in effect, because this causes compilation to
	stop.
	* sysdeps/powerpc/bits/mathinlines.h: Likewise.

	* rpm/template: Add description, use RPM flags rather than the ones
	used to build the spec.  Build in a temporary directory, not /.

	* elf/dl-lookup.c: Don't include _itoa.h, it's not used.
	* elf/dl-minimal.c: Use _itoa_word rather than _itoa.  It seems that
	_itoa is the only routine that ld.so uses that requires something
	from libgcc.a on powerpc, so it would be best to avoid it in ld.so.
	* elf/rtld.c: Likewise.
	* sysdeps/generic/_strerror.c: Likewise.
	* stdio-common/_itoa.c: Split out digits strings.
	* stdio-common/itoa-digits.c: New file.
	* stdio-common/Makefile: Add itoa-digits.

1997-10-21  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* manual/filesys.texi (Scanning Directory Content): Document error
	case more.

	* dirent/scandir.c (scandir): Ignore errors from select function.
	Suggested by urbanw@cs.umu.se (closes PR libc/316).

1997-10-25 06:18  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/sparc/sparc32/socket.S: Corrections.
	Patch by Erik Troan <ewt@redhat.com>.

1997-10-25 04:00  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Favour exact
	matching of version function if both the general (1) and
	glibc-specific (3) entry are present.

1997-10-22 18:47  Thorsten Kukuk  <kukuk@vt.uni-paderborn.de>

	* sunrpc/rpc/clnt.h: Add get_myaddress prototype.

	* nis/libnsl.map: Fix typo.

	* nis/nis_call.c: Fix memory leak.

1997-10-22 19:29  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/generic/memcmp.c: Define __P if not defined before.
	Patch by Jim Meyering <meyering@eng.ascend.com>.

1997-10-21 22:09  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/sys/prctl.h: New file by Richard Gooch
	<rgooch@atnf.csiro.au>.

1997-10-21 21:50  Ulrich Drepper  <drepper@cygnus.com>

	* misc/syslog.c (vsyslog): Open console with O_NOCTTY.
	Patch by Zack Weinberg <zack@rabi.phys.columbia.edu>.

1997-10-21 18:07  Ulrich Drepper  <drepper@cygnus.com>

	* posix/wordexp.c: Improve handling of $... expressions.
	Patch by Tim Waugh <tim@cyberelk.demon.co.uk>.

1997-10-21 16:12  Ulrich Drepper  <drepper@cygnus.com>

	* manual/string.texi: Correct return values of bcopy and bzero.
	Patch by Matthew Wilcox <willy@odie.barnet.ac.uk>.

1997-10-18 15:03  Philip Blundell  <Philip.Blundell@pobox.com>

	* sysdeps/unix/sysv/linux/bits/socket.h: Correct types of some
	elements in struct msghdr and struct cmsghdr, to keep in step with
	the kernel.

1997-10-17 22:29  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/sparc/sparc32/init-first.h: Fix another
	bug in startup code.
	Patch by Eric Delaunay <delaunay@lix.polytechnique.fr>.

1997-10-16 20:17  Richard Henderson  <rth@cygnus.com>

	* sysdeps/unix/sysv/linux/sparc/sparc32/socket.S: Dump args to the
	stack and give the kernel a pointer.  Use the sysdep.h macros.

1997-10-17 04:07  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/sparc/sparc32/elf/start.S: Calculate argv correctly.
	Patch by Eric Delaunay <delaunay@lix.polytechnique.fr>.

1997-10-16  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* sysdeps/libm-ieee754/s_nextafterxf.c [!__STDC__]: Correct typo.

1997-10-16 14:50  Ulrich Drepper  <drepper@cygnus.com>

	* manual/pattern.texi: Document globfree.

1997-10-15 21:11  Philip Blundell  <Philip.Blundell@pobox.com>

	* sysdeps/unix/sysv/linux/net/if_packet.h: New file.
	* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
	net/if_packet.h.

	* sysdeps/unix/sysv/linux/net/if_arp.h (ARPHRD_ASH): New type, for
	64Mbps ASH.
	(ARPHRD_ETHER): This is used for 100Mbps networks too.

1997-10-15  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* Makerules (install): Use full pathnames for linker script.
	This is to work around a limitation in `ld' while no better solution
	is possible.

1997-10-15  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* malloc/malloc.c (mmap_chunk): Put inline before static in
	function definition to avoid compiler warning.
	(malloc_extend): Likewise.

	* sysdeps/generic/des_impl.c: Include "des.h" to avoid warning.

1997-10-15  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* NEWS: Fix @gnu.ai.mit.edu -> @gnu.org.
	* README.template: Likewise.
	* db/makedb.c: Likewise.
	* elf/ldd.bash.in: Likewise.
	* elf/ldd.sh.in: Likewise.
	* intl/locale.alias: Likewise.
	* login/programs/utmpd.c: Likewise.
	* libio/stdfiles.c [!_IO_MTSAFE] (DEF_STDFILE): Fix parameter list.

1997-10-14  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Rules: Remove all empty.* files.
	(shared-only-routines): Correct implementation.

1997-10-14  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/libm-ieee754/s_lrintl.c: Make compilable.
	* sysdeps/libm-ieee754/s_llrintl.c: Likewise.  Optimized.

1997-10-14  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf/ldd.bash.in: Only prepend ./ if the file contains no slash
	at all.
	* elf/ldd.sh.in: Likewise.

1997-10-14  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/m68k/sys/ucontext.h: New file.

1997-10-13  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/m68k/fpu/s_scalbln.c: New (empty) file.
	* sysdeps/m68k/fpu/s_scalblnf.c: New (empty) file.
	* sysdeps/m68k/fpu/s_scalblnl.c: New (empty) file.

	* sysdeps/m68k/fpu/s_scalbn.c: Add scalbln alias.
	* sysdeps/m68k/fpu/s_scalbnf.c: Adapted.
	* sysdeps/m68k/fpu/s_scalbnl.c: Adapted.

	* sysdeps/m68k/fpu/s_lrint.c: Add standard skeleton stuff.
	* sysdeps/m68k/fpu/s_lrintf.c: New file.
	* sysdeps/m68k/fpu/s_lrintl.c: New file.

	* sysdeps/m68k/fpu/bits/mathinline.h: Add fma and scalbln.  Update
	lrint and scalbn.
	(__m81_inline) [__cplusplus]: Define to __inline.

	* math/bits/mathcalls.h: Remove whitespace before second argument
	of __MATHDECL.  Add note explaining this.

1997-10-13  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* manual/arith.texi (Absolute Value): Spelling fix.

1997-10-13  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* malloc/obstack.h (obstack_empty_p) [!__GNUC__]: Properly
	parenthesize the macro parameter.

	* Rules: Remove rules to magically install <subdir>.h headers.
1997-10-26 20:13:00 +00:00

175 lines
6.5 KiB
Plaintext

With the introduction of version 2 of the GNU C Library the format of
the UTMP and WTMP files changed for some configurations (see Q&A 10 of
the FAQ). This version of the GNU C Library contains a solution for
the problems this may cause, by providing an UTMP daemon `utmpd'.
Do I need it?
=============
If your configuration is one of the following:
i[3456]86-*-linux-gnu Linux-2.0 on Intel
m68k-*-linux-gnu Linux-2.0 on Motorola 680x0
you might need it, so please read on. If it is not, please read the
section titled `Programming' at the end of this text.
In principle, you only need the daemon if you want to keep using old
programs linked against the previous version of the Linux C Library
(libc5). In addition you will need the daemon if you are running
Linux on Intel, and you are planning to use iBCS (Intel Binary
Compatibility Standard). If you have no libc5 programs left on your
system and you are not using iBCS, it is probably better not to
install the daemon since it uses (a small amount of) memory and CPU
time. But apart from that it shouldn't hurt to install `utmpd', so
when in doubt install it anyway.
Installation
============
The installation process (`make install') already places the `utmpd'
binary in $(sbindir). The only thing you have to do is modifying your
startup scripts to start the daemon. Unfortunately this is a bit of a
hassle, since the layout of these scripts is not standardized. You
should try to find the command that creates the file `/var/run/utmp'.
This is usually done in a script named `/etc/rc', `/etc/init.d/boot'
(Debian) or `/etc/rc.d/rc.S' (Slackware). You could try:
grep utmp /etc/* /etc/init.d/* /etc/rc.d/*
to find the right script. The creation of `/var/run/utmp' is usually
done with a command like:
: > /var/run/utmp
or
cat /dev/null > /var/run/utmp
Now add a line before this command to create the file `/var/run/utmpx'
e.g.
: > /var/run/utmpx
or
cat /dev/null > /var/run/utmpx
whatever you prefer, and after this command, add a line to start the
daemon
utmpd
The entire fragment could look something like
# Clean up /var/run and create /var/run/utmp so that we can login.
( cd /var/run && find . ! -type d -exec rm -f -- {} \; )
: > /var/run/utmpx
: > /var/run/utmp
utmpd
If the file `/var/log/wtmp' exists on your system, you will probably
want to create the file `/var/log/wtmpx'. Programs linked against the
GNU C Library will now write to `/var/log/wtmpx', while programs
linked against the old library will continue to write to
`/var/log/wtmp'. Of course this means that the information gets
spread over two files. We hope to provide a better solution in the
future.
After a reboot, user accounting should be working again. If not,
please refer to the section titled `Troubleshooting' below before
submitting a bug report.
What is `utmpd' doing?
======================
After installation there will be two files that store the user
accounting information: `/var/run/utmp' and `/var/run/utmpx'. The
file `/var/run/utmp' will be in the old format so libc5 programs will
continue to work (even if they are broken and do not use the library
functions to access the user accounting database). And on Intel, you
can safely link `/var/run/utmp' to `/etc/utmp' for iBCS programs.
Programs linked against the new GNU C Library (glibc2) will contact
the daemon for all user accounting database access. The daemon will
store its information in `/var/run/utmpx' and keeps this file in sync
with `/var/run/utmp'. Entries added to `/var/run/utmpx' will be
converted to the old format and will be added to `/var/run/utmp' and
vice versa. This way both libc5 and glibc2 see the same information
in the same fields of `struct utmp'. Of course libc5 programs see only
part of the information that glibc2 programs see because not all
members of the glibc2 `struct utmp' are present in the libc5 `struct
utmp'. For the same reason libc5 will see a truncated version of
those fields where the length of the glibc2 field is larger than the
corresponding libc5 field (ut_user, ut_line, ut_host).
Troubleshooting
===============
If user accounting is not working on your system, e.g. programs like
`who' or `logname' return rubbish, or you cannot login, make
sure that:
* The file `/var/run/utmpx' exists.
* The file `/var/log/wtmpx' exists.
* No program linked against the GNU C Library (libc6) is accessing
`/var/run/utmp' directly (see the section on `Programming' below).
If that does not solve your problems, please use the `glibcbug' script
to report the problem to <bugs@gnu.org>.
The `utmpd' daemon uses `syslogd' to report problems. It uses the
`daemon' facility and `warning' and `error' levels. Alternatively you
could use the following option to ease debugging:
`--debug'
Use this option if you want the daemon to output its warnings and
error messages to the terminal instead of sending them to the
system logger (`syslogd'). When using this option the daemon does
not auto-background itself.
To use this option you should first kill the daemon that is already
running, and start a fresh one with the desired option:
kill `cat /var/run/utmpd.pid`
utmpd --debug
Please include any warnings or error messages from `utmpd' in your
bug reports.
Programming
===========
In order for the `utmpd' approach to work it is essential that NO
program EVER accesses the UTMP and WTMP files directly. Instead, a
program should use ONLY the available library functions:
* utmpname() Select the database used (UTMP, WTMP, ...).
* setutent() Open the database.
* getutent() Read the next entry from the database.
* getutid() Search for the next entry with a specific ID.
* getutline() Search for the next entry for a specific line.
* pututline() Write an entry to the database.
* endutent() Close the database.
* updwtmp() Add an entry to a database (WTMP, ...).
For details, please refer to `The GNU C Library Reference Manual',
which also contains information about some additional functions
derived from BSD and XPG that may be of interest. The command
info libc "User Accounting Database"
should point you at the right location.
If you encounter a program that reads from or, even worse, writes to
the UTMP and WTMP files directly, please report this as a bug to the
author of that program. Note that the files referred to by the macros
`_PATH_UTMP' and `_PATH_WTMP' might even disappear in the future, so
please do not use these, except in a call to `utmpname()' or
`updwtmp()', not even to check their existence.