mirror of
git://sourceware.org/git/glibc.git
synced 2025-02-17 13:00:43 +08:00
Use statvfs64() for pathconf(_PC_NAME_MAX).
pathconf(_PC_NAME_MAX) was implemented on top of statfs(). The 32bit version therefore fails EOVERFLOW if the filesystem blockcount is sufficiently large. Most pathconf() queries use statvfs64(), which avoids this issue. This patch modifies pathconf(_PC_NAME_MAX) to do likewise.
This commit is contained in:
parent
01f8eac224
commit
a88ddc902b
@ -1,3 +1,9 @@
|
||||
2014-04-09 Peter Brett <peter@peter-b.co.uk>
|
||||
|
||||
[BZ #15514]
|
||||
* sysdeps/posix/pathconf.c (__pathconf): Use statvfs64() for
|
||||
pathconf(_PC_NAME_MAX).
|
||||
|
||||
2014-04-09 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
|
||||
|
||||
* nptl/sysdeps/pthread/pthread.h (__PTHREAD_MUTEX_HAVE_ELISION):
|
||||
|
12
NEWS
12
NEWS
@ -9,12 +9,12 @@ Version 2.20
|
||||
|
||||
* The following bugs are resolved with this release:
|
||||
|
||||
6804, 13347, 15347, 15804, 15894, 16002, 16198, 16284, 16348, 16349,
|
||||
16357, 16362, 16447, 16532, 16545, 16574, 16599, 16600, 16609, 16610,
|
||||
16611, 16613, 16623, 16632, 16634, 16639, 16642, 16648, 16649, 16670,
|
||||
16674, 16677, 16680, 16683, 16689, 16695, 16701, 16706, 16707, 16712,
|
||||
16713, 16714, 16731, 16739, 16743, 16758, 16759, 16760, 16770, 16786,
|
||||
16789, 16799, 16800, 16815.
|
||||
6804, 13347, 15347, 15514, 15804, 15894, 16002, 16198, 16284, 16348,
|
||||
16349, 16357, 16362, 16447, 16532, 16545, 16574, 16599, 16600, 16609,
|
||||
16610, 16611, 16613, 16623, 16632, 16634, 16639, 16642, 16648, 16649,
|
||||
16670, 16674, 16677, 16680, 16683, 16689, 16695, 16701, 16706, 16707,
|
||||
16712, 16713, 16714, 16731, 16739, 16743, 16758, 16759, 16760, 16770,
|
||||
16786, 16789, 16799, 16800, 16815.
|
||||
|
||||
* Running the testsuite no longer terminates as soon as a test fails.
|
||||
Instead, a file tests.sum (xtests.sum from "make xcheck") is generated,
|
||||
|
@ -65,10 +65,10 @@ __pathconf (const char *path, int name)
|
||||
case _PC_NAME_MAX:
|
||||
#ifdef NAME_MAX
|
||||
{
|
||||
struct statfs buf;
|
||||
struct statvfs64 sv;
|
||||
int save_errno = errno;
|
||||
|
||||
if (__statfs (path, &buf) < 0)
|
||||
if (__statvfs64 (path, &sv) < 0)
|
||||
{
|
||||
if (errno == ENOSYS)
|
||||
{
|
||||
@ -79,15 +79,7 @@ __pathconf (const char *path, int name)
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef _STATFS_F_NAMELEN
|
||||
return buf.f_namelen;
|
||||
#else
|
||||
# ifdef _STATFS_F_NAME_MAX
|
||||
return buf.f_name_max;
|
||||
# else
|
||||
return NAME_MAX;
|
||||
# endif
|
||||
#endif
|
||||
return sv.f_namemax;
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
Loading…
Reference in New Issue
Block a user