diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-03-14 06:28:45 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-03-14 06:28:45 +0000 |
commit | 564cd8b67ec487fe090c8ead2fb93be91959985d (patch) | |
tree | a45ad932a67e2684648c3065026c66166006827e /sysdeps/unix/sysv/linux/pathconf.h | |
parent | (allocate_stack): If MULTI_PAGE_ALIASING is defined and the size of the stack... (diff) | |
download | glibc-564cd8b67ec487fe090c8ead2fb93be91959985d.tar.gz glibc-564cd8b67ec487fe090c8ead2fb93be91959985d.tar.bz2 glibc-564cd8b67ec487fe090c8ead2fb93be91959985d.zip |
Update.
2003-03-13 Ulrich Drepper <drepper@redhat.com>
* posix/getconf.c: Recognize POSIX2_SYMLINKS.
* sysdeps/generic/bits/confname.h: Define _PC_2_SYMLINKS.
* sysdeps/posix/fpathconf.c: Handle _PC_2_SYMLINKS.
* sysdeps/posix/pathconf.c: Likewise.
* sysdeps/unix/sysv/linux/fpathconf.c: Likewise.
* sysdeps/unix/sysv/linux/pathconf.c: Likewise.
* sysdeps/unix/sysv/linux/pathconf.h: Define statfs_symlinks.
* sysdeps/unix/sysv/linux/linux_fsinfo.h: Define some more magic
words.
Diffstat (limited to 'sysdeps/unix/sysv/linux/pathconf.h')
-rw-r--r-- | sysdeps/unix/sysv/linux/pathconf.h | 41 |
1 files changed, 38 insertions, 3 deletions
diff --git a/sysdeps/unix/sysv/linux/pathconf.h b/sysdeps/unix/sysv/linux/pathconf.h index b7f201d436..80ec8fa4e0 100644 --- a/sysdeps/unix/sysv/linux/pathconf.h +++ b/sysdeps/unix/sysv/linux/pathconf.h @@ -1,5 +1,5 @@ /* Common parts of Linux implementation of pathconf and fpathconf. - Copyright (C) 1991,95,96,98,99,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1991,1995,1996,1998-2002,2003 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 @@ -22,8 +22,8 @@ #include <sys/statfs.h> #include "linux_fsinfo.h" -/* Used like: return statfs_link_max (__statfs (name, &buf), &buf); */ +/* Used like: return statfs_link_max (__statfs (name, &buf), &buf); */ static inline long int statfs_link_max (int result, const struct statfs *fsbuf) { @@ -75,8 +75,8 @@ statfs_link_max (int result, const struct statfs *fsbuf) } } -/* Used like: return statfs_filesize_max (__statfs (name, &buf), &buf); */ +/* Used like: return statfs_filesize_max (__statfs (name, &buf), &buf); */ static inline long int statfs_filesize_max (int result, const struct statfs *fsbuf) { @@ -114,3 +114,38 @@ statfs_filesize_max (int result, const struct statfs *fsbuf) return 32; } } + + +/* Used like: return statfs_link_max (__statfs (name, &buf), &buf); */ +static inline long int +statfs_symlinks (int result, const struct statfs *fsbuf) +{ + if (result < 0) + { + if (errno == ENOSYS) + /* Not possible, return the default value. */ + return 1; + + /* Some error occured. */ + return -1; + } + + switch (fsbuf->f_type) + { + case ADFS_SUPER_MAGIC: + case BFS_MAGIC: + case CRAMFS_MAGIC: + case DEVPTS_SUPER_MAGIC: + case EFS_SUPER_MAGIC: + case EFS_MAGIC: + case MSDOS_SUPER_MAGIC: + case NTFS_SUPER_MAGIC: + case QNX4_SUPER_MAGIC: + case ROMFS_SUPER_MAGIC: + /* No symlink support. */ + return 0; + + default: + return 1; + } +} |