diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/pathconf.c | 14 |
3 files changed, 21 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index 134fe9b49d..3840eeb9b3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-05-02 Ulrich Drepper <drepper@gmail.com> + + [BZ #12723] + * sysdeps/unix/sysv/linux/pathconf.c (__pathconf): Implement + _PC_PIPE_BUF handling. + 2011-04-30 Bruno Haible <bruno@clisp.org> [BZ #12717] diff --git a/NEWS b/NEWS index 445a9f1790..d30a8a97b7 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -GNU C Library NEWS -- history of user-visible changes. 2011-5-1 +GNU C Library NEWS -- history of user-visible changes. 2011-5-2 Copyright (C) 1992-2009, 2010, 2011 Free Software Foundation, Inc. See the end for copying conditions. @@ -19,7 +19,7 @@ Version 2.14 * The following bugs are resolved with this release: 11724, 12420, 12445, 12454, 12460, 12469, 12489, 12509, 12510, 12518, 12583, - 12587, 12597, 12631, 12650, 12653, 12655, 12685, 12717 + 12587, 12597, 12631, 12650, 12653, 12655, 12685, 12717, 12723 Version 2.13 diff --git a/sysdeps/unix/sysv/linux/pathconf.c b/sysdeps/unix/sysv/linux/pathconf.c index ae597fb5ba..375d672925 100644 --- a/sysdeps/unix/sysv/linux/pathconf.c +++ b/sysdeps/unix/sysv/linux/pathconf.c @@ -1,5 +1,5 @@ /* Get file-specific information about a file. Linux version. - Copyright (C) 1991,1995,1996,1998-2003,2008,2010 Free Software Foundation, Inc. + Copyright (C) 1991,1995,1996,1998-2003,2008,2010,2011 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 @@ -36,6 +36,7 @@ long int __pathconf (const char *file, int name) { struct statfs fsbuf; + int fd; switch (name) { @@ -51,6 +52,17 @@ __pathconf (const char *file, int name) case _PC_CHOWN_RESTRICTED: return __statfs_chown_restricted (__statfs (file, &fsbuf), &fsbuf); + case _PC_PIPE_BUF: + fd = open_not_cancel_2 (file, O_RDONLY|O_NONBLOCK); + 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); } |