summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1996-10-10 01:07:18 +0000
committerUlrich Drepper <drepper@redhat.com>1996-10-10 01:07:18 +0000
commitb33f91e91da81059b388c8f8ee0d0024212eb180 (patch)
treea9b0a80b8567c0d4e24a74f0c45e52a4a3a8962a
parent11336c165c25e5a467335ca742674b1d5ad6d982 (diff)
update from main archive 961009cvs/libc-961011cvs/libc-961010
Wed Oct 9 00:24:52 1996 Jim Meyering <meyering@asic.sc.ti.com> * time/strftime.c: Allow old K&R compilers compile this file. Wed Oct 9 12:03:56 1996 Ulrich Drepper <drepper@cygnus.com> * posix/execlp.c: Add first argument parameter to be compliant with POSIX. Rearrange body to start vararg counter after this new argument. Wed Oct 9 04:34:50 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/sys/procfs.h: Rewrite. We cannot use simply a wrapper around the <linux.elfcore.h> file since the kernel header is not clean enough. We provide the definitions in this file instead. Wed Oct 9 01:43:18 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/gethostid.c (sethostid): Avoid get?id calls by using __libc_enable_secure.
-rw-r--r--ChangeLog22
-rw-r--r--posix/execlp.c20
-rw-r--r--sunrpc/auth_unix.c4
-rw-r--r--sysdeps/unix/sysv/linux/gethostid.c2
-rw-r--r--sysdeps/unix/sysv/linux/sys/procfs.h106
-rw-r--r--time/strftime.c14
6 files changed, 149 insertions, 19 deletions
diff --git a/ChangeLog b/ChangeLog
index 8d3b462f2c..fdd2883c38 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,25 @@
+Wed Oct 9 00:24:52 1996 Jim Meyering <meyering@asic.sc.ti.com>
+
+ * time/strftime.c: Allow old K&R compilers compile this file.
+
+Wed Oct 9 12:03:56 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * posix/execlp.c: Add first argument parameter to be compliant
+ with POSIX. Rearrange body to start vararg counter after
+ this new argument.
+
+Wed Oct 9 04:34:50 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/unix/sysv/linux/sys/procfs.h: Rewrite. We cannot use
+ simply a wrapper around the <linux.elfcore.h> file since the
+ kernel header is not clean enough. We provide the definitions
+ in this file instead.
+
+Wed Oct 9 01:43:18 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/unix/sysv/linux/gethostid.c (sethostid): Avoid
+ get?id calls by using __libc_enable_secure.
+
Wed Oct 9 00:30:33 1996 Ulrich Drepper <drepper@cygnus.com>
* inet/getnetgrent_r.c: Correct netgroup implementation. A
diff --git a/posix/execlp.c b/posix/execlp.c
index af09dacafd..f442c05d94 100644
--- a/posix/execlp.c
+++ b/posix/execlp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1993 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1993, 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
@@ -16,7 +16,6 @@ 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. */
-#include <ansidecl.h>
#include <unistd.h>
#include <stdarg.h>
#include <stddef.h>
@@ -25,20 +24,19 @@ Cambridge, MA 02139, USA. */
it contains no slashes, with all arguments after FILE until a
NULL pointer and environment from `environ'. */
int
-DEFUN(execlp, (file), CONST char *file DOTS)
+execlp (const char *file, const char *arg, ...)
{
- CONST char *argv[1024];
- register unsigned int i;
+ const char *argv[1024];
+ unsigned int i;
va_list args;
- va_start (args, file);
+ va_start (args, arg);
- i = 0;
- do
- argv[i] = va_arg (args, CONST char *);
- while (argv[i++] != NULL);
+ argv[i = 0] = arg;
+ while (argv[i++] != NULL)
+ argv[i] = va_arg (args, const char *);
va_end (args);
- return execvp (file, (char *CONST *) argv);
+ return execvp (file, (char *const *) argv);
}
diff --git a/sunrpc/auth_unix.c b/sunrpc/auth_unix.c
index 9062e796b9..f0e6686d65 100644
--- a/sunrpc/auth_unix.c
+++ b/sunrpc/auth_unix.c
@@ -46,7 +46,7 @@ static char sccsid[] = "@(#)auth_unix.c 1.19 87/08/11 Copyr 1984 Sun Micro";
#include <limits.h>
#include <stdio.h>
#include <unistd.h>
-#include <sys/params.h>
+#include <sys/param.h>
#include <rpc/types.h>
#include <rpc/xdr.h>
@@ -174,7 +174,7 @@ authunix_create_default()
char machname[MAX_MACHINE_NAME + 1];
register int uid;
register int gid;
- int max_nr_groups = sysconf (_SC_NGROUP_MAX);
+ int max_nr_groups = sysconf (_SC_NGROUPS_MAX);
gid_t gids[max_nr_groups];
if (gethostname(machname, MAX_MACHINE_NAME) == -1)
diff --git a/sysdeps/unix/sysv/linux/gethostid.c b/sysdeps/unix/sysv/linux/gethostid.c
index a1d141b142..ca2669d3e6 100644
--- a/sysdeps/unix/sysv/linux/gethostid.c
+++ b/sysdeps/unix/sysv/linux/gethostid.c
@@ -30,7 +30,7 @@ sethostid (id)
ssize_t written;
/* Test for appropriate rights to set host ID. */
- if (geteuid () || getuid ())
+ if (__libc_enable_secure)
{
__set_errno (EPERM);
return -1;
diff --git a/sysdeps/unix/sysv/linux/sys/procfs.h b/sysdeps/unix/sysv/linux/sys/procfs.h
index 9c1079d7b9..d4a38980c3 100644
--- a/sysdeps/unix/sysv/linux/sys/procfs.h
+++ b/sysdeps/unix/sysv/linux/sys/procfs.h
@@ -1 +1,105 @@
-#include <linux/elfcore.h>
+/* 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_PROCFS_H
+
+#define _SYS_PROCFS_H 1
+#include <features.h>
+
+/* This is somehow modelled after the file of the same name on SysVr4
+ systems. It provides a definition of the core file format for ELF
+ used on Linux. */
+
+#include <signal.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <asm/elf.h>
+
+struct elf_siginfo
+{
+ int si_signo; /* signal number */
+ int si_code; /* extra code */
+ int si_errno; /* errno */
+};
+
+typedef elf_greg_t greg_t;
+typedef elf_gregset_t gregset_t;
+typedef elf_fpregset_t fpregset_t;
+#define NGREG ELF_NGREG
+
+/* Definitions to generate Intel SVR4-like core files. These mostly
+ have the same names as the SVR4 types with "elf_" tacked on the
+ front to prevent clashes with linux definitions, and the typedef
+ forms have been avoided. This is mostly like the SVR4 structure,
+ but more Linuxy, with things that Linux does not support and which
+ gdb doesn't really use excluded. Fields present but not used are
+ marked with "XXX". */
+struct elf_prstatus
+{
+#if 0
+ long pr_flags; /* XXX Process flags */
+ short pr_why; /* XXX Reason for process halt */
+ short pr_what; /* XXX More detailed reason */
+#endif
+ struct elf_siginfo pr_info; /* Info associated with signal */
+ short pr_cursig; /* Current signal */
+ sigset_t pr_sigpend; /* Set of pending signals */
+ sigset_t pr_sighold; /* Set of held signals */
+#if 0
+ struct sigaltstack pr_altstack; /* Alternate stack info */
+ struct sigaction pr_action; /* Signal action for current sig */
+#endif
+ pid_t pr_pid;
+ pid_t pr_ppid;
+ pid_t pr_pgrp;
+ pid_t pr_sid;
+ struct timeval pr_utime; /* User time */
+ struct timeval pr_stime; /* System time */
+ struct timeval pr_cutime; /* Cumulative user time */
+ struct timeval pr_cstime; /* Cumulative system time */
+#if 0
+ long pr_instr; /* Current instruction */
+#endif
+ elf_gregset_t pr_reg; /* GP registers */
+ int pr_fpvalid; /* True if math copro being used. */
+};
+
+
+#define ELF_PRARGSZ (80) /* Number of chars for args */
+
+struct elf_prpsinfo
+{
+ char pr_state; /* numeric process state */
+ char pr_sname; /* char for pr_state */
+ char pr_zomb; /* zombie */
+ char pr_nice; /* nice val */
+ unsigned long pr_flag; /* flags */
+ uid_t pr_uid;
+ gid_t pr_gid;
+ pid_t pr_pid, pr_ppid, pr_pgrp, pr_sid;
+ /* Lots missing */
+ char pr_fname[16]; /* filename of executable */
+ char pr_psargs[ELF_PRARGSZ]; /* initial part of arg list */
+};
+
+
+typedef struct elf_prstatus prstatus_t;
+typedef struct elf_prpsinfo prpsinfo_t;
+
+
+#endif /* sys/procfs.h */
diff --git a/time/strftime.c b/time/strftime.c
index 36088d04c9..4014826b50 100644
--- a/time/strftime.c
+++ b/time/strftime.c
@@ -658,8 +658,11 @@ strftime (s, maxsize, format, tp)
case 's': /* GNU extension. */
{
- struct tm ltm = *tp;
- time_t t = mktime (&ltm);
+ struct tm ltm;
+ time_t t;
+
+ ltm = *tp;
+ t = mktime (&ltm);
/* Generate string value for T using time_t arithmetic;
this works even if sizeof (long) < sizeof (time_t). */
@@ -818,8 +821,11 @@ strftime (s, maxsize, format, tp)
diff = tp->tm_gmtoff;
#else
struct tm gtm;
- struct tm ltm = *tp;
- time_t lt = mktime (&ltm);
+ struct tm ltm;
+ time_t lt;
+
+ ltm = *tp;
+ lt = mktime (&ltm);
if (lt == (time_t) -1)
{