lkml.org 
[lkml]   [2004]   [Apr]   [8]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: dd PATCH: add conv=direct
FromPaul Eggert <>
DateThu, 08 Apr 2004 12:32:46 -0700
Jim Meyering <jim@meyering.net> writes:

> 2004-04-08  Jim Meyering  <jim@meyering.net>
>
> 	* src/dd.c (set_fd_flags): Don't OR in -1 when fcntl fails.

Doesn't that fix generate worse code in the usual case, since it
causes two conditional branches instead of one?

How about this further patch?  It relies on common subexpression
elimination, but that's common these days.

2004-04-08  Paul Eggert  <eggert@twinsun.com>

	* src/dd.c (set_fd_flags): Don't test old_flags < 0 twice.

Index: src/dd.c
===================================================================
RCS file: /home/meyering/coreutils/cu/src/dd.c,v
retrieving revision 1.157
diff -p -u -r1.157 dd.c
--- src/dd.c	8 Apr 2004 15:25:39 -0000	1.157
+++ src/dd.c	8 Apr 2004 19:17:02 -0000
@@ -1014,7 +1014,7 @@ copy_with_unblock (char const *buf, size
 }
 
 /* Set the file descriptor flags for FD that correspond to the nonzero bits
-   in FLAGS.  The file's name is NAME.  */
+   in ADD_FLAGS.  The file's name is NAME.  */
 
 static void
 set_fd_flags (int fd, int add_flags, char const *name)
@@ -1022,9 +1022,9 @@ set_fd_flags (int fd, int add_flags, cha
   if (add_flags)
     {
       int old_flags = fcntl (fd, F_GETFL);
-      int new_flags = old_flags < 0 ? add_flags : (old_flags | add_flags);
       if (old_flags < 0
-	  || (new_flags != old_flags && fcntl (fd, F_SETFL, new_flags) == -1))
+	  || (old_flags != (old_flags | add_flags)
+	      && fcntl (fd, F_SETFL, old_flags | add_flags) == -1))
 	error (EXIT_FAILURE, errno, _("setting flags for %s"), quote (name));
     }
 }
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-03-22 13:02    [from the cache]
©2003-2008