diff options
author | Ulrich Drepper <drepper@redhat.com> | 1996-08-12 01:42:37 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1996-08-12 01:42:37 +0000 |
commit | a3e59be8d1e0dbb1d2ab25c3dc4b0ad04e159ad2 (patch) | |
tree | 4e507bb1c5005fdd7180feff4fa4729ca3790a8a /sysdeps/unix/getlogin.c | |
parent | 267ca16a67be70e0361c212e805d43884aee4506 (diff) | |
download | glibc-a3e59be8d1e0dbb1d2ab25c3dc4b0ad04e159ad2.zip glibc-a3e59be8d1e0dbb1d2ab25c3dc4b0ad04e159ad2.tar.gz glibc-a3e59be8d1e0dbb1d2ab25c3dc4b0ad04e159ad2.tar.bz2 |
Update.cvs/libc-ud-960811
Mon Aug 12 03:31:58 1996 Ulrich Drepper <drepper@cygnus.com>
* nss/nsswitch.c (__nss_configure_lookup): New function.
Allows to specify services.
* nss/XXX-lookup.h: Rename database variable and make global.
* nss/databases.def: New file. Real names of all databases.
* nss/nss.h: New file. Contains declaration useful for users
and service developers.
* nss/nsswitch.h: Move some declarations to nss/nss.h.
* nss.h: New file. Wrapper around nss/nss.h.
* nss/Makefile (headers): Add nss.h.
(distributes): Add databases.h.
Sun Aug 11 16:19:42 1996 Ulrich Drepper <drepper@cygnus.com>
Help the poor people with fast machines by making sure only
one `ar' commands works on the library.
* autolock.sh: New file. Written by Tom Tromey.
* Makerules (do-ar): Call autolock.sh shell script instead of
directly using `ar'.
* config.make.in: Make configuration variable AUTOLOCK which
gets initialized by configure.
* configure.in: Define variable AUTOLOCK to point to autolock.sh
script and mark it to substitute.
* string/Makefile: Add -fno-builtin for tst-strlen.c, too.
* elf/dl-lookup.c (_dl_lookup_symbol): Allow self-referencing.
Patch by David Mosberger-Tang.
Sun Aug 11 01:12:38 1996 Richard Henderson <rth@tamu.edu>
* sysdeps/alpha/dl-machine.h (elf_alpha_fix_plt): Optimize LD_BIND_NOW
startup by moving Icache flush from here ...
(ELF_MACHINE_RUNTIME_TRAMPOLINE): ... to here.
(ELF_MACHINE_USER_ADDRESS_MASK): Delete; it is unused.
* sysdeps/alpha/divrem.h: Update comment to reflect the actual
calling conventions. The code is already correct.
Sun Aug 11 01:06:42 1996 Richard Henderson <rth@tamu.edu>
* string/Makefile: Compile tester with -fno-builtin as we want to
test our implementations, not gcc's.
Diffstat (limited to 'sysdeps/unix/getlogin.c')
-rw-r--r-- | sysdeps/unix/getlogin.c | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/sysdeps/unix/getlogin.c b/sysdeps/unix/getlogin.c index 5a8ad96..e23ffa4 100644 --- a/sysdeps/unix/getlogin.c +++ b/sysdeps/unix/getlogin.c @@ -34,25 +34,21 @@ getlogin (void) char tty_pathname[2 + 2 * NAME_MAX]; char *real_tty_path = tty_pathname; char *result = NULL; - static struct utmp_data utmp_data = { ut_fd: -1 }; + struct utmp_data utmp_data = { ut_fd: -1 }; + static char name[UT_NAMESIZE + 1]; struct utmp *ut, line; - { - int err = 0; - int d = __open ("/dev/tty", 0); - if (d < 0) - return NULL; - - if (__ttyname_r (d, real_tty_path, sizeof (tty_pathname)) < 0) - err = errno; - (void) close (d); - - if (err != 0) - { - errno = err; - return NULL; - } - } + /* Get name of tty connected to fd 0. Return NULL if not a tty or + if fd 0 isn't open. Note that a lot of documentation says that + getlogin() is based on the controlling terminal---what they + really mean is "the terminal connected to standard input". The + getlogin() implementation of DEC Unix, SunOS, Solaris, HP-UX all + return NULL if fd 0 has been closed, so this is the compatible + thing to do. Note that ttyname(open("/dev/tty")) on those + systems returns /dev/tty, so that is not a possible solution for + getlogin(). */ + if (__ttyname_r (0, real_tty_path, sizeof (tty_pathname)) < 0) + return NULL; real_tty_path += 5; /* Remove "/dev/". */ @@ -66,7 +62,11 @@ getlogin (void) result = NULL; } else - result = ut->ut_line; + { + strncpy (name, ut->ut_user, UT_NAMESIZE); + name[UT_NAMESIZE] = '\0'; + result = name; + } __endutent_r (&utmp_data); |