Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S262356AbUDHTdM (ORCPT ); Thu, 8 Apr 2004 15:33:12 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S262368AbUDHTdM (ORCPT ); Thu, 8 Apr 2004 15:33:12 -0400 Received: from Kiwi.CS.UCLA.EDU ([131.179.128.19]:3286 "EHLO kiwi.cs.ucla.edu") by vger.kernel.org with ESMTP id S262356AbUDHTdG (ORCPT ); Thu, 8 Apr 2004 15:33:06 -0400 To: Jim Meyering Cc: bug-coreutils@gnu.org, Andrew Morton , Bruce Allen , linux-kernel@vger.kernel.org, Andy Isaacson Subject: Re: dd PATCH: add conv=direct References: <87r7uzlzz7.fsf@penguin.cs.ucla.edu> <85k70qsp71.fsf@pi.meyering.net> From: Paul Eggert Date: Thu, 08 Apr 2004 12:32:46 -0700 In-Reply-To: <85k70qsp71.fsf@pi.meyering.net> (Jim Meyering's message of "Thu, 08 Apr 2004 13:07:30 +0200") Message-ID: <87vfkaw9i9.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1799 Lines: 49 Jim Meyering writes: > 2004-04-08 Jim Meyering > > * 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 * 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/