summaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1996-11-27 06:13:15 +0000
committerUlrich Drepper <drepper@redhat.com>1996-11-27 06:13:15 +0000
commit8a52392237c44cbbd1ffc62b164230e1159dfb76 (patch)
treecacdf37e344b96d785d0862d05f63aaa5caac621 /sysdeps
parent8f8619cbd2e9e624d00c8835ae027642c869dd3f (diff)
downloadglibc-8a52392237c44cbbd1ffc62b164230e1159dfb76.tar.gz
update from main archive 961126cvs/libc-961127
Wed Nov 27 06:10:10 1996 Ulrich Drepper <drepper@cygnus.com> * Makefile: Fix typo. * configure: Require autoconf-2.11. * elf/dl-deps.c: Terminate duplicate list. * libio/libio.h: Add prototypes for _IO_seekoff and _IO_seekpos. * libio/strfile.h: Update from current libg++. * libio/strops.c: Likewise. * login/Makefile (routines): Update after correction of reentrant interface. * login/endutent.c: Removed. * login/endutent_r.c: Likewise. * login/pututline.c: Likewise. * login/pututline_r.c: Likewise. * login/setutent.c: Likewise. * login/setutent_r.c: Likewise. * login/getutent.c: Update for new interface. * login/getutent_r.c: Likewise. * login/getutid.c: Likewise. * login/getutid_r.c: Likewise. * login/getutline.c: Likewise. * login/getutline_r.c: Likewise. * login/login.c: Likewise. * login/logout.c: Likewise. * login/logwtmp.c: Likewise. * login/utmp.h: Likewise. * sysdeps/unix/getlogin.c: Likewise. * sysdeps/unix/getlogin_r.c: Likewise. * login/utmp-private.h: New private header. * login/utmp_db.c: Stub DB backend for utmp handler. * login/utmp_file.c: File backend for utmp handler. * sysdeps/gnu/utmpbits.h (struct utmp): Add some more fields. (enum utlogin): List of record types. (struct exit_status): Record to align with other implementations. * sysdeps/generic/paths.h: Add _PATH_UTMP_DB. * sysdeps/unix/sysv/linux/paths.h: Likewise. * sysdeps/generic/pty.c: Use getgrnam_r instead of getgrnam. * sysdeps/stub/getlogin.c: Update copyright. * sysdeps/stub/getlogin_r.c: Likewise. * nss/getXXbyYY_r.c: Use -1l for error-pointer value instead of -1. * nss/getXXent_r.c: Likewise. * nss/nsswitch.c: Likewise. * posix/Makefile (headers): Add wait.h. * posix/wait.h: New file. * posix/sys/types.h: Always define intN_t types. * stdio-common/Makefile: Update copyright. Use -Wno-format flag for scanf4.c and scanf7.c. * stdlib/stdlib.h: Reformat. * time/africa: Update from ADO tzdata1996m. * time/antarctica: Likewise. * time/asia: Likewise. * time/australia: Likewise. * time/etcetera: Likewise. * time/europe: Likewise. * time/northamerica: Likewise. * time/southamerica: Likewise. * time/zone.tab: Likewise. Fri Nov 22 19:34:12 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/posix/getcwd.c (__getcwd): After resizing the buffer move the current contents to the end and relocate file name pointer to upper half of the buffer. Sun Nov 24 04:56:19 1996 Ulrich Drepper <drepper@cygnus.com> * time/africa: Update from ADO tzdata1996m. * time/antarctica: Likewise. * time/asia: Likewise. * time/australia: Likewise. * time/etcetera: Likewise. * time/europe: Likewise. * time/nothamerica: Likewise. * time/southameria: Likewise. * time/zone.tab: Likewise. * sysdeps/unix/sysv/linux/sys/serial.h: New file. * sysdeps/unix/sysv/linux/Makefile [$(subdir)=misc] (sysdep_headers): Add sys/serial.h. * sysdeps/unix/sysv/linux/Dist: Add sys/serial.h. * posix/wait.h: New file. * posix/Makefile (headers): Add wait.h. Sat Nov 23 17:27:52 1996 Roland McGrath <roland@gnu.ai.mit.edu> * Makeconfig ($(common-objpfx)soversions.mk): Use regular expression instead of shell pattern matching. * shlib-versions: Change to regular expressions. Sat Nov 23 13:24:55 1996 Ulrich Drepper <drepper@cygnus.com> * io/stat.c: Add section from libgcc to copyright comment to allow this file to be statically linked in applications. * io/fstat.c: Likewise. * io/lstat.c: Likewise. * io/mknod.c: Likewise. Fri Nov 22 15:14:23 1996 Ulrich Drepper <drepper@cygnus.com> * csu/initfini.c: Add section from libgcc to copyright comment to allow this file to be statically linked in applications. * malloc/obstack.h [!_LIBC && !HAVE_STRING_H]: Define memcpy if not already defined. (obstack_grow, obstack_grow0): Correct placement of braces. * gnu-versions.h (_GNU_OBSTACK_INTERFACE_VERSION): Define to 2. * malloc/obstack.c (OBSTACK_INTERFACE_VERSION): Define to 2. Thu Nov 21 19:54:51 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makerules (make-link): Simplify by changing directory only if not using rellns-sh; check whether we really have symbolic links. * rellns-sh: Fix the case of $(dirname $2) being a prefix of $(dirname $1); use status of ln for exit code; make more robust against multiple slashes in a row. Thu Nov 21 13:05:21 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu> * configure.in (after AC_CANONICAL_HOST): mutate *-*-gnu* names into *-*-gnu-gnu*. * shlib-versions (gnu versions): Recognize *-*-gnu-gnu* instead of the three-part name, to distinguish correctly from *-*-linux-gnu*. * sysdeps/mach/hurd/Makefile ($(libdir)/libc.so): Depend on $(rpcuserlibs). * sysdeps/mach/hurd/Makefile (install-others): Add $(libdir)/libc_p.a. ($(libdir)/libc_p.a): New rule. * sysdeps/mach/hurd/libc_p-ldscript: New file. * sysdeps/mach/hurd/Dist: Add libc_p-ldscript. Wed Nov 20 20:28:21 1996 Richard Henderson <rth@tamu.edu> * Makerules (make-link): Use $(shell) to find rellns-sh before we cd. * time/Makefile: Likewise. * sysdeps/alpha/elf/Makefile: New file. Build crtbegin.o & crtend.o. * sysdeps/alpha/elf/Dist: New file. * sysdeps/alpha/elf/crtbegin.S, sysdeps/alpha/elf/crtend.S: New files. The bits currently distributed with GCC fail in two ways -- they don't understand multiple .got subsections and the extents of the lists are dynamicly bound meaning that the application's lists get executed multiple times and the library's lists never get executed. Wed Nov 20 00:42:45 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * stdlib/strtod.c: Fix previous change. Wed Nov 20 22:07:58 1996 Andreas Jaeger <aj@arthur.pfalz.de> * time/Makefile ($(installed-localtime-file)): Use $(..) to find rellns-sh script. Wed Nov 20 12:50:54 1996 Ulrich Drepper <drepper@cygnus.com> * stdio-common/Makefile: Add CFLAGS-scanf7.c to prevent warning. Likesie for scanf4.c
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/alpha/elf/Dist2
-rw-r--r--sysdeps/alpha/elf/crtbegin.S91
-rw-r--r--sysdeps/alpha/elf/crtend.S92
-rw-r--r--sysdeps/generic/paths.h1
-rw-r--r--sysdeps/generic/pty.c5
-rw-r--r--sysdeps/gnu/utmpbits.h34
-rw-r--r--sysdeps/mach/hurd/Dist2
-rw-r--r--sysdeps/mach/hurd/Makefile9
-rw-r--r--sysdeps/mach/hurd/libc_p-ldscript5
-rw-r--r--sysdeps/posix/getcwd.c5
-rw-r--r--sysdeps/stub/getlogin.c29
-rw-r--r--sysdeps/stub/getlogin_r.c28
-rw-r--r--sysdeps/unix/getlogin.c35
-rw-r--r--sysdeps/unix/getlogin_r.c37
-rw-r--r--sysdeps/unix/sysv/linux/Dist1
-rw-r--r--sysdeps/unix/sysv/linux/Makefile3
-rw-r--r--sysdeps/unix/sysv/linux/paths.h1
-rw-r--r--sysdeps/unix/sysv/linux/sys/serial.h110
18 files changed, 414 insertions, 76 deletions
diff --git a/sysdeps/alpha/elf/Dist b/sysdeps/alpha/elf/Dist
new file mode 100644
index 0000000000..3e7010182b
--- /dev/null
+++ b/sysdeps/alpha/elf/Dist
@@ -0,0 +1,2 @@
+crtbegin.S
+crtend.S
diff --git a/sysdeps/alpha/elf/crtbegin.S b/sysdeps/alpha/elf/crtbegin.S
new file mode 100644
index 0000000000..f75673e35f
--- /dev/null
+++ b/sysdeps/alpha/elf/crtbegin.S
@@ -0,0 +1,91 @@
+/* Copyright (C) 1996 Free Software Foundation, Inc.
+ Contributed by Richard Henderson (rth@tamu.edu)
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If
+ not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+
+/*
+ * Heads of the constructor/destructor lists.
+ */
+
+/* The __*TOR_LIST__ symbols are not global because when this file is used
+ in a shared library, we do not want the symbol to fall over to the
+ application's lists. */
+
+.section .ctors,"aw"
+
+ .align 3
+__CTOR_LIST__:
+ .quad -1
+
+.section .dtors,"aw"
+
+ .align 3
+__DTOR_LIST__:
+ .quad -1
+
+
+/*
+ * Fragment of the ELF _fini routine that invokes our dtor cleanup.
+ */
+
+.section .fini,"ax"
+
+ /* Since the bits of the _fini function are spread across many
+ object files, each potentially with its own GP, we must
+ assume we need to load ours. Further, our .fini section
+ can easily be more than 4MB away from our .text bits so we
+ can't use bsr. */
+
+ br $gp,1f
+1: ldgp $gp,0($gp)
+ jsr $26,__do_global_dtors_aux
+
+ /* Must match the alignment we got from crti.o else we get
+ zero-filled holes in our _fini function and thense SIGILL. */
+ .align 3
+
+/*
+ * Invoke our destructors in order.
+ */
+
+.text
+
+ .align 3
+ .ent __do_global_dtors_aux
+
+__do_global_dtors_aux:
+ .frame $sp,16,$26,0
+ /* GP already loaded in .fini */
+ lda $sp,-16($sp)
+ stq $9,8($sp)
+ stq $26,0($sp)
+ .mask (1<<26)|(1<<9), -16
+ .prologue 1
+
+ lda $9,__DTOR_LIST__
+ br 1f
+0: jsr $26,($27)
+1: ldq $27,8($9)
+ addq $9,8,$9
+ bne $27,0b
+
+ ldq $26,0($sp)
+ ldq $9,8($sp)
+ lda $sp,16($sp)
+ ret
+
+ .end __do_global_dtors_aux
diff --git a/sysdeps/alpha/elf/crtend.S b/sysdeps/alpha/elf/crtend.S
new file mode 100644
index 0000000000..7f51d81da1
--- /dev/null
+++ b/sysdeps/alpha/elf/crtend.S
@@ -0,0 +1,92 @@
+/* Copyright (C) 1996 Free Software Foundation, Inc.
+ Contributed by Richard Henderson (rth@tamu.edu)
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If
+ not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+
+/*
+ * Tails of the constructor/destructor lists.
+ */
+
+/* The __*TOR_END__ symbols are not global because when this file is used
+ in a shared library, we do not want the symbol to fall over to the
+ application's lists. */
+
+.section .ctors,"aw"
+
+ .align 3
+__CTOR_END__:
+ .quad 0
+
+.section .dtors,"aw"
+
+ .align 3
+__DTOR_END__:
+ .quad 0
+
+
+/*
+ * Fragment of the ELF _init routine that invokes our ctor startup
+ */
+
+.section .init,"ax"
+
+ /* Since the bits of the _init function are spread across many
+ object files, each potentially with its own GP, we must
+ assume we need to load ours. Further, our .init section
+ can easily be more than 4MB away from our .text bits so we
+ can't use bsr. */
+
+ br $gp,1f
+1: ldgp $gp,0($gp)
+ jsr $26,__do_global_ctors_aux
+
+ /* Must match the alignment we got from crti.o else we get
+ zero-filled holes in our _init function and thense SIGILL. */
+ .align 3
+
+/*
+ * Invoke our destructors in order.
+ */
+
+.text
+
+ .align 3
+ .ent __do_global_ctors_aux
+
+__do_global_ctors_aux:
+ .frame $sp,16,$26,0
+ /* GP already loaded in .init. */
+ lda $sp,-16($sp)
+ stq $9,8($sp)
+ stq $26,0($sp)
+ .mask (1<<26)|(1<<9), -16
+ .prologue 1
+
+ lda $9,__CTOR_END__
+ br 1f
+0: jsr $26,($27)
+1: ldq $27,-8($9)
+ subq $9,8,$9
+ not $27,$0
+ bne $0,0b
+
+ ldq $26,0($sp)
+ ldq $9,8($sp)
+ lda $sp,16($sp)
+ ret
+
+ .end __do_global_ctors_aux
diff --git a/sysdeps/generic/paths.h b/sysdeps/generic/paths.h
index a2ff426753..e5f34014a8 100644
--- a/sysdeps/generic/paths.h
+++ b/sysdeps/generic/paths.h
@@ -62,6 +62,7 @@
#define _PATH_TTY "/dev/tty"
#define _PATH_UNIX "/vmunix"
#define _PATH_UTMP "/var/run/utmp"
+#define _PATH_UTMP_DB "/var/run/utmp.db"
#define _PATH_VI "/usr/bin/vi"
#define _PATH_WTMP "/var/log/wtmp"
diff --git a/sysdeps/generic/pty.c b/sysdeps/generic/pty.c
index 8df8aba4ba..660602b25a 100644
--- a/sysdeps/generic/pty.c
+++ b/sysdeps/generic/pty.c
@@ -59,9 +59,12 @@ openpty(amaster, aslave, name, termp, winp)
static char line[] = "/dev/ptyXX";
register const char *cp1, *cp2;
register int master, slave, ttygid;
+ size_t buflen = sysconf (_SC_GETGR_R_SIZE_MAX);
+ char buffer[buflen];
+ struct group grbuffer;
struct group *gr;
- if ((gr = getgrnam("tty")) != NULL)
+ if (getgrnam_r("tty", &grbuffer, buffer, buflen, &gr) >= 0)
ttygid = gr->gr_gid;
else
ttygid = -1;
diff --git a/sysdeps/gnu/utmpbits.h b/sysdeps/gnu/utmpbits.h
index 37e4fb9acc..5bb230b243 100644
--- a/sysdeps/gnu/utmpbits.h
+++ b/sysdeps/gnu/utmpbits.h
@@ -52,6 +52,31 @@ struct lastlog
char ll_host[UT_HOSTSIZE];
};
+
+/* Which program created the record. */
+enum utlogin
+{
+ unknown,
+ X,
+ local,
+ rlogin,
+ telnet,
+ rsh,
+ ftp,
+ screen,
+ splitvt,
+ xterm
+ /* More could be added here. */
+};
+
+
+struct exit_status
+{
+ short int e_termination; /* Process termination status. */
+ short int e_exit; /* Process exit status. */
+};
+
+
struct utmp
{
short int ut_type; /* Type of login. */
@@ -61,11 +86,14 @@ struct utmp
char ut_user[UT_NAMESIZE]; /* Username (not NUL terminated). */
#define ut_name ut_user /* Compatible field name for same. */
char ut_host[UT_HOSTSIZE]; /* Hostname for remote login. */
- int ut_exit; /* Process termination/exit status. */
+ struct exit_status ut_exit; /* The exit status of a process marked
+ as DEAD_PROCESS. */
long ut_session; /* Session ID, used for windowing. */
struct timeval ut_tv; /* Time entry was made. */
- int32_t ut_addr; /* Internet address of remote host. */
- char pad[32]; /* Reserved for future use. */
+ int32_t ut_addr[4]; /* Internet address of remote host. */
+ enum utlogin ut_login; /* To store information about source. */
+ short int ut_syslen; /* Significant length of ut_host. */
+ char pad[14]; /* Reserved for future use. */
};
#define ut_time ut_tv.tv_sec /* Backwards compatibility. */
diff --git a/sysdeps/mach/hurd/Dist b/sysdeps/mach/hurd/Dist
index 986efc4e2d..62fe4d96c6 100644
--- a/sysdeps/mach/hurd/Dist
+++ b/sysdeps/mach/hurd/Dist
@@ -1,3 +1,3 @@
errnos.awk err_hurd.sub
libc-ldscript
-
+libc_p-ldscript
diff --git a/sysdeps/mach/hurd/Makefile b/sysdeps/mach/hurd/Makefile
index 74ceb2e6e1..eb3dc01252 100644
--- a/sysdeps/mach/hurd/Makefile
+++ b/sysdeps/mach/hurd/Makefile
@@ -98,17 +98,20 @@ common-generated += errnos.d stamp-errnos
libc-name = crt
ifeq (,$(subdir))
-install-others += $(libdir)/libc.a
+install-others += $(libdir)/libc.a $(libdir)/libc_p.a
$(libdir)/libc.a: $(hurd)/libc-ldscript; $(do-install)
+$(libdir)/libc_p.a: $(hurd)/libc_p-ldscript; $(do-install)
endif
-# For the shared library, we don't need to do the linker script machination.
-# Instead, we specify the required libraries when building the shared object.
+# Make sure these are used to build the libc.so shared object too.
rpcuserlibs := $(common-objpfx)mach/libmachuser.so \
$(common-objpfx)hurd/libhurduser.so
$(common-objpfx)libc.so: $(rpcuserlibs)
rpath-link := $(rpath-link):$(common-objpfx)mach:$(common-objpfx)hurd
+# And get them into the libc.so ldscript.
+$(libdir)/libc.so: $(rpcuserlibs)
+
# The RPC stubs from these libraries are needed in building the dynamic
# linker, too. It must be self-contained, so we link the needed PIC
# objects directly into the shared object.
diff --git a/sysdeps/mach/hurd/libc_p-ldscript b/sysdeps/mach/hurd/libc_p-ldscript
new file mode 100644
index 0000000000..d809998a1f
--- /dev/null
+++ b/sysdeps/mach/hurd/libc_p-ldscript
@@ -0,0 +1,5 @@
+/* This linker script is installed as /lib/libc_p.a.
+ It makes -lc_p become just like -( -lcrt_p -lmachuser_p -lhurduser_p -).
+ */
+
+GROUP ( libcrt_p.a libmachuser_p.a libhurduser_p.a )
diff --git a/sysdeps/posix/getcwd.c b/sysdeps/posix/getcwd.c
index 825599f370..5f3f628fb5 100644
--- a/sysdeps/posix/getcwd.c
+++ b/sysdeps/posix/getcwd.c
@@ -344,8 +344,11 @@ __getcwd (buf, size)
__set_errno (ENOMEM);/* closedir might have changed it.*/
return NULL;
}
- pathp = &buf[pathp - path];
+ pathp = &buf[pathp - path + size / 2];
path = buf;
+ /* Move current contents up to the end of the buffer.
+ This is guaranteed to be non-overlapping. */
+ memcpy (pathp, pathp - size / 2, path + size - pathp);
}
}
pathp -= namlen;
diff --git a/sysdeps/stub/getlogin.c b/sysdeps/stub/getlogin.c
index 484c159855..34acbc38a9 100644
--- a/sysdeps/stub/getlogin.c
+++ b/sysdeps/stub/getlogin.c
@@ -1,20 +1,20 @@
/* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+ This file is part of the GNU C Library.
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
-The GNU C Library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Library General Public License for more details.
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <stddef.h>
#include <errno.h>
@@ -23,11 +23,10 @@ Cambridge, MA 02139, USA. */
/* Return the login name of the user, or NULL if it can't be determined.
The returned pointer, if not NULL, is good only until the next call. */
char *
-getlogin ()
+getlogin (void)
{
__set_errno (ENOSYS);
return NULL;
}
-
stub_warning (getlogin)
diff --git a/sysdeps/stub/getlogin_r.c b/sysdeps/stub/getlogin_r.c
index fa9bb75d41..d811818096 100644
--- a/sysdeps/stub/getlogin_r.c
+++ b/sysdeps/stub/getlogin_r.c
@@ -1,21 +1,21 @@
/* Reentrant function to return the current login name. Stub version.
-Copyright (C) 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+ Copyright (C) 1996 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
-The GNU C Library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Library General Public License for more details.
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <errno.h>
#include <unistd.h>
diff --git a/sysdeps/unix/getlogin.c b/sysdeps/unix/getlogin.c
index ef985f2d2f..6e8a9a2a87 100644
--- a/sysdeps/unix/getlogin.c
+++ b/sysdeps/unix/getlogin.c
@@ -1,20 +1,20 @@
/* Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+ This file is part of the GNU C Library.
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
-The GNU C Library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Library General Public License for more details.
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <errno.h>
#include <unistd.h>
@@ -34,9 +34,8 @@ getlogin (void)
char tty_pathname[2 + 2 * NAME_MAX];
char *real_tty_path = tty_pathname;
char *result = NULL;
- struct utmp_data utmp_data = { ut_fd: -1 };
static char name[UT_NAMESIZE + 1];
- struct utmp *ut, line;
+ struct utmp *ut, line, buffer;
/* 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
@@ -52,9 +51,9 @@ getlogin (void)
real_tty_path += 5; /* Remove "/dev/". */
- __setutent_r (&utmp_data);
+ __setutent ();
strncpy (line.ut_line, real_tty_path, sizeof line.ut_line);
- if (__getutline_r (&line, &ut, &utmp_data) < 0)
+ if (__getutline_r (&line, &buffer, &ut) < 0)
{
if (errno == ESRCH)
/* The caller expects ENOENT if nothing is found. */
@@ -68,7 +67,7 @@ getlogin (void)
result = name;
}
- __endutent_r (&utmp_data);
+ __endutent ();
return result;
}
diff --git a/sysdeps/unix/getlogin_r.c b/sysdeps/unix/getlogin_r.c
index aa2c0617e6..868fdbee12 100644
--- a/sysdeps/unix/getlogin_r.c
+++ b/sysdeps/unix/getlogin_r.c
@@ -1,21 +1,21 @@
/* Reentrant function to return the current login name. Unix version.
-Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+ Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
-The GNU C Library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Library General Public License for more details.
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <errno.h>
#include <unistd.h>
@@ -38,8 +38,7 @@ getlogin_r (name, name_len)
char tty_pathname[2 + 2 * NAME_MAX];
char *real_tty_path = tty_pathname;
int result = 0;
- struct utmp_data utmp_data;
- struct utmp *ut, line;
+ struct utmp *ut, line, buffer;
{
int err;
@@ -60,9 +59,9 @@ getlogin_r (name, name_len)
real_tty_path += 5; /* Remove "/dev/". */
- setutent_r (&utmp_data);
+ __setutent ();
strncpy (line.ut_line, real_tty_path, sizeof line.ut_line);
- if (getutline_r (&line, &ut, &utmp_data) < 0)
+ if (__getutline_r (&line, &buffer, &ut) < 0)
{
if (errno == ESRCH)
/* The caller expects ENOENT if nothing is found. */
@@ -85,7 +84,7 @@ getlogin_r (name, name_len)
result = 0;
}
}
- endutent_r (&utmp_data);
+ __endutent ();
return result;
}
diff --git a/sysdeps/unix/sysv/linux/Dist b/sysdeps/unix/sysv/linux/Dist
index ce55ab2d25..e1a89711e2 100644
--- a/sysdeps/unix/sysv/linux/Dist
+++ b/sysdeps/unix/sysv/linux/Dist
@@ -20,6 +20,7 @@ sys/mount.h
sys/mtio.h
sys/procfs.h
sys/quota.h
+sys/serial.h
sys/socketcall.h
sys/soundcard.h
sys/sysctl.h
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index fcfb76c08f..69c207a575 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -8,7 +8,8 @@ sysdep_routines += sysctl clone
sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h sys/mtio.h \
sys/module.h sys/io.h sys/klog.h sys/kdaemon.h \
sys/user.h syscall-list.h sys/sysmacros.h sys/procfs.h \
- sys/debugreg.h sys/kd.h sys/soundcard.h sys/vt.h
+ sys/debugreg.h sys/kd.h sys/soundcard.h sys/vt.h \
+ sys/serial.h
# Generate the list of SYS_* macros for the system calls (__NR_* macros).
$(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/syscall.h
diff --git a/sysdeps/unix/sysv/linux/paths.h b/sysdeps/unix/sysv/linux/paths.h
index 6751c0d4a9..eaa6aa632f 100644
--- a/sysdeps/unix/sysv/linux/paths.h
+++ b/sysdeps/unix/sysv/linux/paths.h
@@ -62,6 +62,7 @@
#define _PATH_TTY "/dev/tty"
#define _PATH_UNIX "/vmlinux"
#define _PATH_UTMP "/var/run/utmp"
+#define _PATH_UTMP_DB "/var/run/utmp.db"
#define _PATH_VI "/usr/bin/vi"
#define _PATH_WTMP "/var/log/wtmp"
diff --git a/sysdeps/unix/sysv/linux/sys/serial.h b/sysdeps/unix/sysv/linux/sys/serial.h
new file mode 100644
index 0000000000..1844ef6032
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sys/serial.h
@@ -0,0 +1,110 @@
+/* Copyright (C) 1996 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SYS_SERIAL_H
+#define _SYS_SERIAL_H 1
+/* Defines for PC AT serial port. */
+
+/* Serial port addresses and IRQs. */
+#define PORT_0 0x03F8
+#define PORT_1 0x02F8
+#define IRQ_0 0x04
+#define IRQ_1 0x03
+
+/* Definitions for INS8250 / 16550 chips. */
+
+/* Defined as offsets from the port address (data port). */
+#define DAT 0 /* Receive/transmit data. */
+#define ICR 1 /* Interrupt control register. */
+#define ISR 2 /* Interrupt status register. */
+#define LCR 3 /* Line control register. */
+#define MCR 4 /* Modem control register. */
+#define LSR 5 /* Line status register. */
+#define MSR 6 /* Modem status register. */
+#define DLL 0 /* Divisor latch (lsb). */
+#define DLH 1 /* Divisor latch (msb). */
+
+
+/* ICR. */
+#define RIEN 0x01 /* Enable receiver interrupt. */
+#define TIEN 0x02 /* Enable transmitter interrupt. */
+#define SIEN 0x04 /* Enable receiver line status interrupt. */
+#define MIEN 0x08 /* Enable modem status interrupt. */
+
+
+/* ISR */
+#define FFTMOUT 0x0c /* Fifo rcvr timeout. */
+#define RSTATUS 0x06 /* Change in receiver line status. */
+#define RxRDY 0x04 /* Receiver data available. */
+#define TxRDY 0x02 /* Transmitter holding register empty. */
+#define MSTATUS 0x00 /* Change in modem status. */
+
+
+/* LCR 3
+ Number of data bits per received/transmitted character. */
+#define RXLEN 0x03
+#define STOP1 0x00
+#define STOP2 0x04
+#define PAREN 0x08
+#define PAREVN 0x10
+#define PARMARK 0x20
+#define SNDBRK 0x40
+#define DLAB 0x80
+
+/* Baud rate definitions. */
+#define ASY9600 12
+
+/* Definitions for character length (data bits) in RXLEN field. */
+#define BITS5 0x00
+#define BITS6 0x01
+#define BITS7 0x02
+#define BITS8 0x03
+
+/* MCR. */
+#define DTR 0x01 /* Bring up DTR. */
+#define RTS 0x02 /* Bring up RTS. */
+#define OUT1 0x04
+#define OUT2 0x08
+#define LOOP 0x10 /* Put chip into loopback state. */
+
+
+/* LSR */
+#define RCA 0x01 /* Receive char available. */
+#define OVRRUN 0x02 /* Receive overrun. */
+#define PARERR 0x04 /* Parity error. */
+#define FRMERR 0x08 /* Framing/CRC error. */
+#define BRKDET 0x10 /* Break detected (null char + frame error). */
+#define XHRE 0x20 /* Transmit holding register empty. */
+#define XSRE 0x40 /* Transmit shift register empty. */
+
+
+/* MSR */
+#define DCTS 0x01 /* CTS has changed state. */
+#define DDSR 0x02 /* DSR has changed state. */
+#define DRI 0x04 /* RI has changed state. */
+#define DDCD 0x08 /* DCD has changed state. */
+#define CTS 0x10 /* State of CTS. */
+#define DSR 0x20 /* State of DSR. */
+#define RI 0x40 /* State of RI. */
+#define DCD 0x80 /* State of DCD. */
+
+
+#define DELTAS(x) ((x) & (DCTS | DDSR | DRI | DDCD))
+#define STATES(x) ((x) (CTS | DSR | RI | DCD))
+
+#endif /* sys/serial.h */