]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 23 Oct 1998 13:44:50 +0000 (13:44 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 23 Oct 1998 13:44:50 +0000 (13:44 +0000)
* 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>

24 files changed:
ChangeLog
bits/siginfo.h
db/db.h
db/mpool.h
inet/rcmd.c
nis/rpcsvc/ypclnt.h
posix/fnmatch.h
posix/glob.h
posix/wordexp.h
stdio-common/tst-ungetc.c
sysdeps/generic/bits/siginfo.h
sysdeps/generic/sys/ptrace.h
sysdeps/unix/sysv/linux/Dist
sysdeps/unix/sysv/linux/alpha/fpathconf.c
sysdeps/unix/sysv/linux/alpha/pathconf.c
sysdeps/unix/sysv/linux/arm/bits/armsigctx.h
sysdeps/unix/sysv/linux/arm/profil-counter.h
sysdeps/unix/sysv/linux/arm/sysdep.S
sysdeps/unix/sysv/linux/fpathconf.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/fstatvfs.c
sysdeps/unix/sysv/linux/linux_fsinfo.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/pathconf.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/sys/ptrace.h
version.h

index a2f3c66c4387dd304f0b5abb731f7dedae32d8d7..f6a345de1486c5b1fc8ab33388af2c1e6e8373ef 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,46 @@
+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
index 5a223e373beaf93c0535e0e0acefc7ef1415676c..e0816a9bc2033f5faa7d4e59b331205cbae79340 100644 (file)
@@ -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 f00c4df9f9acf5f23e47b0b89fe37036f58d2b42..8b7921f975a89de1e4149f907dd3eef5cf3e18ad 100644 (file)
--- 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;
 
index 56f17f90dbdd0da8e1f6d4596be45599f169dbfe..22c9feabd3586e2faee6380bb116884c3b0eba7c 100644 (file)
@@ -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;
index 483e7b389dc262330b976073134a19bbfd36c702..fe733424242e15bd3908a7567d3b861e2a611ac1 100644 (file)
@@ -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;
 }
index ed5e1e72d6c209a8ce7b83eeaf477b8ed3876d61..fb006c3874c65042a9b8faac4afd5f66aeb9aa62 100644 (file)
@@ -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;
   };
index 0966ee301acb7574dcb5d981c3fc33b97f53c088..eeaee7fb8c36e2f1ca73ef82d09d4e2906d85e62 100644 (file)
@@ -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)   ()
index f4c0974011402427e1b0aa10bd6659b88b8ef9f2..55208e17995c04f84e8ec2127d345eb75523a454 100644 (file)
@@ -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
index 2bdce27f935e8a788c2350a2aace5d5f0e4a8b59..5a4102b760456e1f70fd589890f946fa8050e631 100644 (file)
@@ -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.  */
index ba74a84f7f015b0f683578da71f57c8340f4a389..08819b77658af6f69302d7240578bb9c5b098b70 100644 (file)
@@ -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)
index 5a223e373beaf93c0535e0e0acefc7ef1415676c..e0816a9bc2033f5faa7d4e59b331205cbae79340 100644 (file)
@@ -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;
 
index 94359175ed61d50c789131b3b70ee5052d7406e5..47263e8dc349eebc86305cdffee48a03c30e897b 100644 (file)
@@ -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
index 411f575b91a0722afd0deb640d39e93729926626..7747c82e99c646b59a675f643e1224a7ad113bee 100644 (file)
@@ -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
index d8c428dcdae244198353aea8296d0926482c740e..b822daaf395220544cebc4ac18475dcb1bb1224f 100644 (file)
@@ -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);
index 91ca0942fb6bcd4ef5d625c380f7f82975e2806f..15910be9a137e10ce8adb73cb5baad32b9317cc5 100644 (file)
@@ -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);
index 395e194293f8bc0f982b50e5a46f9c741e1d60a3..ba78c03a898a38000b0cf096582993994ddae592 100644 (file)
@@ -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
index 55a11bd76be7ed0710390b1ff98ee1b7debef0bb..a1a4fc9d7f5e3946478ad1f427f34796900e9c25 100644 (file)
@@ -18,7 +18,6 @@
    Boston, MA 02111-1307, USA.  */
 
 #include <signal.h>
-#include <asm/ptrace.h>
 #include <bits/armsigctx.h>
 
 void
index 872ed4b555c6ca9e5ddae03311d0523ead44adba..3e3c853c788ffa2cdf652e5fdf3119bb3c261581 100644 (file)
@@ -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 (file)
index 0000000..81ddef3
--- /dev/null
@@ -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>
index 43bab445430d25787092ed4e900a3345d96a0aaf..11f6f8eb44fa7943abd8fe5dfdbedd1addd47960 100644 (file)
 #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 (file)
index 0000000..9dfb034
--- /dev/null
@@ -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 (file)
index 0000000..dcf87d5
--- /dev/null
@@ -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>
index 6c5d580d7b9d35f16c5be950ec80e6fa4a66e0f2..5b670668bf5022c10bcddac5f663112aa196604b 100644 (file)
@@ -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
 };
 
index 8e8bc1ec2df22ade742fe20e449c2f08fadcd95d..7bf9713fff5f4c87a62a08b1ec8ed85a215f7cff 100644 (file)
--- 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"