mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-10 05:03:06 +03:00
tst-ftell-active-handler: Open file with O_TRUNC for w modes
The test case fails to truncate the file when a file is intended to be opened in w or w+ mode. Add O_TRUNC to fix this. The test still succeeds with this change.
This commit is contained in:
@@ -1,5 +1,11 @@
|
|||||||
2914-12-04 Siddhesh Poyarekar <siddhesh@redhat.com>
|
2914-12-04 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||||
|
|
||||||
|
* libio/tst-ftell-active-handler.c (do_ftruncate_test): Add
|
||||||
|
O_TRUNC flag for w and w+ modes.
|
||||||
|
(do_rewind_test): Likewise.
|
||||||
|
(do_ftell_test): Likewise.
|
||||||
|
(do_write_test): Likewise.
|
||||||
|
|
||||||
[BZ #17647]
|
[BZ #17647]
|
||||||
* libio/fileops.c (do_ftell): Seek only when there are
|
* libio/fileops.c (do_ftell): Seek only when there are
|
||||||
unflushed writes.
|
unflushed writes.
|
||||||
|
@@ -104,8 +104,8 @@ do_ftruncate_test (const char *filename)
|
|||||||
int fd_mode;
|
int fd_mode;
|
||||||
} test_modes[] = {
|
} test_modes[] = {
|
||||||
{"r+", O_RDWR},
|
{"r+", O_RDWR},
|
||||||
{"w", O_WRONLY},
|
{"w", O_WRONLY | O_TRUNC},
|
||||||
{"w+", O_RDWR},
|
{"w+", O_RDWR | O_TRUNC},
|
||||||
{"a", O_WRONLY},
|
{"a", O_WRONLY},
|
||||||
{"a+", O_RDWR}
|
{"a+", O_RDWR}
|
||||||
};
|
};
|
||||||
@@ -189,8 +189,8 @@ do_rewind_test (const char *filename)
|
|||||||
size_t old_off;
|
size_t old_off;
|
||||||
size_t new_off;
|
size_t new_off;
|
||||||
} test_modes[] = {
|
} test_modes[] = {
|
||||||
{"w", O_WRONLY, 0, data_len},
|
{"w", O_WRONLY | O_TRUNC, 0, data_len},
|
||||||
{"w+", O_RDWR, 0, data_len},
|
{"w+", O_RDWR | O_TRUNC, 0, data_len},
|
||||||
{"r+", O_RDWR, 0, data_len},
|
{"r+", O_RDWR, 0, data_len},
|
||||||
/* The new offsets for 'a' and 'a+' modes have to factor in the
|
/* The new offsets for 'a' and 'a+' modes have to factor in the
|
||||||
previous writes since they always append to the end of the
|
previous writes since they always append to the end of the
|
||||||
@@ -294,8 +294,8 @@ do_ftell_test (const char *filename)
|
|||||||
/* In w, w+ and r+ modes, the file position should be at the
|
/* In w, w+ and r+ modes, the file position should be at the
|
||||||
beginning of the file. After the write, the offset should be
|
beginning of the file. After the write, the offset should be
|
||||||
updated to data_len. */
|
updated to data_len. */
|
||||||
{"w", O_WRONLY, 0, data_len},
|
{"w", O_WRONLY | O_TRUNC, 0, data_len},
|
||||||
{"w+", O_RDWR, 0, data_len},
|
{"w+", O_RDWR | O_TRUNC, 0, data_len},
|
||||||
{"r+", O_RDWR, 0, data_len},
|
{"r+", O_RDWR, 0, data_len},
|
||||||
/* For the 'a' mode, the initial file position should be the
|
/* For the 'a' mode, the initial file position should be the
|
||||||
current end of file. After the write, the offset has data_len
|
current end of file. After the write, the offset has data_len
|
||||||
@@ -375,8 +375,8 @@ do_write_test (const char *filename)
|
|||||||
const char *mode;
|
const char *mode;
|
||||||
int fd_mode;
|
int fd_mode;
|
||||||
} test_modes[] = {
|
} test_modes[] = {
|
||||||
{"w", O_WRONLY},
|
{"w", O_WRONLY | O_TRUNC},
|
||||||
{"w+", O_RDWR},
|
{"w+", O_RDWR | O_TRUNC},
|
||||||
{"r+", O_RDWR}
|
{"r+", O_RDWR}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user