]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Handle _PC_LINK_MAX here.
authorUlrich Drepper <drepper@redhat.com>
Fri, 23 Oct 1998 13:41:33 +0000 (13:41 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 23 Oct 1998 13:41:33 +0000 (13:41 +0000)
sysdeps/unix/sysv/linux/alpha/fpathconf.c
sysdeps/unix/sysv/linux/alpha/pathconf.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);