From 6e04cbbe79f5965809fdbf1f28d7ae8b4af74d31 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 2 May 2011 20:59:51 -0400 Subject: [PATCH] Fix pathconf(_PC_BUF_SIZE). --- ChangeLog | 6 ++++++ NEWS | 4 ++-- sysdeps/unix/sysv/linux/pathconf.c | 14 +++++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 134fe9b..3840eeb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-05-02 Ulrich Drepper + + [BZ #12723] + * sysdeps/unix/sysv/linux/pathconf.c (__pathconf): Implement + _PC_PIPE_BUF handling. + 2011-04-30 Bruno Haible [BZ #12717] diff --git a/NEWS b/NEWS index 445a9f1..d30a8a9 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 ae597fb..375d672 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); } -- 2.7.4