about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1996-10-08 23:39:20 +0000
committerUlrich Drepper <drepper@redhat.com>1996-10-08 23:39:20 +0000
commit11336c165c25e5a467335ca742674b1d5ad6d982 (patch)
treed416c633f2bebd9b9cb3b7142396e3644805fec3 /sysdeps
parent6428aed93c1a132c4cd6a8c21de9d0248fed4c46 (diff)
downloadglibc-11336c165c25e5a467335ca742674b1d5ad6d982.tar.gz
glibc-11336c165c25e5a467335ca742674b1d5ad6d982.tar.xz
glibc-11336c165c25e5a467335ca742674b1d5ad6d982.zip
update from main archive 961008 cvs/libc-961009
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.

	* sysdeps/libm-i387/s_copysignl.S: Correct loading of return value.
Diffstat (limited to 'sysdeps')
-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
16 files changed, 83 insertions, 20 deletions
diff --git a/sysdeps/generic/crypt-entry.c b/sysdeps/generic/crypt-entry.c
index 84c6974697..de15904b2c 100644
--- a/sysdeps/generic/crypt-entry.c
+++ b/sysdeps/generic/crypt-entry.c
@@ -32,7 +32,7 @@ static const char md5_salt_prefix[] = "$1$";
 /* Prototypes for the MD5 encryption replacement functions.  */
 extern char *md5_crypt_r (const char *key, const char *salt, char *buffer,
 			  int buflen);
-extern char *md5_crpyt (const char *key, const char *salt);
+extern char *md5_crypt (const char *key, const char *salt);
 
 
 /* We recognize an intended call of the MD5 crypt replacement function
diff --git a/sysdeps/i386/i586/strchr.S b/sysdeps/i386/i586/strchr.S
index bc435bfe0a..8a6691f7df 100644
--- a/sysdeps/i386/i586/strchr.S
+++ b/sysdeps/i386/i586/strchr.S
@@ -68,21 +68,18 @@ ENTRY (strchr)
 	andl $3, %edi		/* mask alignment bits */
 
 	jz L11			/* alignment is 0 => start loop */
-	jp L0			/* exactly two bits set */
 
-	movb (%eax), %cl	/* load single byte */
-	cmpb (%eax), %dl	/* is byte == C? */
+	movb %dl, %cl		/* 0 is needed below */
+	jp L0			/* exactly two bits set */
 
-	je L2			/* aligned => return pointer */
+	xorb (%eax), %cl	/* is byte the one we are looking for? */
+	jz L2			/* yes => return pointer */
 
-	cmpb $0, %cl		/* is byte NUL? */
+	xorb %dl, %cl		/* load single byte and test for NUL */
 	je L3			/* yes => return NULL */
 
-	incl %eax		/* increment pointer */
-	xorl $3, %edi		/* was alignment == 3? */
-
-L0:	movb (%eax), %cl	/* load single byte */
-	je L11			/* yes => start loop */
+	movb 1(%eax), %cl	/* load single byte */
+	incl %eax
 
 	cmpb %cl, %dl		/* is byte == C? */
 	je L2			/* aligned => return pointer */
@@ -90,8 +87,12 @@ L0:	movb (%eax), %cl	/* load single byte */
 	cmpb $0, %cl		/* is byte NUL? */
 	je L3			/* yes => return NULL */
 
-	movb 1(%eax), %cl	/* load single byte */
-	incl %eax		/* increment pointer */
+	incl %eax
+	decl %edi
+
+	jne L11
+
+L0:	movb (%eax), %cl	/* load single byte */
 
 	cmpb %cl, %dl		/* is byte == C? */
 	je L2			/* aligned => return pointer */
diff --git a/sysdeps/posix/euidaccess.c b/sysdeps/posix/euidaccess.c
index f3a10c9b9c..04648ce08b 100644
--- a/sysdeps/posix/euidaccess.c
+++ b/sysdeps/posix/euidaccess.c
@@ -137,8 +137,12 @@ euidaccess (path, mode)
   int granted;
 
 #ifdef	_LIBC
-  uid_t uid = getuid (), euid = geteuid ();
-  gid_t gid = getgid (), egid = getegid ();
+  uid_t euid;
+  gid_t egid;
+
+  if (! __libc_enable_secure)
+    /* If we are not set-uid or set-gid, access does the same.  */
+    return access (path, mode);
 #else
   if (have_ids == 0)
     {
@@ -148,11 +152,11 @@ euidaccess (path, mode)
       euid = geteuid ();
       egid = getegid ();
     }
-#endif
 
   if (uid == euid && gid == egid)
     /* If we are not set-uid or set-gid, access does the same.  */
     return access (path, mode);
+#endif
 
   if (stat (path, &stats))
     return -1;
@@ -165,6 +169,12 @@ euidaccess (path, mode)
   if (mode == F_OK)
     return 0;			/* The file exists. */
 
+#ifdef	_LIBC
+  /* Now we need the IDs.  */
+  euid = geteuid ();
+  egid = getegid ();
+#endif
+
   /* The super-user can read and write any file, and execute any file
      that anyone can execute. */
   if (euid == 0 && ((mode & X_OK) == 0
diff --git a/sysdeps/stub/e_j0l.c b/sysdeps/stub/e_j0l.c
index 90fa2c6ff1..c16e8a8a9d 100644
--- a/sysdeps/stub/e_j0l.c
+++ b/sysdeps/stub/e_j0l.c
@@ -9,3 +9,12 @@ __ieee754_j0l (long double x)
 }
 
 stub_warning (__ieee754_j0l)
+
+long double
+__ieee754_y0l (long double x)
+{
+  fputs ("__ieee754_y0l not implemented\n", stderr);
+  return 0.0;
+}
+
+stub_warning (__ieee754_y0l)
diff --git a/sysdeps/stub/e_j1l.c b/sysdeps/stub/e_j1l.c
index d84e3cd1c2..0a781e5cc1 100644
--- a/sysdeps/stub/e_j1l.c
+++ b/sysdeps/stub/e_j1l.c
@@ -9,3 +9,12 @@ __ieee754_j1l (long double x)
 }
 
 stub_warning (__ieee754_j1l)
+
+long double
+__ieee754_y1l (long double x)
+{
+  fputs ("__ieee754_y1l not implemented\n", stderr);
+  return 0.0;
+}
+
+stub_warning (__ieee754_y1l)
diff --git a/sysdeps/stub/e_jnl.c b/sysdeps/stub/e_jnl.c
index b9f59004ea..86ff03b031 100644
--- a/sysdeps/stub/e_jnl.c
+++ b/sysdeps/stub/e_jnl.c
@@ -2,10 +2,19 @@
 #include <stdio.h>
 
 long double
-__ieee754_jnl (long double x)
+__ieee754_jnl (int n, long double x)
 {
   fputs ("__ieee754_jnl not implemented\n", stderr);
   return 0.0;
 }
 
 stub_warning (__ieee754_jnl)
+
+long double
+__ieee754_ynl (int n, long double x)
+{
+  fputs ("__ieee754_ynl not implemented\n", stderr);
+  return 0.0;
+}
+
+stub_warning (__ieee754_ynl)
diff --git a/sysdeps/unix/sysv/linux/Dist b/sysdeps/unix/sysv/linux/Dist
index db0cd6000d..0879234162 100644
--- a/sysdeps/unix/sysv/linux/Dist
+++ b/sysdeps/unix/sysv/linux/Dist
@@ -1,6 +1,9 @@
 init-first.h
 sysctl.c
 net/if.h
+net/if_ppp.h
+net/ppp-comp.h
+net/ppp_defs.h
 nfs/nfs.h
 sys/acct.h
 sys/io.h
diff --git a/sysdeps/unix/sysv/linux/alpha/clone.S b/sysdeps/unix/sysv/linux/alpha/clone.S
index a1ef324956..71d8053b12 100644
--- a/sysdeps/unix/sysv/linux/alpha/clone.S
+++ b/sysdeps/unix/sysv/linux/alpha/clone.S
@@ -20,6 +20,7 @@ Cambridge, MA 02139, USA.  */
    and invokes a function in the right context after its all over.  */
 
 #include <sysdep.h>
+#define _ERRNO_H	1
 #include <errnos.h>
 
 /* int clone(int (*fn)(), void *child_stack, int flags, int nargs, ...) */
diff --git a/sysdeps/unix/sysv/linux/errnos.h b/sysdeps/unix/sysv/linux/errnos.h
index 8a7055aa6a..40707d1d62 100644
--- a/sysdeps/unix/sysv/linux/errnos.h
+++ b/sysdeps/unix/sysv/linux/errnos.h
@@ -17,6 +17,10 @@ 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.  */
 
+#ifdef _ERRNO_H
+
+#undef EDOM
+#undef ERANGE
 #include <linux/errno.h>
 
 #ifndef __ASSEMBLER__
@@ -35,5 +39,14 @@ extern int *__errno_location __P ((void)) __attribute__ ((__const__));
 
 #define __set_errno(val) errno = (val)
 
-#endif
-#endif
+#endif /* __USE_REENTRANT && (!_LIBC || _LIBC_REENTRANT) */
+#endif /* !__ASSEMBLER */
+#endif /* _ERRNO_H */
+
+#if !defined (_ERRNO_H) && defined (__need_Emath)
+/* This is ugly but the kernel header is not clean enough.  We must
+   define only the values EDOM and ERANGE in case __need_Emath is
+   defined.  The value is the same for all Linux ports.  */
+#define EDOM	33	/* Math argument out of domain of function.  */
+#define ERANGE	34	/* Math result not representable.  */
+#endif /* !_ERRNO_H && __need_Emath */
diff --git a/sysdeps/unix/sysv/linux/i386/clone.S b/sysdeps/unix/sysv/linux/i386/clone.S
index 0afbf872d9..0742cc5f74 100644
--- a/sysdeps/unix/sysv/linux/i386/clone.S
+++ b/sysdeps/unix/sysv/linux/i386/clone.S
@@ -20,6 +20,7 @@ Cambridge, MA 02139, USA.  */
    and invokes a function in the right context after its all over.  */
 
 #include <sysdep.h>
+#define _ERRNO_H	1
 #include <errnos.h>
 
 /* int clone(int (*fn)(), void *child_stack, int flags, int nargs, ...) */
diff --git a/sysdeps/unix/sysv/linux/m68k/clone.S b/sysdeps/unix/sysv/linux/m68k/clone.S
index 64077e00de..07280031a5 100644
--- a/sysdeps/unix/sysv/linux/m68k/clone.S
+++ b/sysdeps/unix/sysv/linux/m68k/clone.S
@@ -20,6 +20,7 @@ Cambridge, MA 02139, USA.  */
    and invokes a function in the right context after its all over.  */
 
 #include <sysdep.h>
+#define _ERRNO_H	1
 #include <errnos.h>
 
 /* int clone (int (*fn) (), void *child_stack, int flags, int nargs, ...) */
diff --git a/sysdeps/unix/sysv/linux/net/if_ppp.h b/sysdeps/unix/sysv/linux/net/if_ppp.h
new file mode 100644
index 0000000000..27652546ae
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/net/if_ppp.h
@@ -0,0 +1 @@
+#include <linux/if_ppp.h>
diff --git a/sysdeps/unix/sysv/linux/net/ppp-comp.h b/sysdeps/unix/sysv/linux/net/ppp-comp.h
new file mode 100644
index 0000000000..4a992d5422
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/net/ppp-comp.h
@@ -0,0 +1 @@
+#include <linux/ppp-comp.h>
diff --git a/sysdeps/unix/sysv/linux/net/ppp_defs.h b/sysdeps/unix/sysv/linux/net/ppp_defs.h
new file mode 100644
index 0000000000..e51dba7dea
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/net/ppp_defs.h
@@ -0,0 +1 @@
+#include <linux/ppp_defs.h>
diff --git a/sysdeps/unix/sysv/linux/posix_opt.h b/sysdeps/unix/sysv/linux/posix_opt.h
index c1ff431fc9..8a6fad0eb1 100644
--- a/sysdeps/unix/sysv/linux/posix_opt.h
+++ b/sysdeps/unix/sysv/linux/posix_opt.h
@@ -60,4 +60,7 @@ Boston, MA 02111-1307, USA.  */
    using the value _POSIX_VDISABLE.  */
 #define	_POSIX_VDISABLE	'\0'
 
+/* Filenames are not silently truncated.  */
+#define	_POSIX_NO_TRUNC	1
+
 #endif /* posix_opt.h */
diff --git a/sysdeps/unix/sysv/linux/sys/soundcard.h b/sysdeps/unix/sysv/linux/sys/soundcard.h
index 098fae1c33..fade986fe4 100644
--- a/sysdeps/unix/sysv/linux/sys/soundcard.h
+++ b/sysdeps/unix/sysv/linux/sys/soundcard.h
@@ -1 +1 @@
-#include <linux/soundard.h>
+#include <linux/soundcard.h>