summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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
@@ -18,7 +18,6 @@
Boston, MA 02111-1307, USA. */
#include <signal.h>
-#include <asm/ptrace.h>
#include <bits/armsigctx.h>
void
diff --git a/sysdeps/unix/sysv/linux/arm/sysdep.S b/sysdeps/unix/sysv/linux/arm/sysdep.S
index 872ed4b555..3e3c853c78 100644
--- a/sysdeps/unix/sysv/linux/arm/sysdep.S
+++ b/sysdeps/unix/sysv/linux/arm/sysdep.S
@@ -24,7 +24,7 @@
.type C_SYMBOL_NAME(errno),%object
.size C_SYMBOL_NAME(errno),4
C_SYMBOL_NAME(errno): .zero 4
-weak_alias (C_SYMBOL_NAME(errno), C_SYMBOL_NAME(_errno))
+weak_alias (errno, _errno)
.text
/* The syscall stubs jump here when they detect an error.
diff --git a/sysdeps/unix/sysv/linux/fpathconf.c b/sysdeps/unix/sysv/linux/fpathconf.c
new file mode 100644
index 0000000000..81ddef3944
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/fpathconf.c
@@ -0,0 +1,80 @@
+/* Linux specific extensions to fpathconf.
+ Copyright (C) 1991, 1995, 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
+ 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. */
+
+#include <unistd.h>
+#include <limits.h>
+#include <sys/statfs.h>
+
+#include "linux_fsinfo.h"
+
+static long int posix_fpathconf (int fd, int name);
+
+
+/* Get file-specific information about descriptor FD. */
+long int
+__fpathconf (fd, name)
+ int fd;
+ int name;
+{
+ 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;
+ }
+ }
+
+ return posix_fpathconf (fd, name);
+}
+
+#define __fpathconf static posix_fpathconf
+#include <sysdeps/posix/fpathconf.c>
diff --git a/sysdeps/unix/sysv/linux/fstatvfs.c b/sysdeps/unix/sysv/linux/fstatvfs.c
index 43bab44543..11f6f8eb44 100644
--- a/sysdeps/unix/sysv/linux/fstatvfs.c
+++ b/sysdeps/unix/sysv/linux/fstatvfs.c
@@ -26,31 +26,7 @@
#include <sys/statfs.h>
#include <sys/statvfs.h>
-/* These definitions come from the kernel headers. But we cannot
- include the headers here because of type clashes. If new
- filesystem types will become available we have to add the
- appropriate definitions here.*/
-#define ADFS_SUPER_MAGIC 0xadf5
-#define AFFS_SUPER_MAGIC 0xadff
-#define CODA_SUPER_MAGIC 0x73757245
-#define EXT2_SUPER_MAGIC 0xef53
-#define HPFS_SUPER_MAGIC 0xf995e849
-#define ISOFS_SUPER_MAGIC 0x9660
-#define MINIX_SUPER_MAGIC 0x137f
-#define MINIX_SUPER_MAGIC2 0x138F
-#define MINIX2_SUPER_MAGIC 0x2468
-#define MINIX2_SUPER_MAGIC2 0x2478
-#define MSDOS_SUPER_MAGIC 0x4d44
-#define NCP_SUPER_MAGIC 0x564c
-#define NFS_SUPER_MAGIC 0x6969
-#define PROC_SUPER_MAGIC 0x9fa0
-#define SMB_SUPER_MAGIC 0x517b
-#define XENIX_SUPER_MAGIC 0x012ff7b4
-#define SYSV4_SUPER_MAGIC 0x012ff7b5
-#define SYSV2_SUPER_MAGIC 0x012ff7b6
-#define COH_SUPER_MAGIC 0x012ff7b7
-#define UFS_MAGIC 0x00011954
-#define UFS_CIGAM 0x54190100 /* byteswapped MAGIC */
+#include "linux_fsinfo.h"
int
diff --git a/sysdeps/unix/sysv/linux/linux_fsinfo.h b/sysdeps/unix/sysv/linux/linux_fsinfo.h
new file mode 100644
index 0000000000..9dfb034b7d
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/linux_fsinfo.h
@@ -0,0 +1,58 @@
+/* Constants from kernel header for various FSes.
+ Copyright (C) 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
+ 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 _LINUX_FSINFO_H
+#define _LINUX_FSINFO_H 1
+
+/* These definitions come from the kernel headers. But we cannot
+ include the headers here because of type clashes. If new
+ filesystem types will become available we have to add the
+ appropriate definitions here.*/
+#define ADFS_SUPER_MAGIC 0xadf5
+#define AFFS_SUPER_MAGIC 0xadff
+#define CODA_SUPER_MAGIC 0x73757245
+#define EXT2_SUPER_MAGIC 0xef53
+#define HPFS_SUPER_MAGIC 0xf995e849
+#define ISOFS_SUPER_MAGIC 0x9660
+#define MINIX_SUPER_MAGIC 0x137f
+#define MINIX_SUPER_MAGIC2 0x138F
+#define MINIX2_SUPER_MAGIC 0x2468
+#define MINIX2_SUPER_MAGIC2 0x2478
+#define MSDOS_SUPER_MAGIC 0x4d44
+#define NCP_SUPER_MAGIC 0x564c
+#define NFS_SUPER_MAGIC 0x6969
+#define PROC_SUPER_MAGIC 0x9fa0
+#define SMB_SUPER_MAGIC 0x517b
+#define XENIX_SUPER_MAGIC 0x012ff7b4
+#define SYSV4_SUPER_MAGIC 0x012ff7b5
+#define SYSV2_SUPER_MAGIC 0x012ff7b6
+#define COH_SUPER_MAGIC 0x012ff7b7
+#define UFS_MAGIC 0x00011954
+#define UFS_CIGAM 0x54190100 /* byteswapped MAGIC */
+
+/* Maximum link counts. */
+#define EXT2_LINK_MAX 32000
+#define MINIX_LINK_MAX 250
+#define MINIX2_LINK_MAX 65530
+#define XENIX_LINK_MAX 126 /* ?? */
+#define SYSV_LINK_MAX 126 /* 127? 251? */
+#define COH_LINK_MAX 10000
+#define UFS_LINK_MAX EXT2_LINK_MAX
+
+#endif /* linux_fsinfo.h */
diff --git a/sysdeps/unix/sysv/linux/pathconf.c b/sysdeps/unix/sysv/linux/pathconf.c
new file mode 100644
index 0000000000..dcf87d5284
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/pathconf.c
@@ -0,0 +1,80 @@
+/* Linux specific extensions to pathconf.
+ Copyright (C) 1991, 1995, 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
+ 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. */
+
+#include <unistd.h>
+#include <limits.h>
+#include <sys/statfs.h>
+
+#include "linux_fsinfo.h"
+
+static long int posix_pathconf (const char *path, int name);
+
+
+/* Get file-specific information about descriptor FD. */
+long int
+__pathconf (path, name)
+ const char *path;
+ int name;
+{
+ if (name == _PC_LINK_MAX)
+ {
+ struct statfs fsbuf;
+
+ /* Determine the filesystem type. */
+ if (__statfs (path, &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;
+ }
+ }
+
+ return posix_pathconf (path, name);
+}
+
+#define __pathconf static posix_pathconf
+#include <sysdeps/posix/pathconf.c>
diff --git a/sysdeps/unix/sysv/linux/sys/ptrace.h b/sysdeps/unix/sysv/linux/sys/ptrace.h
index 6c5d580d7b..5b670668bf 100644
--- a/sysdeps/unix/sysv/linux/sys/ptrace.h
+++ b/sysdeps/unix/sysv/linux/sys/ptrace.h
@@ -99,7 +99,7 @@ enum __ptrace_request
#define PT_DETACH PTRACE_DETACH
/* Continue and stop at the next (return from) syscall. */
- PTRACE_SYSCALL = 24,
+ PTRACE_SYSCALL = 24
#define PTRACE_SYSCALL PTRACE_SYSCALL
};
diff --git a/version.h b/version.h
index 8e8bc1ec2d..7bf9713fff 100644
--- a/version.h
+++ b/version.h
@@ -1,4 +1,4 @@
/* This file just defines the current version number of libc. */
#define RELEASE "experimental"
-#define VERSION "2.0.98"
+#define VERSION "2.0.99"