This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH v2] tst-ftell-active-handler: Open file with O_TRUNC for w modes


On Thu, Nov 27, 2014 at 12:09:42PM +0100, Andreas Schwab wrote:
> Siddhesh Poyarekar <siddhesh@redhat.com> writes:
> 
> > The test case fails to truncate the file when a file is intended to be
> > opened in w+ mode.  Add O_TRUNC to fix this.  The test still succeeds
> > with this change.
> 
> What about the w mode?

Ugh, I assumed O_WRONLY truncates, which is obviously wrong.  Updated
patch, tested to verify that it doesn't break the test.

Siddhesh

	* 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.

commit a4585b19a10994b7462bf21f945966a270a18140
Author: Siddhesh Poyarekar <siddhesh@redhat.com>
Date:   Thu Nov 27 17:31:58 2014 +0530

    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.

diff --git a/libio/tst-ftell-active-handler.c b/libio/tst-ftell-active-handler.c
index 9f23c55..72066b4 100644
--- a/libio/tst-ftell-active-handler.c
+++ b/libio/tst-ftell-active-handler.c
@@ -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}
     };
 

Attachment: pgp6W4M6SlTxv.pgp
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]