aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog137
-rw-r--r--Makeconfig8
-rw-r--r--Rules2
-rw-r--r--db/makedb.c1
-rw-r--r--elf/dl-open.c8
-rw-r--r--gmon/gmon.c5
-rw-r--r--inet/getnetgrent_r.c263
-rw-r--r--inet/netgroup.h17
-rw-r--r--io/test-utime.c3
-rw-r--r--libio/iofgets.c2
-rw-r--r--locale/programs/xmalloc.c3
-rw-r--r--nss/nss_files/files-netgrp.c34
-rw-r--r--nss/nss_files/files-parse.c2
-rw-r--r--posix/getopt.c124
-rw-r--r--posix/unistd.h2
-rw-r--r--shadow/putspent.c6
-rw-r--r--stdio-common/bug10.c9
-rw-r--r--stdio-common/bug11.c3
-rw-r--r--stdio-common/bug7.c4
-rw-r--r--stdio-common/bug8.c5
-rw-r--r--stdio-common/bug9.c2
-rw-r--r--stdio-common/scanf1.c2
-rw-r--r--stdio-common/scanf2.c5
-rw-r--r--stdio-common/scanf3.c7
-rw-r--r--stdio-common/scanf4.c5
-rw-r--r--stdio-common/scanf5.c2
-rw-r--r--stdio-common/scanf6.c3
-rw-r--r--stdio-common/scanf7.c3
-rw-r--r--stdio-common/scanf8.c3
-rw-r--r--stdio-common/temptest.c5
-rw-r--r--stdio-common/test-fwrite.c4
-rw-r--r--stdio-common/test_rdwr.c4
-rw-r--r--stdio-common/tfformat.c7989
-rw-r--r--stdio-common/tiformat.c10018
-rw-r--r--stdio-common/tst-printf.c20
-rw-r--r--stdio-common/tstdiomisc.c6
-rw-r--r--stdio-common/tstgetln.c2
-rw-r--r--stdlib/testmb.c2
-rw-r--r--string/tst-strlen.c2
-rw-r--r--sunrpc/auth_unix.c14
-rw-r--r--sysdeps/generic/crypt-entry.c2
-rw-r--r--sysdeps/i386/i586/strchr.S25
-rw-r--r--sysdeps/posix/euidaccess.c16
-rw-r--r--sysdeps/stub/e_j0l.c9
-rw-r--r--sysdeps/stub/e_j1l.c9
-rw-r--r--sysdeps/stub/e_jnl.c11
-rw-r--r--sysdeps/unix/sysv/linux/Dist3
-rw-r--r--sysdeps/unix/sysv/linux/alpha/clone.S1
-rw-r--r--sysdeps/unix/sysv/linux/errnos.h17
-rw-r--r--sysdeps/unix/sysv/linux/i386/clone.S1
-rw-r--r--sysdeps/unix/sysv/linux/m68k/clone.S1
-rw-r--r--sysdeps/unix/sysv/linux/net/if_ppp.h1
-rw-r--r--sysdeps/unix/sysv/linux/net/ppp-comp.h1
-rw-r--r--sysdeps/unix/sysv/linux/net/ppp_defs.h1
-rw-r--r--sysdeps/unix/sysv/linux/posix_opt.h3
-rw-r--r--sysdeps/unix/sysv/linux/sys/soundcard.h2
56 files changed, 9704 insertions, 9135 deletions
diff --git a/ChangeLog b/ChangeLog
index fe5251e781..8d3b462f2c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,138 @@
+Wed Oct 9 00:30:33 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * inet/getnetgrent_r.c: Correct netgroup implementation. A
+ specification of a netgroup can also name another netgroup.
+ * nss/nss_files/files-netgrp.c: Likewise.
+ * inet/netgroup.h: Add fields to hold additional information.
+
+Tue Oct 8 21:51:14 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * posix/getopt.c: Implement POSIX -W option handling. When the
+ option string contains "W;" -W foo is handled like --foo.
+
+Tue Oct 8 12:27:26 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/unix/sysv/linux/i386/clone.S: Define _ERRNO_H before
+ inclusing <errnos.h> so we really get error symbols defined.
+ * sysdeps/unix/sysv/linux/m68k/clone.S: Likewise.
+ * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise.
+
+ * sunrpc/auth_unix.c (authunix_create_default): Don't use fixed
+ size array for getgroups call. Instead get maximal number via
+ sysconf. But discard list to NGRPS elements before calling XDR
+ function since Sun's code cannot handle longer lists.
+ Based on a patch by Thorsten Kukuk <kukuk@weber.uni-paderborn.de>.
+
+ * sysdeps/stub/e_j0l.c: Define y0l as well.
+ * sysdeps/stub/e_j1l.c: Define y1l as well.
+ * sysdeps/stub/e_jnl.c: Define ynl as well.
+
+ * posix/unistd.h: Correct prototype for execlp.
+
+ * sysdeps/unix/sysv/linux/posix_opt.h: Define _POSIX_NO_TRUNC.
+
+Mon Oct 7 22:18:03 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * Makeconfig (sysdep-library-path): New variable.
+ (built-program-cmd): Use it here to properly build a colon
+ separated library path.
+
+Mon Oct 7 22:11:55 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * crypt/md5-crypt.c (md5_crypt_r): Add missing parens around &
+ within comparison. Fix comments.
+ (md5_crypt): Fix comment.
+
+Tue Oct 8 05:10:49 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/unix/sysv/linux/errnos.h: Only include <linux/errnos.h>
+ when _ERRNO_H is defined.
+ [!_ERRNO_H && __need_Emath]: Define value for EDOM and ERANGE.
+ Should there ever be a Linux port where the numeric values are
+ not 33 and 34 this file must change.
+
+Mon Oct 7 13:54:04 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * libio/iofgets.c (_IO_fgets): Use _IO_flockfile instead of
+ __flockfile.
+
+Mon Oct 7 11:01:45 1996 Andreas Jaeger <aj@arthur.pfalz.de>
+
+ * string/tst-strlen.c (main): Provide prototype.
+ * malloc/mallocbug.c: Likewise.
+ * io/test-utime.c: Likewise.
+
+ * sysdeps/generic/crypt-entry.c: Correct typo.
+
+Mon Oct 7 13:42:20 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * elf/dl-open.c (_dl_open): Check against _dl_sysdep_start to
+ test for libc.a. Checking _DYNAMIC is of no worth here.
+ Suggested by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.
+
+ * nss/nss_files/files-parse.c: Define LOOKUP_NAME even if
+ EXTERN_PARSER is defined.
+
+Sat Oct 5 17:05:36 1996 Andreas Jaeger <aj@arthur.pfalz.de>
+
+ * Rules (dep-dummy-lib): Correct prototype for __dummy__.
+
+ * crypt/md5-crypt.c: Fix typos in comments.
+
+ * gmon/gmon.c: Provide prototypes.
+ * db/makedb.c: Likewise.
+ * locale/programs/xmalloc.c: Likewise.
+ * stdio-common/bug11.c (main): Likewise.
+ * stdio-common/bug7.c (main): Likewise.
+ * stdio-common/bug8.c (main): Likewise.
+ * stdio-common/bug9.c (main): Likewise.
+ * stdio-common/scanf1.c (main): Likewise.
+ * stdio-common/scanf2.c (main): Likewise.
+ * stdio-common/scanf5.c (main): Likewise.
+ * stdio-common/scanf6.c (main): Likewise.
+ * stdio-common/scanf7.c (main): Likewise.
+ * stdio-common/scanf8.c (main): Likewise.
+ * stdio-common/temptest.c (main): Likewise.
+ * stdio-common/test-fwrite.c (main): Likewise.
+ * stdio-common/tst-printf.c: Likewise.
+ * stdio-common/tstdiomisc.c: Likewise.
+ * stdio-common/tstgetln.c (main): Likewise.
+ * stdlib/testmb.c (main): Likewise.
+
+ * stdio-common/scanf4.c (main): Correct prototype, remove unused
+ variable n.
+
+ * stdio-common/scanf3.c (main): Correct prototype, change
+ declaration of s to reduce warnings.
+ * stdio-common/bug10.c (main): Likewise.
+
+ * stdio-common/tfformat.c: Provide prototype, remove unused
+ reference to dump_stats, add braces in sprint_doubles.
+ * stdio-common/tiformat.c: Likewise.
+
+ * stdio-common/test_rdwr.c (main): Parameter `where' is long in
+ printf call.
+
+Mon Oct 7 14:04:26 1996 NIIBE Yutaka <gniibe@mri.co.jp>
+
+ * sysdeps/unix/sysv/linux/sys/soundcard.h: Fix typo.
+
+ * shadow/putspent.c: Don't write colon after flag field.
+
+ * sysdeps/unix/sysv/linux/net/if_ppp.h: New file. Wrapper around
+ kernel header.
+ * sysdeps/unix/sysv/linux/net/ppp-comp.h: Likewise.
+ * sysdeps/unix/sysv/linux/net/ppp_defs.h: Likewise.
+ * sysdeps/unix/sysv/linux/Dist: Mention new files.
+
+Mon Oct 7 00:58:19 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/i386/i586/strchr.S: Correct handling of first bytes to
+ get pointer aligned. Reported by Matthias Urlichs <smurf@noris.de>.
+
+ * sysdeps/posix/euidaccess.c [_LIBC]: Avoid calling get?id functions
+ by using __libc_enable_secure variable.
+
Tue Oct 8 13:58:31 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* hurd/ports-get.c (_hurd_ports_get): If the requested port is
@@ -32,7 +167,7 @@ Sun Oct 6 02:05:52 1996 Ulrich Drepper <drepper@cygnus.com>
values to make `long double' functions available.
(distribute): Add $(long-m-yes:=.c).
- * sysdeps/libm-i387/s_ceill.S: Correct loading of return value.
+ * sysdeps/libm-i387/s_copysignl.S: Correct loading of return value.
Use long double instruction.
* sysdeps/libm-ieee754/e_atanhl.c (huge): Correct constant.
diff --git a/Makeconfig b/Makeconfig
index 8eb15d0c64..2a76ca34d8 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -369,10 +369,12 @@ ifneq (yes,$(build-shared))
built-program-cmd = $(built-program-file)
else
comma = ,
+sysdep-library-path = \
+$(subst $(empty) ,:,$(strip $(patsubst -Wl$(comma)-rpath-link=%, %,\
+ $(filter -Wl$(comma)-rpath-link=%,\
+ $(sysdep-LDFLAGS)))))
define built-program-cmd
-LD_LIBRARY_PATH=$(rpath-link)$(patsubst -Wl$(comma)-rpath-link=%,:%,\
- $(filter -Wl$(comma)-rpath-link=%,\
- $(sysdep-LDFLAGS))) \
+LD_LIBRARY_PATH=$(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
$(elf-objpfx)$(rtld-installed-name) $(built-program-file)
endef
endif
diff --git a/Rules b/Rules
index 640a2fe716..a06dc041df 100644
--- a/Rules
+++ b/Rules
@@ -72,7 +72,7 @@ $(AR) cr$(verbose) $@ $<
endef
$(common-objpfx)dummy.c:
rm -f $@
- echo 'void __dummy__ () { }' > $@
+ echo 'void __dummy__ (void) { }' > $@
$(common-objpfx)empty.c:
cp -f /dev/null $@
common-generated := $(common-generated) dummy.o dummy.c empty.c empty.o
diff --git a/db/makedb.c b/db/makedb.c
index d30ca2cef1..eb17a2254e 100644
--- a/db/makedb.c
+++ b/db/makedb.c
@@ -52,6 +52,7 @@ static void usage __P ((int status)) __attribute__ ((noreturn));
static int process_input __P ((FILE *input, const char *inname, DB *output,
int to_lowercase, int be_quiet));
static int print_database __P ((DB *db));
+int main __P ((int argc, char *argv[]));
int
diff --git a/elf/dl-open.c b/elf/dl-open.c
index 6b8b218582..25f2ba6fab 100644
--- a/elf/dl-open.c
+++ b/elf/dl-open.c
@@ -23,7 +23,11 @@ Cambridge, MA 02139, USA. */
#include <errno.h>
-weak_extern (_DYNAMIC)
+extern ElfW(Addr) _dl_sysdep_start (void **start_argptr,
+ void (*dl_main) (const ElfW(Phdr) *phdr,
+ ElfW(Word) phnum,
+ ElfW(Addr) *user_entry));
+weak_extern (_dl_sysdep_start)
extern int __libc_multiple_libcs; /* Defined in init-first.c. */
@@ -141,7 +145,7 @@ _dl_open (const char *file, int mode)
(*(void (*) (int, char **, char **)) init) (__libc_argc, __libc_argv,
__environ);
- if (_DYNAMIC == NULL)
+ if (_dl_sysdep_start == NULL)
/* We must be the static _dl_open in libc.a. A static program that
has loaded a dynamic object now has competition. */
__libc_multiple_libcs = 1;
diff --git a/gmon/gmon.c b/gmon/gmon.c
index 00b5df5332..6dc4cb5998 100644
--- a/gmon/gmon.c
+++ b/gmon/gmon.c
@@ -58,6 +58,11 @@ static int s_scale;
#define ERR(s) write(2, s, sizeof(s) - 1)
+void moncontrol __P ((int mode));
+static void write_hist __P ((int fd));
+static void write_call_graph __P ((int fd));
+static void write_bb_counts __P ((int fd));
+
/*
* Control profiling
* profiling is what mcount checks to see if
diff --git a/inet/getnetgrent_r.c b/inet/getnetgrent_r.c
index 52a90d055c..ff6d5395ed 100644
--- a/inet/getnetgrent_r.c
+++ b/inet/getnetgrent_r.c
@@ -31,6 +31,16 @@ static service_user *nip;
/* Remember the first service_entry, it's always the same. */
static service_user *startp;
+/* A netgroup can consist of names of other netgroups. We have to
+ track which netgroups were read and which still have to be read. */
+struct name_list
+{
+ const char *name;
+ struct name_list *next;
+};
+struct name_list *known_groups;
+struct name_list *needed_groups;
+
/* The lookup function for the first entry of this service. */
extern int __nss_netgroup_lookup (service_user **nip, const char *name,
@@ -62,30 +72,79 @@ setup (void **fctp, const char *func_name, int all)
return no_more;
}
-int
-setnetgrent (const char *group)
+/* Free used memory. */
+static void
+free_memory (void)
+{
+ while (known_groups != NULL)
+ {
+ struct name_list *tmp = known_groups;
+ known_groups = known_groups->next;
+ free (tmp->name);
+ free (tmp);
+ }
+
+ while (needed_groups != NULL)
+ {
+ struct name_list *tmp = needed_groups;
+ needed_groups = needed_groups->next;
+ free (tmp->name);
+ free (tmp);
+ }
+}
+
+static int
+internal_setnetgrent (const char *group)
{
enum nss_status (*fct) (const char *);
enum nss_status status = NSS_STATUS_UNAVAIL;
+ struct name_list *new_elem;
int no_more;
- __libc_lock_lock (lock);
-
/* Cycle through all the services and run their setnetgrent functions. */
no_more = setup ((void **) &fct, "setnetgrent", 1);
while (! no_more)
{
- /* Ignore status, we force check in __NSS_NEXT. */
+ /* Ignore status, we force check in `__nss_next'. */
status = (*fct) (group);
no_more = __nss_next (&nip, "setnetgrent", (void **) &fct, status, 0);
}
- __libc_lock_unlock (lock);
+ /* Add the current group to the list of known groups. */
+ new_elem = (struct name_list *) malloc (sizeof (struct name_list));
+ if (new_elem == NULL || (new_elem->name = strdup (group)) == NULL)
+ {
+ if (new_elem != NULL)
+ free (new_elem);
+ status == NSS_STATUS_UNAVAIL;
+ }
+ else
+ {
+ new_elem->next = known_groups;
+ known_groups = new_elem;
+ }
return status == NSS_STATUS_SUCCESS;
}
+int
+setnetgrent (const char *group)
+{
+ int result;
+
+ __libc_lock_lock (lock);
+
+ /* Free list of all netgroup names from last run. */
+ free_memory ();
+
+ result = internal_setnetgrent (group);
+
+ __libc_lock_unlock (lock);
+
+ return result;
+}
+
void
endnetgrent (void)
@@ -103,13 +162,16 @@ endnetgrent (void)
no_more = setup ((void **) &fct, "endnetgrent", 1);
while (! no_more)