/* Get file-specific information about FILE. */ long int __pathconf (const char *file, int name) { struct statfs fsbuf; int fd; int flags; switch (name) { case _PC_LINK_MAX: return __statfs_link_max (__statfs (file, &fsbuf), &fsbuf, file, -1); case _PC_FILESIZEBITS: return __statfs_filesize_max (__statfs (file, &fsbuf), &fsbuf); case _PC_2_SYMLINKS: return __statfs_symlinks (__statfs (file, &fsbuf), &fsbuf); case _PC_CHOWN_RESTRICTED: return __statfs_chown_restricted (__statfs (file, &fsbuf), &fsbuf); case _PC_PIPE_BUF: flags = O_RDONLY|O_NONBLOCK|O_NOCTTY; #ifdef O_CLOEXEC flags |= O_CLOEXEC; #endif fd = open_not_cancel_2 (file, flags); if (fd >= 0) { long int r = __fcntl (fd, F_GETPIPE_SZ); close_not_cancel_no_status (fd); if (r > 0) return r; } /* FALLTHROUGH */ default: return posix_pathconf (file, name); } }
/* Get file-specific information about FILE. */ long int __pathconf (const char *file, int name) { struct statfs fsbuf; switch (name) { case _PC_LINK_MAX: return __statfs_link_max (__statfs (file, &fsbuf), &fsbuf); case _PC_FILESIZEBITS: return __statfs_filesize_max (__statfs (file, &fsbuf), &fsbuf); case _PC_2_SYMLINKS: return __statfs_symlinks (__statfs (file, &fsbuf), &fsbuf); case _PC_CHOWN_RESTRICTED: return __statfs_chown_restricted (__statfs (file, &fsbuf), &fsbuf); default: return posix_pathconf (file, name); } }