[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[commits] r6632 - in /fsf/trunk/libc: ./ elf/ libio/ login/ malloc/ misc/ nptl/ nptl/sysdeps/powerpc/ nptl/sysdeps/unix/sysv/linux/ ns...
- To: commits@xxxxxxxxxx
- Subject: [commits] r6632 - in /fsf/trunk/libc: ./ elf/ libio/ login/ malloc/ misc/ nptl/ nptl/sysdeps/powerpc/ nptl/sysdeps/unix/sysv/linux/ ns...
- From: eglibc@xxxxxxxxxx
- Date: Sun, 27 Jul 2008 07:07:46 -0000
Author: eglibc
Date: Sun Jul 27 00:07:45 2008
New Revision: 6632
Log:
Import glibc-mainline for 2008-07-27
Added:
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/bits/utmp.h
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/bits/utmpx.h
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutline.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutxent.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/login.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/login32.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmp-compat.h
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.h
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmpx-convert.h
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h
Modified:
fsf/trunk/libc/ChangeLog
fsf/trunk/libc/Makeconfig
fsf/trunk/libc/Versions.def
fsf/trunk/libc/elf/Makefile
fsf/trunk/libc/elf/dl-load.c
fsf/trunk/libc/elf/dl-object.c
fsf/trunk/libc/libio/fileops.c
fsf/trunk/libc/login/utmp_file.c
fsf/trunk/libc/malloc/mtrace.c
fsf/trunk/libc/misc/syslog.c
fsf/trunk/libc/nptl/ChangeLog
fsf/trunk/libc/nptl/sysdeps/powerpc/tcb-offsets.sym
fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/mq_notify.c
fsf/trunk/libc/nscd/Makefile
fsf/trunk/libc/scripts/gen-as-const.awk
fsf/trunk/libc/stdio-common/printf_fp.c
fsf/trunk/libc/sunrpc/clnt_udp.c
fsf/trunk/libc/sunrpc/key_call.c
fsf/trunk/libc/sysdeps/sparc/Makefile
fsf/trunk/libc/sysdeps/unix/sysv/linux/dl-origin.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/Makefile
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/Versions
Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Sun Jul 27 00:07:45 2008
@@ -1,3 +1,81 @@
+2008-07-26 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #6771]
+ * libio/fileops.c (_IO_new_file_attach): Preserve errno around
+ success call of _IO_SEEKOFF or calls which failed because the
+ descriptor is for a pipe.
+
+ * sunrpc/key_call.c (getkeyserv_handle): Use FD_CLOEXEC instead of
+ magic number.
+
+ * misc/syslog.c (openlog_internal): Use SOCK_CLOEXEC if possible.
+
+ * malloc/mtrace.c (mtrace): Use 'e' flag in fopen call. Drop
+ F_SETFD use if we know fopen set the flag.
+
+ * login/utmp_file.c (setutent_file): Minor optimization in case
+ O_CLOEXEC is available.
+
+2008-07-24 Tom "spot" Callaway <tcallawa@xxxxxxxxxx>
+
+ * Makeconfig: Define pie-ccflag and PIE-ccflag variables.
+ * elf/Makefile: Use pie-ccflag variable.
+ * nscd/Makefile: Likewise.
+ * sysdeps/sparc/Makefile: Set $(pie-ccflag) to -fPIE.
+
+2008-07-21 Andreas Krebbel <krebbel1@xxxxxxxxxx>
+
+ [BZ #6724]
+ * Versions.def: Add GLIBC_2.9 version tag for libutil.
+ * sysdeps/unix/sysv/linux/s390/bits/utmp.h: Copy of
+ gnu/bits/utmp.h. Check for __WORDSIZE_COMPAT32 removed.
+ * sysdeps/unix/sysv/linux/s390/bits/utmpx.h: Copy of
+ gnu/bits/utmpx.h. Check for __WORDSIZE_COMPAT32 removed.
+ * sysdeps/unix/sysv/linux/s390/s390-32/Makefile: Add new files
+ utmp32, utmpx32 and login32.
+ * sysdeps/unix/sysv/linux/s390/s390-32/Versions: Add 2.9
+ versions of struct utmp functions to libc and libutil.
+ * sysdeps/unix/sysv/linux/s390/s390-32/utmp-compat.h: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/getutent.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/getutid.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/getutline.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/getutxent.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/login.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/login32.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/utmp32.h: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/utmpx-convert.h: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h: New file.
+
+2008-07-26 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * scripts/gen-as-const.awk: Generate more widely usable code by
+ using 64-bit arithmetic.
+
+ * stdio-common/printf_fp.c (___printf_fp): Give wide outout code
+ the same treatment as narrow output code in last patch.
+
+ * sunrpc/clnt_udp.c (__libc_clntudp_bufcreate): Namespace cleanup.
+
+ [BZ #6763]
+ * elf/dl-load.c (local_strdup): Remove inline.
+ (_dl_map_object_from_fd): Don't allocate l_symbolic_searchlist.r_list.
+ * elf/dl-object.c (_dl_new_object): Allocate symbolic searchlist as
+ part of the object.
+
+ * sysdeps/unix/sysv/linux/dl-origin.c: Add const to avoid warning.
+
2008-07-25 Ulrich Drepper <drepper@xxxxxxxxxx>
* sysdeps/unix/sysv/linux/kernel-features.h: IA-64 and SPARC have
Modified: fsf/trunk/libc/Makeconfig
==============================================================================
--- fsf/trunk/libc/Makeconfig (original)
+++ fsf/trunk/libc/Makeconfig Sun Jul 27 00:07:45 2008
@@ -712,6 +712,10 @@
# This one should always stay like this unless there is a very good reason.
PIC-ccflag = -fPIC
endif
+# This can be changed by a sysdep makefile
+pie-ccflag = -fpie
+# This one should always stay like this unless there is a very good reason.
+PIE-ccflag = -fPIE
ifeq (yes,$(build-profile))
# Under --enable-profile, we will build a static library of profiled objects.
# The profiled object files are named foo.op.
Modified: fsf/trunk/libc/Versions.def
==============================================================================
--- fsf/trunk/libc/Versions.def (original)
+++ fsf/trunk/libc/Versions.def Sun Jul 27 00:07:45 2008
@@ -106,6 +106,7 @@
}
libutil {
GLIBC_2.0
+ GLIBC_2.9
}
ld {
GLIBC_2.0
Modified: fsf/trunk/libc/elf/Makefile
==============================================================================
--- fsf/trunk/libc/elf/Makefile (original)
+++ fsf/trunk/libc/elf/Makefile Sun Jul 27 00:07:45 2008
@@ -800,7 +800,7 @@
cmp $@ tst-array5-static.exp > /dev/null
ifeq (yesyes,$(have-fpie)$(build-shared))
-CFLAGS-tst-pie1.c += -fpie
+CFLAGS-tst-pie1.c += $(pie-ccflag)
$(objpfx)tst-pie1.out: $(objpfx)tst-pie1
$(elf-objpfx)$(rtld-installed-name) \
Modified: fsf/trunk/libc/elf/dl-load.c
==============================================================================
--- fsf/trunk/libc/elf/dl-load.c (original)
+++ fsf/trunk/libc/elf/dl-load.c Sun Jul 27 00:07:45 2008
@@ -163,7 +163,7 @@
/* Local version of `strdup' function. */
-static inline char *
+static char *
local_strdup (const char *s)
{
size_t len = strlen (s) + 1;
@@ -1470,15 +1470,6 @@
{
/* Create an appropriate searchlist. It contains only this map.
This is the definition of DT_SYMBOLIC in SysVr4. */
- l->l_symbolic_searchlist.r_list =
- (struct link_map **) malloc (sizeof (struct link_map *));
-
- if (l->l_symbolic_searchlist.r_list == NULL)
- {
- errstring = N_("cannot create searchlist");
- goto call_lose_errno;
- }
-
l->l_symbolic_searchlist.r_list[0] = l;
l->l_symbolic_searchlist.r_nlist = 1;
Modified: fsf/trunk/libc/elf/dl-object.c
==============================================================================
--- fsf/trunk/libc/elf/dl-object.c (original)
+++ fsf/trunk/libc/elf/dl-object.c Sun Jul 27 00:07:45 2008
@@ -1,5 +1,5 @@
/* Storage management for the chain of loaded shared objects.
- Copyright (C) 1995-2002, 2004, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1995-2002,2004,2006,2007,2008 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
@@ -50,13 +50,17 @@
#endif
new = (struct link_map *) calloc (sizeof (*new) + audit_space
+ + sizeof (struct link_map *)
+ sizeof (*newname) + libname_len, 1);
if (new == NULL)
return NULL;
new->l_real = new;
- new->l_libname = newname = (struct libname_list *) ((char *) (new + 1)
- + audit_space);
+ new->l_symbolic_searchlist.r_list = (struct link_map **) ((char *) (new + 1)
+ + audit_space);
+
+ new->l_libname = newname
+ = (struct libname_list *) (new->l_symbolic_searchlist.r_list + 1);
newname->name = (char *) memcpy (newname + 1, libname, libname_len);
/* newname->next = NULL; We use calloc therefore not necessary. */
newname->dont_free = 1;
Modified: fsf/trunk/libc/libio/fileops.c
==============================================================================
--- fsf/trunk/libc/libio/fileops.c (original)
+++ fsf/trunk/libc/libio/fileops.c Sun Jul 27 00:07:45 2008
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995, 1997-2005, 2006, 2007
+/* Copyright (C) 1993, 1995, 1997-2005, 2006, 2007, 2008
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Per Bothner <bothner@xxxxxxxxxx>.
@@ -428,9 +428,11 @@
/* Get the current position of the file. */
/* We have to do that since that may be junk. */
fp->_offset = _IO_pos_BAD;
+ int save_errno = errno;
if (_IO_SEEKOFF (fp, (_IO_off64_t)0, _IO_seek_cur, _IOS_INPUT|_IOS_OUTPUT)
== _IO_pos_BAD && errno != ESPIPE)
return NULL;
+ __set_errno (save_errno);
return fp;
}
INTDEF2(_IO_new_file_attach, _IO_file_attach)
Modified: fsf/trunk/libc/login/utmp_file.c
==============================================================================
--- fsf/trunk/libc/login/utmp_file.c (original)
+++ fsf/trunk/libc/login/utmp_file.c Sun Jul 27 00:07:45 2008
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2002, 2003, 2004, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2004, 2007, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>
and Paul Janzen <pcj@xxxxxxxxxxxx>, 1996.
@@ -167,10 +167,11 @@
# ifdef O_CLOEXEC
if (__have_o_cloexec == 0)
__have_o_cloexec = (result & FD_CLOEXEC) ? 1 : -1;
+
+ if (__have_o_cloexec < 0)
# endif
-
- result = fcntl_not_cancel (file_fd, F_SETFD,
- result | FD_CLOEXEC);
+ result = fcntl_not_cancel (file_fd, F_SETFD,
+ result | FD_CLOEXEC);
}
if (result == -1)
Modified: fsf/trunk/libc/malloc/mtrace.c
==============================================================================
--- fsf/trunk/libc/malloc/mtrace.c (original)
+++ fsf/trunk/libc/malloc/mtrace.c Sun Jul 27 00:07:45 2008
@@ -1,5 +1,5 @@
/* More debugging hooks for `malloc'.
- Copyright (C) 1991-1994,1996-2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1991-1994,1996-2004, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written April 2, 1991 by John Gilmore of Cygnus Support.
Based on mcheck.c by Mike Haertel.
@@ -34,13 +34,13 @@
#include <stdio-common/_itoa.h>
-#ifdef _LIBC
-# include <libc-internal.h>
-
-# include <libio/iolibio.h>
-# define setvbuf(s, b, f, l) INTUSE(_IO_setvbuf) (s, b, f, l)
-# define fwrite(buf, size, count, fp) _IO_fwrite (buf, size, count, fp)
-#endif
+#include <libc-internal.h>
+
+#include <libio/iolibio.h>
+#define setvbuf(s, b, f, l) INTUSE(_IO_setvbuf) (s, b, f, l)
+#define fwrite(buf, size, count, fp) _IO_fwrite (buf, size, count, fp)
+
+#include <kernel-features.h>
#ifndef attribute_hidden
# define attribute_hidden
@@ -315,9 +315,10 @@
if (mtb == NULL)
return;
- mallstream = fopen (mallfile != NULL ? mallfile : "/dev/null", "wc");
+ mallstream = fopen (mallfile != NULL ? mallfile : "/dev/null", "wce");
if (mallstream != NULL)
{
+#ifndef __ASSUME_O_CLOEXEC
/* Make sure we close the file descriptor on exec. */
int flags = __fcntl (fileno (mallstream), F_GETFD, 0);
if (flags >= 0)
@@ -325,6 +326,7 @@
flags |= FD_CLOEXEC;
__fcntl (fileno (mallstream), F_SETFD, flags);
}
+#endif
/* Be sure it doesn't malloc its buffer! */
malloc_trace_buffer = mtb;
setvbuf (mallstream, malloc_trace_buffer, _IOFBF, TRACE_BUFFER_SIZE);
Modified: fsf/trunk/libc/misc/syslog.c
==============================================================================
--- fsf/trunk/libc/misc/syslog.c (original)
+++ fsf/trunk/libc/misc/syslog.c Sun Jul 27 00:07:45 2008
@@ -348,10 +348,35 @@
(void)strncpy(SyslogAddr.sun_path, _PATH_LOG,
sizeof(SyslogAddr.sun_path));
if (LogStat & LOG_NDELAY) {
- if ((LogFile = __socket(AF_UNIX, LogType, 0))
- == -1)
+#ifdef SOCK_CLOEXEC
+# ifndef __ASSUME_SOCK_CLOEXEC
+ if (__have_sock_cloexec >= 0) {
+# endif
+ LogFile = __socket(AF_UNIX,
+ LogType
+ | SOCK_CLOEXEC, 0);
+# ifndef __ASSUME_SOCK_CLOEXEC
+ if (__have_sock_cloexec == 0)
+ __have_sock_cloexec
+ = (LogFile != -1
+ || errno != EINVAL);
+#endif
+ }
+#endif
+#ifndef __ASSUME_SOCK_CLOEXEC
+# ifdef SOCK_CLOEXEC
+ if (__have_sock_cloexec < 0)
+# endif
+ LogFile = __socket(AF_UNIX, LogType, 0);
+#endif
+ if (LogFile == -1)
return;
- (void)__fcntl(LogFile, F_SETFD, 1);
+#ifndef __ASSUME_SOCK_CLOEXEC
+# ifdef SOCK_CLOEXEC
+ if (__have_sock_cloexec < 0)
+# endif
+ __fcntl(LogFile, F_SETFD, FD_CLOEXEC);
+#endif
}
}
if (LogFile != -1 && !connected)
Modified: fsf/trunk/libc/nptl/ChangeLog
==============================================================================
--- fsf/trunk/libc/nptl/ChangeLog (original)
+++ fsf/trunk/libc/nptl/ChangeLog Sun Jul 27 00:07:45 2008
@@ -1,3 +1,9 @@
+2008-04-28 Hiroki Kaminaga <kaminaga@xxxxxxxxxxxxx>
+
+ [BZ #6740]
+ * sysdeps/powerpc/tcb-offsets.sym (PRIVATE_FUTEX_OFFSET): Guard symbol
+ definition with #ifndef __ASSUME_PRIVATE_FUTEX.
+
2008-07-25 Ulrich Drepper <drepper@xxxxxxxxxx>
* sysdeps/unix/sysv/linux/mq_notify.c (init_mq_netlink): Use
Modified: fsf/trunk/libc/nptl/sysdeps/powerpc/tcb-offsets.sym
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/powerpc/tcb-offsets.sym (original)
+++ fsf/trunk/libc/nptl/sysdeps/powerpc/tcb-offsets.sym Sun Jul 27 00:07:45 2008
@@ -15,4 +15,6 @@
PID thread_offsetof (pid)
TID thread_offsetof (tid)
POINTER_GUARD (offsetof (tcbhead_t, pointer_guard) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
+#ifndef __ASSUME_PRIVATE_FUTEX
PRIVATE_FUTEX_OFFSET thread_offsetof (header.private_futex)
+#endif
Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/mq_notify.c
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/mq_notify.c (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/mq_notify.c Sun Jul 27 00:07:45 2008
@@ -169,7 +169,7 @@
if (netlink_socket == -1)
{
/* Just a normal netlink socket, not bound. */
- if (have_sock_cloexec)
+ if (have_sock_cloexec >= 0)
{
netlink_socket = socket (AF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, 0);
#if defined SOCK_CLOEXEC && !defined __ASSUME_SOCK_CLOEXEC
Modified: fsf/trunk/libc/nscd/Makefile
==============================================================================
--- fsf/trunk/libc/nscd/Makefile (original)
+++ fsf/trunk/libc/nscd/Makefile Sun Jul 27 00:07:45 2008
@@ -90,7 +90,7 @@
nscd-cflags = -DIS_IN_nscd=1 -D_FORTIFY_SOURCE=2
ifeq (yesyes,$(have-fpie)$(build-shared))
-nscd-cflags += -fpie
+nscd-cflags += $(pie-ccflag)
endif
ifeq (yes,$(have-ssp))
nscd-cflags += -fstack-protector
Modified: fsf/trunk/libc/scripts/gen-as-const.awk
==============================================================================
--- fsf/trunk/libc/scripts/gen-as-const.awk (original)
+++ fsf/trunk/libc/scripts/gen-as-const.awk Sun Jul 27 00:07:45 2008
@@ -14,12 +14,14 @@
NF >= 1 && !started {
if (test) {
+ print "\n#include <inttypes.h>";
print "\n#include <stdio.h>";
+ print "\n#define U(n) UINT64_C (n)";
print "\nstatic int do_test (void)\n{\n int bad = 0, good = 0;\n";
print "#define TEST(name, source, expr) \\\n" \
- " if (asconst_##name != (expr)) { ++bad;" \
- " fprintf (stderr, \"%s: %s is %ld but %s is %ld\\n\"," \
- " source, #name, (long int) asconst_##name, #expr, (long int) (expr));" \
+ " if (U (asconst_##name) != (uint64_t) (expr)) { ++bad;" \
+ " fprintf (stderr, \"%s: %s is %\" PRId64 \" but %s is %\"PRId64 \"\\n\"," \
+ " source, #name, U (asconst_##name), #expr, (uint64_t) (expr));" \
" } else ++good;\n";
}
else
Modified: fsf/trunk/libc/stdio-common/printf_fp.c
==============================================================================
--- fsf/trunk/libc/stdio-common/printf_fp.c (original)
+++ fsf/trunk/libc/stdio-common/printf_fp.c Sun Jul 27 00:07:45 2008
@@ -1204,6 +1204,10 @@
#ifdef COMPILE_WPRINTF
wstartp = _i18n_number_rewrite (wstartp, wcp,
wbuffer + wbuffer_to_alloc);
+ wcp = wbuffer + wbuffer_to_alloc;
+ assert ((uintptr_t) wbuffer <= (uintptr_t) wstartp);
+ assert ((uintptr_t) wstartp
+ < (uintptr_t) wbuffer + wbuffer_to_alloc);
#else
tmpptr = _i18n_number_rewrite (tmpptr, cp, buffer_end);
cp = buffer_end;
Modified: fsf/trunk/libc/sunrpc/clnt_udp.c
==============================================================================
--- fsf/trunk/libc/sunrpc/clnt_udp.c (original)
+++ fsf/trunk/libc/sunrpc/clnt_udp.c Sun Jul 27 00:07:45 2008
@@ -202,7 +202,7 @@
*sockp = __socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP);
# ifdef SOCK_CLOEXEC
if (flags & SOCK_CLOEXEC)
- fcntl (*sockp, F_SETFD, FD_CLOEXEC);
+ __fcntl (*sockp, F_SETFD, FD_CLOEXEC);
# endif
}
#endif
Modified: fsf/trunk/libc/sunrpc/key_call.c
==============================================================================
--- fsf/trunk/libc/sunrpc/key_call.c (original)
+++ fsf/trunk/libc/sunrpc/key_call.c Sun Jul 27 00:07:45 2008
@@ -462,7 +462,7 @@
clnt_control (kcp->client, CLSET_RETRY_TIMEOUT,
(char *)&wait_time);
if (clnt_control (kcp->client, CLGET_FD, (char *)&fd))
- __fcntl (fd, F_SETFD, 1); /* make it "close on exec" */
+ __fcntl (fd, F_SETFD, FD_CLOEXEC); /* make it "close on exec" */
return kcp->client;
}
Modified: fsf/trunk/libc/sysdeps/sparc/Makefile
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/Makefile (original)
+++ fsf/trunk/libc/sysdeps/sparc/Makefile Sun Jul 27 00:07:45 2008
@@ -1,5 +1,7 @@
# The Sparc `long double' is a distinct type we support.
long-double-fcts = yes
+
+pie-ccflag = -fPIE
ifeq ($(subdir),gmon)
sysdep_routines += sparc-mcount
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/dl-origin.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/dl-origin.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/dl-origin.c Sun Jul 27 00:07:45 2008
@@ -38,7 +38,7 @@
#ifndef __ASSUME_AT_EXECFN
char linkval[PATH_MAX];
#endif
- char *str;
+ const char *str;
char *result = (char *) -1l;
int len;
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/bits/utmp.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/bits/utmp.h (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/bits/utmp.h Sun Jul 27 00:07:45 2008
@@ -1,0 +1,125 @@
+/* The `struct utmp' type, describing entries in the utmp file. GNU version.
+ Copyright (C) 1993, 1996, 1997, 1998, 1999, 2002, 2008
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _UTMP_H
+# error "Never include <bits/utmp.h> directly; use <utmp.h> instead."
+#endif
+
+#include <paths.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <bits/wordsize.h>
+
+
+#define UT_LINESIZE 32
+#define UT_NAMESIZE 32
+#define UT_HOSTSIZE 256
+
+
+/* The structure describing an entry in the database of
+ previous logins. */
+struct lastlog
+ {
+#if __WORDSIZE == 32
+ int64_t ll_time;
+#else
+ __time_t ll_time;
+#endif
+ char ll_line[UT_LINESIZE];
+ char ll_host[UT_HOSTSIZE];
+ };
+
+
+/* The structure describing the status of a terminated process. This
+ type is used in `struct utmp' below. */
+struct exit_status
+ {
+ short int e_termination; /* Process termination status. */
+ short int e_exit; /* Process exit status. */
+ };
+
+
+/* The structure describing an entry in the user accounting database. */
+struct utmp
+{
+ short int ut_type; /* Type of login. */
+ pid_t ut_pid; /* Process ID of login process. */
+ char ut_line[UT_LINESIZE]; /* Devicename. */
+ char ut_id[4]; /* Inittab ID. */
+ char ut_user[UT_NAMESIZE]; /* Username. */
+ char ut_host[UT_HOSTSIZE]; /* Hostname for remote login. */
+ struct exit_status ut_exit; /* Exit status of a process marked
+ as DEAD_PROCESS. */
+/* The ut_session and ut_tv fields must be the same size when compiled
+ 32- and 64-bit. This allows data files and shared memory to be
+ shared between 32- and 64-bit applications. */
+#if __WORDSIZE == 32
+ int64_t ut_session; /* Session ID, used for windowing. */
+ struct
+ {
+ int64_t tv_sec; /* Seconds. */
+ int64_t tv_usec; /* Microseconds. */
+ } ut_tv; /* Time entry was made. */
+#else
+ long int ut_session; /* Session ID, used for windowing. */
+ struct timeval ut_tv; /* Time entry was made. */
+#endif
+
+ int32_t ut_addr_v6[4]; /* Internet address of remote host. */
+ char __unused[20]; /* Reserved for future use. */
+};
+
+/* Backwards compatibility hacks. */
+#define ut_name ut_user
+#ifndef _NO_UT_TIME
+/* We have a problem here: `ut_time' is also used otherwise. Define
+ _NO_UT_TIME if the compiler complains. */
+# define ut_time ut_tv.tv_sec
+#endif
+#define ut_xtime ut_tv.tv_sec
+#define ut_addr ut_addr_v6[0]
+
+
+/* Values for the `ut_type' field of a `struct utmp'. */
+#define EMPTY 0 /* No valid user accounting information. */
+
+#define RUN_LVL 1 /* The system's runlevel. */
+#define BOOT_TIME 2 /* Time of system boot. */
+#define NEW_TIME 3 /* Time after system clock changed. */
+#define OLD_TIME 4 /* Time when system clock changed. */
+
+#define INIT_PROCESS 5 /* Process spawned by the init process. */
+#define LOGIN_PROCESS 6 /* Session leader of a logged in user. */
+#define USER_PROCESS 7 /* Normal process. */
+#define DEAD_PROCESS 8 /* Terminated process. */
+
+#define ACCOUNTING 9
+
+/* Old Linux name for the EMPTY type. */
+#define UT_UNKNOWN EMPTY
+
+
+/* Tell the user that we have a modern system with UT_HOST, UT_PID,
+ UT_TYPE, UT_ID and UT_TV fields. */
+#define _HAVE_UT_TYPE 1
+#define _HAVE_UT_PID 1
+#define _HAVE_UT_ID 1
+#define _HAVE_UT_TV 1
+#define _HAVE_UT_HOST 1
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/bits/utmpx.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/bits/utmpx.h (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/bits/utmpx.h Sun Jul 27 00:07:45 2008
@@ -1,0 +1,104 @@
+/* Structures and definitions for the user accounting database. GNU version.
+ Copyright (C) 1997, 1998, 2000, 2001, 2002, 2008
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _UTMPX_H
+# error "Never include <bits/utmpx.h> directly; use <utmpx.h> instead."
+#endif
+
+#include <bits/types.h>
+#include <sys/time.h>
+#include <bits/wordsize.h>
+
+
+#ifdef __USE_GNU
+# include <paths.h>
+# define _PATH_UTMPX _PATH_UTMP
+# define _PATH_WTMPX _PATH_WTMP
+#endif
+
+
+#define __UT_LINESIZE 32
+#define __UT_NAMESIZE 32
+#define __UT_HOSTSIZE 256
+
+
+/* The structure describing the status of a terminated process. This
+ type is used in `struct utmpx' below. */
+struct __exit_status
+ {
+#ifdef __USE_GNU
+ short int e_termination; /* Process termination status. */
+ short int e_exit; /* Process exit status. */
+#else
+ short int __e_termination; /* Process termination status. */
+ short int __e_exit; /* Process exit status. */
+#endif
+ };
+
+
+/* The structure describing an entry in the user accounting database. */
+struct utmpx
+{
+ short int ut_type; /* Type of login. */
+ __pid_t ut_pid; /* Process ID of login process. */
+ char ut_line[__UT_LINESIZE]; /* Devicename. */
+ char ut_id[4]; /* Inittab ID. */
+ char ut_user[__UT_NAMESIZE]; /* Username. */
+ char ut_host[__UT_HOSTSIZE]; /* Hostname for remote login. */
+ struct __exit_status ut_exit; /* Exit status of a process marked
+ as DEAD_PROCESS. */
+
+/* The fields ut_session and ut_tv must be the same size when compiled
+ 32- and 64-bit. This allows files and shared memory to be shared
+ between 32- and 64-bit applications. */
+#if __WORDSIZE == 32
+ __int64_t ut_session; /* Session ID, used for windowing. */
+ struct
+ {
+ __int64_t tv_sec; /* Seconds. */
+ __int64_t tv_usec; /* Microseconds. */
+ } ut_tv; /* Time entry was made. */
+#else
+ long int ut_session; /* Session ID, used for windowing. */
+ struct timeval ut_tv; /* Time entry was made. */
+#endif
+ __int32_t ut_addr_v6[4]; /* Internet address of remote host. */
+ char __unused[20]; /* Reserved for future use. */
+};
+
+
+/* Values for the `ut_type' field of a `struct utmpx'. */
+#define EMPTY 0 /* No valid user accounting information. */
+
+#ifdef __USE_GNU
+# define RUN_LVL 1 /* The system's runlevel. */
+#endif
+#define BOOT_TIME 2 /* Time of system boot. */
+#define NEW_TIME 3 /* Time after system clock changed. */
+#define OLD_TIME 4 /* Time when system clock changed. */
+
+#define INIT_PROCESS 5 /* Process spawned by the init process. */
+#define LOGIN_PROCESS 6 /* Session leader of a logged in user. */
+#define USER_PROCESS 7 /* Normal process. */
+#define DEAD_PROCESS 8 /* Terminated process. */
+
+#ifdef __USE_GNU
+# define ACCOUNTING 9 /* System accounting. */
+#endif
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/Makefile
==============================================================================
Binary files - no diff available.
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/Versions
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/Versions (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/Versions Sun Jul 27 00:07:45 2008
@@ -26,4 +26,27 @@
GLIBC_2.3.3 {
posix_fadvise64; posix_fallocate64;
}
+ GLIBC_2.9 {
+ getutent;
+ getutid;
+ getutline;
+ pututline;
+ updwtmp;
+ getutent_r;
+ getutid_r;
+ getutline_r;
+ getutxent;
+ getutxid;
+ getutxline;
+ pututxline;
+ updwtmpx;
+ getutmp;
+ getutmpx;
+ }
}
+
+libutil {
+ GLIBC_2.9 {
+ login;
+ }
+}
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c Sun Jul 27 00:07:45 2008
@@ -1,0 +1,29 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <stdlib.h>
+#include <utmp.h>
+
+#include "utmp-compat.h"
+
+#undef weak_alias
+#define weak_alias(n,a)
+#include "login/getutent.c"
+
+default_symbol_version (__getutent, getutent, UTMP_COMPAT_BASE);
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c Sun Jul 27 00:07:45 2008
@@ -1,0 +1,35 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <bits/libc-lock.h>
+#include <stdlib.h>
+#include <utmp.h>
+
+#include "utmp-compat.h"
+#include "utmp-private.h"
+
+weak_alias (__setutent, setutent)
+weak_alias (__endutent, endutent)
+
+#undef weak_alias
+#define weak_alias(n,a)
+#include "login/getutent_r.c"
+
+default_symbol_version (__getutent_r, getutent_r, UTMP_COMPAT_BASE);
+default_symbol_version (__pututline, pututline, UTMP_COMPAT_BASE);
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c Sun Jul 27 00:07:45 2008
@@ -1,0 +1,29 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <stdlib.h>
+#include <utmp.h>
+
+#include "utmp-compat.h"
+
+#undef weak_alias
+#define weak_alias(n,a)
+#include "login/getutid.c"
+
+default_symbol_version (__getutid, getutid, UTMP_COMPAT_BASE);
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c Sun Jul 27 00:07:45 2008
@@ -1,0 +1,32 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <bits/libc-lock.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <utmp.h>
+
+#include "utmp-compat.h"
+#include "utmp-private.h"
+
+#undef weak_alias
+#define weak_alias(n,a)
+#include "login/getutid_r.c"
+
+default_symbol_version (__getutid_r, getutid_r, UTMP_COMPAT_BASE);
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutline.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutline.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutline.c Sun Jul 27 00:07:45 2008
@@ -1,0 +1,29 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <stdlib.h>
+#include <utmp.h>
+
+#include "utmp-compat.h"
+
+#undef weak_alias
+#define weak_alias(n,a)
+#include "login/getutline.c"
+
+default_symbol_version (__getutline, getutline, UTMP_COMPAT_BASE);
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c Sun Jul 27 00:07:45 2008
@@ -1,0 +1,31 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <bits/libc-lock.h>
+#include <utmp.h>
+
+#include "utmp-compat.h"
+#include "utmp-private.h"
+
+#undef weak_alias
+#define weak_alias(n,a)
+#include "login/getutline_r.c"
+
+default_symbol_version (__getutline_r, getutline_r, UTMP_COMPAT_BASE);;
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c Sun Jul 27 00:07:45 2008
@@ -1,0 +1,38 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <string.h>
+#include <utmp.h>
+/* This is an ugly hack but we must not see the getutmpx declaration. */
+#define getutmpx XXXgetutmpx
+#include <utmpx.h>
+#undef getutmpx
+
+#include "utmp-compat.h"
+
+#undef weak_alias
+#define weak_alias(n,a)
+#define getutmp __getutmp
+#define getutmpx __getutmpx
+#include "sysdeps/gnu/getutmp.c"
+#undef getutmp
+#undef getutmpx
+
+default_symbol_version (__getutmp, getutmp, UTMP_COMPAT_BASE);
+default_symbol_version (__getutmpx, getutmpx, UTMP_COMPAT_BASE);
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutxent.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutxent.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutxent.c Sun Jul 27 00:07:45 2008
@@ -1,0 +1,31 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <utmp.h>
+#include <utmpx.h>
+
+#include "utmp-compat.h"
+
+#undef weak_alias
+#define weak_alias(n,a)
+#define getutxent __getutxent
+#include "login/getutxent.c"
+#undef getutxent
+
+default_symbol_version (__getutxent, getutxent, UTMP_COMPAT_BASE);
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c Sun Jul 27 00:07:45 2008
@@ -1,0 +1,31 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <utmp.h>
+#include <utmpx.h>
+
+#include "utmp-compat.h"
+
+#undef weak_alias
+#define weak_alias(n,a)
+#define getutxid __getutxid
+#include "login/getutxid.c"
+#undef getutxid
+
+default_symbol_version (__getutxid, getutxid, UTMP_COMPAT_BASE);
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c Sun Jul 27 00:07:45 2008
@@ -1,0 +1,31 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <utmp.h>
+#include <utmpx.h>
+
+#include "utmp-compat.h"
+
+#undef weak_alias
+#define weak_alias(n,a)
+#define getutxline __getutxline
+#include "login/getutxline.c"
+#undef getutxline
+
+default_symbol_version (__getutxline, getutxline, UTMP_COMPAT_BASE);
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/login.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/login.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/login.c Sun Jul 27 00:07:45 2008
@@ -1,0 +1,36 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <utmp.h>
+
+#include "utmp-compat.h"
+
+#undef weak_alias
+#define weak_alias(n,a)
+#define login __login
+#include "login/login.c"
+#undef login
+
+default_symbol_version (__login, login, UTMP_COMPAT_BASE);
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/login32.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/login32.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/login32.c Sun Jul 27 00:07:45 2008
@@ -1,0 +1,37 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sys/types.h>
+#include <utmp.h>
+#include <libc-symbols.h>
+
+#include "utmp32.h"
+#include "utmp-convert.h"
+
+/* Write the given entry into utmp and wtmp. */
+void
+login32 (const struct utmp32 *entry)
+{
+ struct utmp in64;
+
+ utmp_convert32to64 (entry, &in64);
+ login (&in64);
+}
+
+symbol_version (login32, login, GLIBC_2.0);
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c Sun Jul 27 00:07:45 2008
@@ -1,0 +1,31 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <utmp.h>
+#include <utmpx.h>
+
+#include "utmp-compat.h"
+
+#undef weak_alias
+#define weak_alias(n,a)
+#define pututxline __pututxline
+#include "login/pututxline.c"
+#undef pututxline
+
+default_symbol_version (__pututxline, pututxline, UTMP_COMPAT_BASE);
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c Sun Jul 27 00:07:45 2008
@@ -1,0 +1,29 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <utmp.h>
+
+#include "utmp-compat.h"
+#include "utmp-private.h"
+
+#undef weak_alias
+#define weak_alias(n,a)
+#include "sysdeps/gnu/updwtmp.c"
+
+default_symbol_version (__updwtmp, updwtmp, UTMP_COMPAT_BASE);
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c Sun Jul 27 00:07:45 2008
@@ -1,0 +1,31 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <utmp.h>
+#include <utmpx.h>
+
+#include "utmp-compat.h"
+
+#undef weak_alias
+#define weak_alias(n,a)
+#define updwtmpx __updwtmpx
+#include "login/updwtmpx.c"
+#undef updwtmpx
+
+default_symbol_version (__updwtmpx, updwtmpx, UTMP_COMPAT_BASE);
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmp-compat.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmp-compat.h (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmp-compat.h Sun Jul 27 00:07:45 2008
@@ -1,0 +1,22 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/* This macro defines the glibc version tag at which the 64 bit struct
+ utmp functions have been added to the 32 bit glibc. */
+#define UTMP_COMPAT_BASE GLIBC_2.9
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h Sun Jul 27 00:07:45 2008
@@ -1,0 +1,17 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c Sun Jul 27 00:07:45 2008
@@ -1,0 +1,185 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sys/types.h>
+#include <utmp.h>
+#include <errno.h>
+#include <libc-symbols.h>
+
+#include "utmp32.h"
+#include "utmp-convert.h"
+
+/* Allocate a static buffer to be returned to the caller. As well as
+ with the existing version of these functions the caller has to be
+ aware that the contents of this buffer will change with subsequent
+ calls. */
+#define ALLOCATE_UTMP32_OUT(OUT) \
+ static struct utmp32 *OUT = NULL; \
+ \
+ if (OUT == NULL) \
+ { \
+ OUT = malloc (sizeof (struct utmp32)); \
+ if (OUT == NULL) \
+ return NULL; \
+ }
+
+/* Perform a lookup for a utmp entry matching FIELD using function
+ FUNC. FIELD is converted to a 64 bit utmp and the result is
+ converted back to 32 bit utmp. */
+#define ACCESS_UTMP_ENTRY(FUNC, FIELD) \
+ struct utmp in64; \
+ struct utmp *out64; \
+ ALLOCATE_UTMP32_OUT (out32); \
+ \
+ utmp_convert32to64 (FIELD, &in64); \
+ out64 = FUNC (&in64); \
+ \
+ if (out64 == NULL) \
+ return NULL; \
+ \
+ utmp_convert64to32 (out64, out32); \
+ \
+ return out32;
+
+/* Search forward from the current point in the utmp file until the
+ next entry with a ut_type matching ID->ut_type. */
+struct utmp32 *
+getutid32 (const struct utmp32 *id)
+{
+ ACCESS_UTMP_ENTRY (getutid, id)
+}
+symbol_version (getutid32, getutid, GLIBC_2.0);
+
+/* Search forward from the current point in the utmp file until the
+ next entry with a ut_line matching LINE->ut_line. */
+struct utmp32 *
+getutline32 (const struct utmp32 *line)
+{
+ ACCESS_UTMP_ENTRY (getutline, line)
+}
+symbol_version (getutline32, getutline, GLIBC_2.0);
+
+/* Write out entry pointed to by UTMP_PTR into the utmp file. */
+struct utmp32 *
+pututline32 (const struct utmp32 *utmp_ptr)
+{
+ ACCESS_UTMP_ENTRY (pututline, utmp_ptr)
+}
+symbol_version (pututline32, pututline, GLIBC_2.0);
+
+/* Read next entry from a utmp-like file. */
+struct utmp32 *
+getutent32 (void)
+{
+ struct utmp *out64;
+ ALLOCATE_UTMP32_OUT (out32);
+
+ out64 = getutent ();
+ if (!out64)
+ return NULL;
+
+ utmp_convert64to32 (out64, out32);
+ return out32;
+}
+symbol_version (getutent32, getutent, GLIBC_2.0);
+
+/* Reentrant versions of the file for handling utmp files. */
+
+int
+getutent32_r (struct utmp32 *buffer, struct utmp32 **result)
+{
+ struct utmp out64;
+ struct utmp *out64p;
+ int ret;
+
+ ret = getutent_r (&out64, &out64p);
+ if (ret == -1)
+ {
+ *result = NULL;
+ return -1;
+ }
+
+ utmp_convert64to32 (out64p, buffer);
+ *result = buffer;
+
+ return 0;
+}
+symbol_version (getutent32_r, getutent_r, GLIBC_2.0);
+
+int
+getutid32_r (const struct utmp32 *id, struct utmp32 *buffer,
+ struct utmp32 **result)
+{
+ struct utmp in64;
+ struct utmp out64;
+ struct utmp *out64p;
+ int ret;
+
+ utmp_convert32to64 (id, &in64);
+
+ ret = getutid_r (&in64, &out64, &out64p);
+ if (ret == -1)
+ {
+ *result = NULL;
+ return -1;
+ }
+
+ utmp_convert64to32 (out64p, buffer);
+ *result = buffer;
+
+ return 0;
+}
+symbol_version (getutid32_r, getutid_r, GLIBC_2.0);
+
+int
+getutline32_r (const struct utmp32 *line,
+ struct utmp32 *buffer, struct utmp32 **result)
+{
+ struct utmp in64;
+ struct utmp out64;
+ struct utmp *out64p;
+ int ret;
+
+ utmp_convert32to64 (line, &in64);
+
+ ret = getutline_r (&in64, &out64, &out64p);
+ if (ret == -1)
+ {
+ *result = NULL;
+ return -1;
+ }
+
+ utmp_convert64to32 (out64p, buffer);
+ *result = buffer;
+
+ return 0;
+
+}
+symbol_version (getutline32_r, getutline_r, GLIBC_2.0);
+
+/* Append entry UTMP to the wtmp-like file WTMP_FILE. */
+void
+updwtmp32 (const char *wtmp_file, const struct utmp32 *utmp)
+{
+ struct utmp in32;
+
+ utmp_convert32to64 (utmp, &in32);
+ updwtmp (wtmp_file, &in32);
+}
+symbol_version (updwtmp32, updwtmp, GLIBC_2.0);
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.h (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.h Sun Jul 27 00:07:45 2008
@@ -1,0 +1,53 @@
+/* The `struct utmp' type, describing entries in the utmp file. GNU version.
+ Copyright (C) 1993, 1996, 1997, 1998, 1999, 2002, 2008
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _UTMP32_H
+#define _UTMP32_H 1
+
+#include <paths.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <bits/wordsize.h>
+#include <utmp.h>
+
+/* The structure describing an entry in the user accounting database. */
+struct utmp32
+{
+ short int ut_type; /* Type of login. */
+ pid_t ut_pid; /* Process ID of login process. */
+ char ut_line[UT_LINESIZE]; /* Devicename. */
+ char ut_id[4]; /* Inittab ID. */
+ char ut_user[UT_NAMESIZE]; /* Username. */
+ char ut_host[UT_HOSTSIZE]; /* Hostname for remote login. */
+ struct exit_status ut_exit; /* Exit status of a process marked
+ as DEAD_PROCESS. */
+ int32_t ut_session; /* Session ID, used for windowing. */
+ struct
+ {
+ int32_t tv_sec; /* Seconds. */
+ int32_t tv_usec; /* Microseconds. */
+ } ut_tv; /* Time entry was made. */
+
+ int32_t ut_addr_v6[4]; /* Internet address of remote host. */
+ char __unused[20]; /* Reserved for future use. */
+};
+
+
+#endif /* utmp32.h */
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmpx-convert.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmpx-convert.h (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmpx-convert.h Sun Jul 27 00:07:45 2008
@@ -1,0 +1,86 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+/* This file provides functions converting between the 32 and 64 bit
+ struct utmp variants. */
+
+#ifndef _UTMPX_CONVERT_H
+#define _UTMPX_CONVERT_H 1
+
+#include <string.h>
+#include "utmpx32.h"
+
+/* Convert the 64 bit struct utmpx value in FROM to the 32 bit version
+ returned in TO. */
+static inline void
+utmpx_convert64to32 (const struct utmpx *from, struct utmpx32 *to)
+{
+#if _HAVE_UT_TYPE - 0
+ to->ut_type = from->ut_type;
+#endif
+#if _HAVE_UT_PID - 0
+ to->ut_pid = from->ut_pid;
+#endif
+ memcpy (to->ut_line, from->ut_line, __UT_LINESIZE);
+ memcpy (to->ut_user, from->ut_user, __UT_NAMESIZE);
+#if _HAVE_UT_ID - 0
+ memcpy (to->ut_id, from->ut_id, 4);
+#endif
+#if _HAVE_UT_HOST - 0
+ memcpy (to->ut_host, from->ut_host, __UT_HOSTSIZE);
+#endif
+ to->ut_exit = from->ut_exit;
+ to->ut_session = (int32_t) from->ut_session;
+#if _HAVE_UT_TV - 0
+ to->ut_tv.tv_sec = (int32_t) from->ut_tv.tv_sec;
+ to->ut_tv.tv_usec = (int32_t) from->ut_tv.tv_usec;
+#endif
+ memcpy (to->ut_addr_v6, from->ut_addr_v6, 4 * 4);
+}
+
+/* Convert the 32 bit struct utmpx value in FROM to the 64 bit version
+ returned in TO. */
+static inline void
+utmpx_convert32to64 (const struct utmpx32 *from, struct utmpx *to)
+{
+#if _HAVE_UT_TYPE - 0
+ to->ut_type = from->ut_type;
+#endif
+#if _HAVE_UT_PID - 0
+ to->ut_pid = from->ut_pid;
+#endif
+ memcpy (to->ut_line, from->ut_line, __UT_LINESIZE);
+ memcpy (to->ut_user, from->ut_user, __UT_NAMESIZE);
+#if _HAVE_UT_ID - 0
+ memcpy (to->ut_id, from->ut_id, 4);
+#endif
+#if _HAVE_UT_HOST - 0
+ memcpy (to->ut_host, from->ut_host, __UT_HOSTSIZE);
+#endif
+ to->ut_exit = from->ut_exit;
+ to->ut_session = (int64_t) from->ut_session;
+#if _HAVE_UT_TV - 0
+ to->ut_tv.tv_sec = (int64_t) from->ut_tv.tv_sec;
+ to->ut_tv.tv_usec = (int64_t) from->ut_tv.tv_usec;
+#endif
+ memcpy (to->ut_addr_v6, from->ut_addr_v6, 4 * 4);
+}
+
+#endif /* utmpx-convert.h */
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c Sun Jul 27 00:07:45 2008
@@ -1,0 +1,140 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@xxxxxxxxxx>.
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sys/types.h>
+#include <utmp.h>
+#include <errno.h>
+#include <libc-symbols.h>
+
+#include "utmp32.h"
+#include "utmp-convert.h"
+
+#include "utmpx32.h"
+#include "utmpx-convert.h"
+
+/* Allocate a static buffer to be returned to the caller. As well as
+ with the existing version of these functions the caller has to be
+ aware that the contents of this buffer will change with subsequent
+ calls. */
+#define ALLOCATE_UTMPX32_OUT(OUT) \
+ static struct utmpx32 *OUT = NULL; \
+ \
+ if (OUT == NULL) \
+ { \
+ OUT = malloc (sizeof (struct utmpx32)); \
+ if (OUT == NULL) \
+ return NULL; \
+ }
+
+/* Perform a lookup for a utmpx entry matching FIELD using function
+ FUNC. FIELD is converted to a 64 bit utmpx and the result is
+ converted back to 32 bit utmpx. */
+#define ACCESS_UTMPX_ENTRY(FUNC, FIELD) \
+ struct utmpx in64; \
+ struct utmpx *out64; \
+ ALLOCATE_UTMPX32_OUT (out32); \
+ \
+ utmpx_convert32to64 (FIELD, &in64); \
+ out64 = FUNC (&in64); \
+ \
+ if (out64 == NULL) \
+ return NULL; \
+ \
+ utmpx_convert64to32 (out64, out32); \
+ \
+ return out32;
+
+
+/* Get the next entry from the user accounting database. */
+struct utmpx32 *
+getutxent32 (void)
+{
+ struct utmpx *out64;
+ ALLOCATE_UTMPX32_OUT (out32);
+
+ out64 = getutxent ();
+ if (!out64)
+ return NULL;
+
+ utmpx_convert64to32 (out64, out32);
+ return out32;
+
+}
+symbol_version (getutxent32, getutxent, GLIBC_2.1);
+
+/* Get the user accounting database entry corresponding to ID. */
+struct utmpx32 *
+getutxid32 (const struct utmpx32 *id)
+{
+ ACCESS_UTMPX_ENTRY (getutxid, id);
+}
+symbol_version (getutxid32, getutxid, GLIBC_2.1);
+
+/* Get the user accounting database entry corresponding to LINE. */
+struct utmpx32 *
+getutxline32 (const struct utmpx32 *line)
+{
+ ACCESS_UTMPX_ENTRY (getutxline, line);
+}
+symbol_version (getutxline32, getutxline, GLIBC_2.1);
+
+/* Write the entry UTMPX into the user accounting database. */
+struct utmpx32 *
+pututxline32 (const struct utmpx32 *utmpx)
+{
+ ACCESS_UTMPX_ENTRY (pututxline, utmpx);
+}
+symbol_version (pututxline32, pututxline, GLIBC_2.1);
+
+/* Append entry UTMP to the wtmpx-like file WTMPX_FILE. */
+void
+updwtmpx32 (const char *wtmpx_file, const struct utmpx32 *utmpx)
+{
+ struct utmpx in64;
+
+ utmpx_convert32to64 (utmpx, &in64);
+ updwtmpx (wtmpx_file, &in64);
+}
+symbol_version (updwtmpx32, updwtmpx, GLIBC_2.1);
+
+/* Copy the information in UTMPX to UTMP. */
+void
+getutmp32 (const struct utmpx32 *utmpx, struct utmp32 *utmp)
+{
+ struct utmpx in64;
+ struct utmp out64;
+
+ utmpx_convert32to64 (utmpx, &in64);
+ getutmp (&in64, &out64);
+ utmp_convert64to32 (&out64, utmp);
+}
+symbol_version (getutmp32, getutmp, GLIBC_2.1.1);
+
+/* Copy the information in UTMP to UTMPX. */
+void
+getutmpx32 (const struct utmp32 *utmp, struct utmpx32 *utmpx)
+{
+ struct utmp in64;
+ struct utmpx out64;
+
+ utmp_convert32to64 (utmp, &in64);
+ getutmpx (&in64, &out64);
+ utmpx_convert64to32 (&out64, utmpx);
+}
+symbol_version (getutmpx32, getutmpx, GLIBC_2.1.1);
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h Sun Jul 27 00:07:45 2008
@@ -1,0 +1,52 @@
+/* The `struct utmp' type, describing entries in the utmp file. GNU version.
+ Copyright (C) 1993, 1996, 1997, 1998, 1999, 2002, 2008
+ 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _UTMPX32_H
+#define _UTMPX32_H 1
+
+#include <paths.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <bits/wordsize.h>
+#include <utmpx.h>
+
+/* The structure describing an entry in the user accounting database. */
+struct utmpx32
+{
+ short int ut_type; /* Type of login. */
+ __pid_t ut_pid; /* Process ID of login process. */
+ char ut_line[__UT_LINESIZE]; /* Devicename. */
+ char ut_id[4]; /* Inittab ID. */
+ char ut_user[__UT_NAMESIZE]; /* Username. */
+ char ut_host[__UT_HOSTSIZE]; /* Hostname for remote login. */
+ struct __exit_status ut_exit; /* Exit status of a process marked
+ as DEAD_PROCESS. */
+ __int64_t ut_session; /* Session ID, used for windowing. */
+ struct
+ {
+ __int64_t tv_sec; /* Seconds. */
+ __int64_t tv_usec; /* Microseconds. */
+ } ut_tv; /* Time entry was made. */
+
+ __int32_t ut_addr_v6[4]; /* Internet address of remote host. */
+ char __unused[20]; /* Reserved for future use. */
+};
+
+#endif /* utmpx32.h */