aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-10-23 13:44:50 +0000
committerUlrich Drepper <drepper@redhat.com>1998-10-23 13:44:50 +0000
commit24f25de65657d7ac9ccec63447efbe415110435b (patch)
tree3a34a92cc12e9a07636c4a074d86f1a674a2d019
parentd6787ff2579c3ffa48219027498ed8aca3e19fc4 (diff)
downloadglibc-24f25de65657d7ac9ccec63447efbe415110435b.tar.xz
glibc-24f25de65657d7ac9ccec63447efbe415110435b.zip
Update.
* version.h (VERSION): Bump to 2.0.99. * posix/fnmath.h: Don't redefine __P when used in glibc. * posix/glob.h: Likewise. * inet/rcmd.c (__ivaliduser2): Fix memory leak. Patch by Dick Streefland <dick_streefland@tasking.com>. * stdio-common/tst-ungetc.c: Add more test cases. * sysdeps/unix/sysv/linux/Dist: Add linux_fsinfo.h. * sysdeps/unix/sysv/linux/fstatvfs.c: Move filesystem magic number definitions to ... * sysdeps/unix/sysv/linux/linux_fsinfo.h: ...here. New file. * sysdeps/unix/sysv/linux/fpathconf.c: New file. * sysdeps/unix/sysv/linux/pathconf.c: New file. * sysdeps/unix/sysv/linux/alpha/fpathconf.c: Handle _PC_LINK_MAX here. * sysdeps/unix/sysv/linux/alpha/pathconf.c: Likewise. 1998-10-20 Philip Blundell <pb@nexus.co.uk> * sysdeps/unix/sysv/linux/arm/bits/armsigctx.h: Include <asm/ptrace.h> to define struct pt_regs. * sysdeps/unix/sysv/linux/arm/profil-counter.h: Don't bother including <asm/ptrace.h> here. * sysdeps/unix/sysv/linux/arm/sysdep.S: Remove spurious call to C_SYMBOL_NAME macro. 1998-10-23 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/generic/sys/ptrace.h (__ptrace_request): Remove comma at end of enumerator list. * sysdeps/unix/sysv/linux/sys/ptrace.h (__ptrace_request): Likewise. * posix/wordexp.h: Likewise. * db/db.h: Use __PMT instead of __P in typedefs. * db/mpool.h: Likewise. * sysdeps/generic/bits/siginfo.h: Likewise. * nis/rpcsvc/ypclnt.h: Likewise. 1998-10-23 Ulrich Drepper <drepper@cygnus.com>
-rw-r--r--ChangeLog43
-rw-r--r--bits/siginfo.h4
-rw-r--r--db/db.h20
-rw-r--r--db/mpool.h4
-rw-r--r--inet/rcmd.c16
-rw-r--r--nis/rpcsvc/ypclnt.h4
-rw-r--r--posix/fnmatch.h6
-rw-r--r--posix/glob.h18
-rw-r--r--posix/wordexp.h2
-rw-r--r--stdio-common/tst-ungetc.c15
-rw-r--r--sysdeps/generic/bits/siginfo.h4
-rw-r--r--sysdeps/generic/sys/ptrace.h4
-rw-r--r--sysdeps/unix/sysv/linux/Dist1
-rw-r--r--sysdeps/unix/sysv/linux/alpha/fpathconf.c44
-rw-r--r--sysdeps/unix/sysv/linux/alpha/pathconf.c44
-rw-r--r--sysdeps/unix/sysv/linux/arm/bits/armsigctx.h2
-rw-r--r--sysdeps/unix/sysv/linux/arm/profil-counter.h1
-rw-r--r--sysdeps/unix/sysv/linux/arm/sysdep.S2
-rw-r--r--sysdeps/unix/sysv/linux/fpathconf.c80
-rw-r--r--sysdeps/unix/sysv/linux/fstatvfs.c26
-rw-r--r--sysdeps/unix/sysv/linux/linux_fsinfo.h58
-rw-r--r--sysdeps/unix/sysv/linux/pathconf.c80
-rw-r--r--sysdeps/unix/sysv/linux/sys/ptrace.h2
-rw-r--r--version.h2
24 files changed, 407 insertions, 75 deletions
diff --git a/ChangeLog b/ChangeLog
index a2f3c66c43..f6a345de14 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,48 @@
1998-10-23 Ulrich Drepper <drepper@cygnus.com>
+ * version.h (VERSION): Bump to 2.0.99.
+
+ * posix/fnmath.h: Don't redefine __P when used in glibc.
+ * posix/glob.h: Likewise.
+
+ * inet/rcmd.c (__ivaliduser2): Fix memory leak.
+ Patch by Dick Streefland <dick_streefland@tasking.com>.
+
+ * stdio-common/tst-ungetc.c: Add more test cases.
+
+ * sysdeps/unix/sysv/linux/Dist: Add linux_fsinfo.h.
+ * sysdeps/unix/sysv/linux/fstatvfs.c: Move filesystem magic number
+ definitions to ...
+ * sysdeps/unix/sysv/linux/linux_fsinfo.h: ...here. New file.
+ * sysdeps/unix/sysv/linux/fpathconf.c: New file.
+ * sysdeps/unix/sysv/linux/pathconf.c: New file.
+ * sysdeps/unix/sysv/linux/alpha/fpathconf.c: Handle _PC_LINK_MAX here.
+ * sysdeps/unix/sysv/linux/alpha/pathconf.c: Likewise.
+
+1998-10-20 Philip Blundell <pb@nexus.co.uk>
+
+ * sysdeps/unix/sysv/linux/arm/bits/armsigctx.h: Include
+ <asm/ptrace.h> to define struct pt_regs.
+ * sysdeps/unix/sysv/linux/arm/profil-counter.h: Don't bother
+ including <asm/ptrace.h> here.
+
+ * sysdeps/unix/sysv/linux/arm/sysdep.S: Remove spurious call to
+ C_SYMBOL_NAME macro.
+
+1998-10-23 Andreas Jaeger <aj@arthur.rhein-neckar.de>
+
+ * sysdeps/generic/sys/ptrace.h (__ptrace_request): Remove comma at
+ end of enumerator list.
+ * sysdeps/unix/sysv/linux/sys/ptrace.h (__ptrace_request): Likewise.
+ * posix/wordexp.h: Likewise.
+
+ * db/db.h: Use __PMT instead of __P in typedefs.
+ * db/mpool.h: Likewise.
+ * sysdeps/generic/bits/siginfo.h: Likewise.
+ * nis/rpcsvc/ypclnt.h: Likewise.
+
+1998-10-23 Ulrich Drepper <drepper@cygnus.com>
+
* libio/genops.c (_IO_seekmark): When switching to backup buffer
make sure all characters from the read buffer are read after
switching back to it.
diff --git a/bits/siginfo.h b/bits/siginfo.h
index 5a223e373b..e0816a9bc2 100644
--- a/bits/siginfo.h
+++ b/bits/siginfo.h
@@ -1,5 +1,5 @@
/* siginfo_t, sigevent and constants. Stub version.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998 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
@@ -185,7 +185,7 @@ typedef struct sigevent
sigval_t sigev_value;
int sigev_signo;
int sigev_notify;
- void (*sigev_notify_function) __P ((sigval_t)); /* Function to start. */
+ void (*sigev_notify_function) __PMT ((sigval_t)); /* Function to start. */
void *sigev_notify_attributes; /* Really pthread_attr_t.*/
} sigevent_t;
diff --git a/db/db.h b/db/db.h
index f00c4df9f9..8b7921f975 100644
--- a/db/db.h
+++ b/db/db.h
@@ -117,14 +117,14 @@ typedef enum { DB_BTREE, DB_HASH, DB_RECNO } DBTYPE;
/* Access method description structure. */
typedef struct __db {
DBTYPE type; /* Underlying db type. */
- int (*close) __P((struct __db *));
- int (*del) __P((const struct __db *, const DBT *, u_int));
- int (*get) __P((const struct __db *, const DBT *, DBT *, u_int));
- int (*put) __P((const struct __db *, DBT *, const DBT *, u_int));
- int (*seq) __P((const struct __db *, DBT *, DBT *, u_int));
- int (*sync) __P((const struct __db *, u_int));
+ int (*close) __PMT((struct __db *));
+ int (*del) __PMT((const struct __db *, const DBT *, u_int));
+ int (*get) __PMT((const struct __db *, const DBT *, DBT *, u_int));
+ int (*put) __PMT((const struct __db *, DBT *, const DBT *, u_int));
+ int (*seq) __PMT((const struct __db *, DBT *, DBT *, u_int));
+ int (*sync) __PMT((const struct __db *, u_int));
void *internal; /* Access method private. */
- int (*fd) __P((const struct __db *));
+ int (*fd) __PMT((const struct __db *));
} DB;
#define BTREEMAGIC 0x053162
@@ -139,9 +139,9 @@ typedef struct {
int minkeypage; /* minimum keys per page */
u_int psize; /* page size */
int (*compare) /* comparison function */
- __P((const DBT *, const DBT *));
+ __PMT((const DBT *, const DBT *));
size_t (*prefix) /* prefix function */
- __P((const DBT *, const DBT *));
+ __PMT((const DBT *, const DBT *));
int lorder; /* byte order */
} BTREEINFO;
@@ -155,7 +155,7 @@ typedef struct {
u_int nelem; /* number of elements */
u_int cachesize; /* bytes to cache */
u_int32_t /* hash function */
- (*hash) __P((const void *, size_t));
+ (*hash) __PMT((const void *, size_t));
int lorder; /* byte order */
} HASHINFO;
diff --git a/db/mpool.h b/db/mpool.h
index 56f17f90db..22c9feabd3 100644
--- a/db/mpool.h
+++ b/db/mpool.h
@@ -70,9 +70,9 @@ typedef struct MPOOL {
u_long pagesize; /* file page size */
int fd; /* file descriptor */
/* page in conversion routine */
- void (*pgin) __P((void *, pgno_t, void *));
+ void (*pgin) __PMT((void *, pgno_t, void *));
/* page out conversion routine */
- void (*pgout) __P((void *, pgno_t, void *));
+ void (*pgout) __PMT((void *, pgno_t, void *));
void *pgcookie; /* cookie for page in/out routines */
#ifdef STATISTICS
u_long cachehit;
diff --git a/inet/rcmd.c b/inet/rcmd.c
index 483e7b389d..fe73342424 100644
--- a/inet/rcmd.c
+++ b/inet/rcmd.c
@@ -553,6 +553,7 @@ __ivaliduser2(hostf, raddr, luser, ruser, rhost)
int hcheck, ucheck;
char *buf = NULL;
size_t bufsize = 0;
+ int retval = -1;
while (__getline (&buf, &bufsize, hostf) > 0) {
buf[bufsize - 1] = '\0'; /* Make sure it's terminated. */
@@ -595,7 +596,7 @@ __ivaliduser2(hostf, raddr, luser, ruser, rhost)
hcheck = __icheckhost (raddr, buf, rhost);
if (hcheck < 0)
- return -1;
+ break;
if (hcheck) {
/* Then check user part */
@@ -605,16 +606,21 @@ __ivaliduser2(hostf, raddr, luser, ruser, rhost)
ucheck = __icheckuser (user, ruser);
/* Positive 'host user' match? */
- if (ucheck > 0)
- return 0;
+ if (ucheck > 0) {
+ retval = 0;
+ break;
+ }
/* Negative 'host -user' match? */
if (ucheck < 0)
- return -1;
+ break;
/* Neither, go on looking for match */
}
}
- return -1;
+ if (buf != NULL)
+ free (buf);
+
+ return retval;
}
diff --git a/nis/rpcsvc/ypclnt.h b/nis/rpcsvc/ypclnt.h
index ed5e1e72d6..fb006c3874 100644
--- a/nis/rpcsvc/ypclnt.h
+++ b/nis/rpcsvc/ypclnt.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
@@ -53,7 +53,7 @@ __BEGIN_DECLS
/* struct ypall_callback * is the arg which must be passed to yp_all */
struct ypall_callback
{
- int (*foreach) __P ((int __status, char *__key, int __keylen,
+ int (*foreach) __PMT ((int __status, char *__key, int __keylen,
char *__val, int __vallen, char *__data));
char *data;
};
diff --git a/posix/fnmatch.h b/posix/fnmatch.h
index 0966ee301a..eeaee7fb8c 100644
--- a/posix/fnmatch.h
+++ b/posix/fnmatch.h
@@ -24,8 +24,10 @@ extern "C" {
#endif
#if defined __cplusplus || (defined __STDC__ && __STDC__) || defined WINDOWS32
-# undef __P
-# define __P(protos) protos
+# if !defined __GLIBC__ || !defined __P
+# undef __P
+# define __P(protos) protos
+# endif
#else /* Not C++ or ANSI C. */
# undef __P
# define __P(protos) ()
diff --git a/posix/glob.h b/posix/glob.h
index f4c0974011..55208e1799 100644
--- a/posix/glob.h
+++ b/posix/glob.h
@@ -24,15 +24,17 @@ extern "C" {
#undef __ptr_t
#if defined __cplusplus || (defined __STDC__ && __STDC__) || defined WINDOWS32
-# undef __P
-# undef __PMT
-# define __P(protos) protos
-# define __PMT(protos) protos
-# define __ptr_t void *
-# if !defined __GNUC__ || __GNUC__ < 2
-# undef __const
-# define __const const
+# if !defined __GLIBC__ || !defined __P
+# undef __P
+# undef __PMT
+# define __P(protos) protos
+# define __PMT(protos) protos
+# if !defined __GNUC__ || __GNUC__ < 2
+# undef __const
+# define __const const
+# endif
# endif
+# define __ptr_t void *
#else /* Not C++ or ANSI C. */
# undef __P
# undef __PMT
diff --git a/posix/wordexp.h b/posix/wordexp.h
index 2bdce27f93..5a4102b760 100644
--- a/posix/wordexp.h
+++ b/posix/wordexp.h
@@ -33,7 +33,7 @@ enum
WRDE_SHOWERR = (1 << 4), /* Don't redirect stderr to /dev/null. */
WRDE_UNDEF = (1 << 5), /* Error for expanding undefined variables. */
__WRDE_FLAGS = (WRDE_DOOFFS | WRDE_APPEND | WRDE_NOCMD |
- WRDE_REUSE | WRDE_SHOWERR | WRDE_UNDEF),
+ WRDE_REUSE | WRDE_SHOWERR | WRDE_UNDEF)
};
/* Structure describing a word-expansion run. */
diff --git a/stdio-common/tst-ungetc.c b/stdio-common/tst-ungetc.c
index ba74a84f7f..08819b7765 100644
--- a/stdio-common/tst-ungetc.c
+++ b/stdio-common/tst-ungetc.c
@@ -22,17 +22,24 @@ main (int argc, char *argv[])
name = tmpnam (NULL);
fp = fopen (name, "w");
assert (fp != NULL)
- fputs ("bl", fp);
+ fputs ("bla", fp);
fclose (fp);
fp = NULL;
fp = fopen (name, "r");
- assert (fp != NULL)
- assert (getc (fp) != EOF);
- assert ((c = getc (fp)) != EOF);
+ assert (fp != NULL);
+ assert (ungetc ('z', fp) == 'z');
+ assert (getc (fp) == 'z');
+ assert (getc (fp) == 'b');
+ assert (getc (fp) == 'l');
+ assert (ungetc ('m', fp) == 'm');
+ assert (getc (fp) == 'm');
+ assert ((c = getc (fp)) == 'a');
assert (getc (fp) == EOF);
assert (ungetc (c, fp) == c);
assert (feof (fp) == 0);
+ assert (getc (fp) == c);
+ assert (getc (fp) == EOF);
the_end:
if (fp != NULL)
diff --git a/sysdeps/generic/bits/siginfo.h b/sysdeps/generic/bits/siginfo.h
index 5a223e373b..e0816a9bc2 100644
--- a/sysdeps/generic/bits/siginfo.h
+++ b/sysdeps/generic/bits/siginfo.h
@@ -1,5 +1,5 @@
/* siginfo_t, sigevent and constants. Stub version.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998 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
@@ -185,7 +185,7 @@ typedef struct sigevent
sigval_t sigev_value;
int sigev_signo;
int sigev_notify;
- void (*sigev_notify_function) __P ((sigval_t)); /* Function to start. */
+ void (*sigev_notify_function) __PMT ((sigval_t)); /* Function to start. */
void *sigev_notify_attributes; /* Really pthread_attr_t.*/
} sigevent_t;
diff --git a/sysdeps/generic/sys/ptrace.h b/sysdeps/generic/sys/ptrace.h
index 94359175ed..47263e8dc3 100644
--- a/sysdeps/generic/sys/ptrace.h
+++ b/sysdeps/generic/sys/ptrace.h
@@ -1,5 +1,5 @@
/* `ptrace' debugger support interface. Generic version; constants are common.
- Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1992, 1996, 1998 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
@@ -119,7 +119,7 @@ enum __ptrace_request
/* Write the floating-point accelerator unit registers from
the contents of the `struct fpa_regs' at ADDR. */
- PTRACE_SETFPAREGS,
+ PTRACE_SETFPAREGS
};
/* Perform process tracing functions. REQUEST is one of the values
diff --git a/sysdeps/unix/sysv/linux/Dist b/sysdeps/unix/sysv/linux/Dist
index 411f575b91..7747c82e99 100644
--- a/sysdeps/unix/sysv/linux/Dist
+++ b/sysdeps/unix/sysv/linux/Dist
@@ -7,6 +7,7 @@ kernel_stat.h
kernel_termios.h
ldd-rewrite.sed
lddlibc4.c
+linux_fsinfo.h
llseek.c
s_pread64.c
s_pwrite64.c
diff --git a/sysdeps/unix/sysv/linux/alpha/fpathconf.c b/sysdeps/unix/sysv/linux/alpha/fpathconf.c
index d8c428dcda..b822daaf39 100644
--- a/sysdeps/unix/sysv/linux/alpha/fpathconf.c
+++ b/sysdeps/unix/sysv/linux/alpha/fpathconf.c
@@ -22,9 +22,7 @@
#include <limits.h>
#include <sys/statfs.h>
-#define EXT2_SUPER_MAGIC 0xef53
-#define UFS_MAGIC 0x00011954
-#define UFS_CIGAM 0x54190100 /* byteswapped MAGIC */
+#include <linux_fsinfo.h>
static long int default_fpathconf (int fd, int name);
@@ -55,6 +53,46 @@ __fpathconf (fd, name)
/* This filesystem supported files >2GB. */
return 64;
}
+ if (name == _PC_LINK_MAX)
+ {
+ struct statfs fsbuf;
+
+ /* Determine the filesystem type. */
+ if (__fstatfs (fd, &fsbuf) < 0)
+ /* not possible, return the default value. */
+ return LINK_MAX;
+
+ switch (fsbuf.f_type)
+ {
+ case EXT2_SUPER_MAGIC:
+ return EXT2_LINK_MAX;
+
+ case MINIX_SUPER_MAGIC:
+ case MINIX_SUPER_MAGIC2:
+ return MINIX_LINK_MAX;
+
+ case MINIX2_SUPER_MAGIC:
+ case MINIX2_SUPER_MAGIC2:
+ return MINIX2_LINK_MAX;
+
+ case XENIX_SUPER_MAGIC:
+ return XENIX_LINK_MAX;
+
+ case SYSV4_SUPER_MAGIC:
+ case SYSV2_SUPER_MAGIC:
+ return SYSV_LINK_MAX;
+
+ case COH_SUPER_MAGIC:
+ return COH_LINK_MAX;
+
+ case UFS_MAGIC:
+ case UFS_CIGAM:
+ return UFS_LINK_MAX;
+
+ default:
+ return LINK_MAX;
+ }
+ }
/* Fallback to the generic version. */
return default_fpathconf (fd, name);
diff --git a/sysdeps/unix/sysv/linux/alpha/pathconf.c b/sysdeps/unix/sysv/linux/alpha/pathconf.c
index 91ca0942fb..15910be9a1 100644
--- a/sysdeps/unix/sysv/linux/alpha/pathconf.c
+++ b/sysdeps/unix/sysv/linux/alpha/pathconf.c
@@ -23,9 +23,7 @@
#include <fcntl.h>
#include <sys/statfs.h>
-#define EXT2_SUPER_MAGIC 0xef53
-#define UFS_MAGIC 0x00011954
-#define UFS_CIGAM 0x54190100 /* byteswapped MAGIC */
+#include <linux_fsinfo.h>
static long int default_pathconf (const char *path, int name);
@@ -48,6 +46,46 @@ __pathconf (const char *path, int name)
/* This filesystem supported files >2GB. */
return 64;
}
+ if (name == _PC_LINK_MAX)
+ {
+ struct statfs fsbuf;
+
+ /* Determine the filesystem type. */
+ if (__statfs (fd, &fsbuf) < 0)
+ /* not possible, return the default value. */
+ return LINK_MAX;
+
+ switch (fsbuf.f_type)
+ {
+ case EXT2_SUPER_MAGIC:
+ return EXT2_LINK_MAX;
+
+ case MINIX_SUPER_MAGIC:
+ case MINIX_SUPER_MAGIC2:
+ return MINIX_LINK_MAX;
+
+ case MINIX2_SUPER_MAGIC:
+ case MINIX2_SUPER_MAGIC2:
+ return MINIX2_LINK_MAX;
+
+ case XENIX_SUPER_MAGIC:
+ return XENIX_LINK_MAX;
+
+ case SYSV4_SUPER_MAGIC:
+ case SYSV2_SUPER_MAGIC:
+ return SYSV_LINK_MAX;
+
+ case COH_SUPER_MAGIC:
+ return COH_LINK_MAX;
+
+ case UFS_MAGIC:
+ case UFS_CIGAM:
+ return UFS_LINK_MAX;
+
+ default:
+ return LINK_MAX;
+ }
+ }
/* Fallback to the generic version. */
return default_pathconf (path, name);
diff --git a/sysdeps/unix/sysv/linux/arm/bits/armsigctx.h b/sysdeps/unix/sysv/linux/arm/bits/armsigctx.h
index 395e194293..ba78c03a89 100644
--- a/sysdeps/unix/sysv/linux/arm/bits/armsigctx.h
+++ b/sysdeps/unix/sysv/linux/arm/bits/armsigctx.h
@@ -21,6 +21,8 @@
Fortunately 2.0 puts a magic number in the first word and this is not
a legal value for `trap_no', so we can tell them apart. */
+#include <asm/ptrace.h>
+
union k_sigcontext
{
struct
diff --git a/sysdeps/unix/sysv/linux/arm/profil-counter.h b/sysdeps/unix/sysv/linux/arm/profil-counter.h
index 55a11bd76b..a1a4fc9d7f 100644
--- a/sysdeps/unix/sysv/linux/arm/profil-counter.h
+++ b/sysdeps/unix/sysv/linux/arm/profil-counter.h