aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog34
-rw-r--r--Versions.def1
-rw-r--r--sysdeps/unix/sysv/linux/s390/bits/utmp.h125
-rw-r--r--sysdeps/unix/sysv/linux/s390/bits/utmpx.h104
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/Makefile5
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/Versions23
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/getutent.c29
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c35
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/getutid.c29
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c32
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/getutline.c29
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c31
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c38
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/getutxent.c31
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c31
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c31
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/login.c36
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/login32.c37
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c31
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c29
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c31
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/utmp-compat.h22
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h17
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c185
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/utmp32.h53
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/utmpx-convert.h86
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c140
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h52
28 files changed, 1327 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 3960301a32..b67d0593f8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,37 @@
+2008-07-21 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * 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@redhat.com>
* scripts/gen-as-const.awk: Generate more widely usable code by
diff --git a/Versions.def b/Versions.def
index 8b79917e62..5d98ad1933 100644
--- a/Versions.def
+++ b/Versions.def
@@ -106,6 +106,7 @@ librt {
}
libutil {
GLIBC_2.0
+ GLIBC_2.9
}
ld {
GLIBC_2.0
diff --git a/sysdeps/unix/sysv/linux/s390/bits/utmp.h b/sysdeps/unix/sysv/linux/s390/bits/utmp.h
new file mode 100644
index 0000000000..acb82b0ac7
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/bits/utmp.h
@@ -0,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
diff --git a/sysdeps/unix/sysv/linux/s390/bits/utmpx.h b/sysdeps/unix/sysv/linux/s390/bits/utmpx.h
new file mode 100644
index 0000000000..718e29039e
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/bits/utmpx.h
@@ -0,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
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/Makefile b/sysdeps/unix/sysv/linux/s390/s390-32/Makefile
index 359c863c0e..a509c9312b 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/Makefile
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/Makefile
@@ -1,3 +1,8 @@
+ifeq ($(subdir),login)
+sysdep_routines += utmp32 utmpx32
+libutil-routines += login32
+endif
+
ifeq ($(subdir),misc)
sysdep_headers += sys/elf.h
endif
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/Versions b/sysdeps/unix/sysv/linux/s390/s390-32/Versions
index 8d6a660cb5..b6d608d0ae 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/Versions
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/Versions
@@ -26,4 +26,27 @@ libc {
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;
+ }
}
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c
new file mode 100644
index 0000000000..de3aa3f5b3
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c
@@ -0,0 +1,29 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
+ 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);
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c
new file mode 100644
index 0000000000..8c4be200cd
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
+ 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);
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c
new file mode 100644
index 0000000000..5285481bb0
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c
@@ -0,0 +1,29 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
+ 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);
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c
new file mode 100644
index 0000000000..5989726db0
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
+ 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. */
+
+#in