Readd O_LARGEFILE flag for openat64 (bug 18781)

This commit is contained in:
Andreas Schwab 2015-08-10 14:12:47 +02:00
parent d0649b2d8e
commit eb32b0d403
4 changed files with 33 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2015-08-10 Andreas Schwab <schwab@suse.de>
[BZ #18781]
* sysdeps/unix/sysv/linux/openat.c (__OPENAT) [MORE_OFLAGS]: Add
MORE_OFLAGS to oflag.
* io/test-lfs.c (do_test): Test openat64.
2015-08-10 Joseph Myers <joseph@codesourcery.com>
[BZ #18789]

2
NEWS
View File

@ -10,7 +10,7 @@ Version 2.23
* The following bugs are resolved with this release:
16517, 16519, 17905, 18265, 18480, 18525, 18618, 18647, 18661, 18674,
18787, 18789.
18781, 18787, 18789.
Version 2.22

View File

@ -144,7 +144,7 @@ test_ftello (void)
int
do_test (int argc, char *argv[])
{
int ret;
int ret, fd2;
struct stat64 statbuf;
ret = lseek64 (fd, TWO_GB+100, SEEK_SET);
@ -195,6 +195,25 @@ do_test (int argc, char *argv[])
error (EXIT_FAILURE, 0, "stat reported size %lld instead of %lld.",
(long long int) statbuf.st_size, (TWO_GB + 100 + 5));
fd2 = openat64 (AT_FDCWD, name, O_RDWR);
if (fd2 == -1)
{
if (errno == ENOSYS)
{
/* Silently ignore this test. */
error (0, 0, "openat64 is not supported");
}
else
error (EXIT_FAILURE, errno, "openat64 failed to open big file");
}
else
{
ret = close (fd2);
if (ret == -1)
error (EXIT_FAILURE, errno, "error closing file");
}
test_ftello ();
return 0;

View File

@ -68,6 +68,11 @@ __OPENAT (int fd, const char *file, int oflag, ...)
va_end (arg);
}
/* We have to add the O_LARGEFILE flag for openat64. */
#ifdef MORE_OFLAGS
oflag |= MORE_OFLAGS;
#endif
return SYSCALL_CANCEL (openat, fd, file, oflag, mode);
}
libc_hidden_def (__OPENAT)