diff options
-rw-r--r-- | ChangeLog | 22 | ||||
-rw-r--r-- | posix/execlp.c | 20 | ||||
-rw-r--r-- | sunrpc/auth_unix.c | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/gethostid.c | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sys/procfs.h | 106 | ||||
-rw-r--r-- | time/strftime.c | 14 |
6 files changed, 149 insertions, 19 deletions
@@ -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 af09dac..f442c05 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 9062e79..f0e6686 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 a1d141b..ca2669d 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 9c1079d..d4a3898 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 36088d0..4014826 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 (<m); + struct tm ltm; + time_t t; + + ltm = *tp; + t = mktime (<m); /* 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 (<m); + struct tm ltm; + time_t lt; + + ltm = *tp; + lt = mktime (<m); if (lt == (time_t) -1) { |