tst-ftell-active-handler: Open file with O_TRUNC for w modes
authorSiddhesh Poyarekar <siddhesh@redhat.com>
Thu, 4 Dec 2014 02:41:07 +0000 (08:11 +0530)
committerSiddhesh Poyarekar <siddhesh@redhat.com>
Thu, 4 Dec 2014 02:41:07 +0000 (08:11 +0530)
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.

ChangeLog
libio/tst-ftell-active-handler.c

index 83048e1..1bd4b23 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 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]
        * libio/fileops.c (do_ftell): Seek only when there are
        unflushed writes.
index 9f23c55..72066b4 100644 (file)
@@ -104,8 +104,8 @@ do_ftruncate_test (const char *filename)
       int fd_mode;
     } test_modes[] = {
          {"r+", O_RDWR},
-         {"w", O_WRONLY},
-         {"w+", O_RDWR},
+         {"w", O_WRONLY | O_TRUNC},
+         {"w+", O_RDWR | O_TRUNC},
          {"a", O_WRONLY},
          {"a+", O_RDWR}
     };
@@ -189,8 +189,8 @@ do_rewind_test (const char *filename)
       size_t old_off;
       size_t new_off;
     } test_modes[] = {
-         {"w", O_WRONLY, 0, data_len},
-         {"w+", O_RDWR, 0, data_len},
+         {"w", O_WRONLY | O_TRUNC, 0, data_len},
+         {"w+", O_RDWR | O_TRUNC, 0, data_len},
          {"r+", O_RDWR, 0, data_len},
          /* The new offsets for 'a' and 'a+' modes have to factor in 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
             beginning of the file.  After the write, the offset should be
             updated to data_len.  */
-         {"w", O_WRONLY, 0, data_len},
-         {"w+", O_RDWR, 0, data_len},
+         {"w", O_WRONLY | O_TRUNC, 0, data_len},
+         {"w+", O_RDWR | O_TRUNC, 0, data_len},
          {"r+", O_RDWR, 0, data_len},
          /* For the 'a' mode, the initial file position should be the
             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;
       int fd_mode;
     } test_modes[] = {
-         {"w", O_WRONLY},
-         {"w+", O_RDWR},
+         {"w", O_WRONLY | O_TRUNC},
+         {"w+", O_RDWR | O_TRUNC},
          {"r+", O_RDWR}
     };