From owner-freebsd-bugs@FreeBSD.ORG Wed Jun 20 19:50:13 2012 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CD76B106566B for ; Wed, 20 Jun 2012 19:50:13 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 9E4DB8FC12 for ; Wed, 20 Jun 2012 19:50:13 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q5KJoDVl019175 for ; Wed, 20 Jun 2012 19:50:13 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q5KJoDxP019174; Wed, 20 Jun 2012 19:50:13 GMT (envelope-from gnats) Date: Wed, 20 Jun 2012 19:50:13 GMT Message-Id: <201206201950.q5KJoDxP019174@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: Garrett Cooper Cc: Subject: Re: bin/169274: [patch] diff exit code always reports "trouble" when there are differences between 2 files X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Garrett Cooper List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jun 2012 19:50:13 -0000 The following reply was made to PR bin/169274; it has been noted by GNATS. From: Garrett Cooper To: Xin LI Cc: freebsd-gnats-submit@freebsd.org Subject: Re: bin/169274: [patch] diff exit code always reports "trouble" when there are differences between 2 files Date: Wed, 20 Jun 2012 12:44:04 -0700 On Wed, Jun 20, 2012 at 12:34 PM, Garrett Cooper wrote= : > On Wed, Jun 20, 2012 at 12:13 PM, Xin LI wrote: >>> $ diff valid.output unittest.dip >/dev/null >>> $ echo $? >>> 2 >> >> I tried a few possible permutations and got expected result (when file >> is not accessible I got 2, and otherwise 1), except the case that one >> file is binary. =A0It's not clear to me whether this is a bug or a >> feature, as our diff(1) does not have a RETURN VALUE section. > > This is what I was referring to: > > =A0 =A0 =A0 FILES =A0are =A0`FILE1 =A0FILE2' =A0or `DIR1 DIR2' or `DIR FI= LE...' or `FILE... > =A0 =A0 =A0 DIR'. =A0If --from-file or --to-file is given, there are no = =A0restrictions > =A0 =A0 =A0 on =A0FILES. =A0If a FILE is `-', read standard input. =A0Exi= t status is 0 if > =A0 =A0 =A0 inputs are the same, 1 if different, 2 if trouble. > > The definition of "trouble" here is unnecessarily ambiguous. I > interpret trouble to be: > 1. open failure. > 2. stat failure. > 3. read failure. > etc. > > Comparing a binary file and text file does not constitute "trouble" -- > they're just different. > > It concerns me because there's a fine line -- in some cases -- between > binary and text files, depending on the content in the file (I'm > thinking of .shar files for instance or uuencoded scripts). > >> With your proposed change, diff no longer distinguishes "trouble outputt= ing >> the diff because at least one file is binary and you don't know it" >> and "I know it's binary (--brief) or I know what I am doing (--text), >> just let me know if there is difference", which sounds like a >> regression IMHO. > > Ok. That was the difference (binary vs text): > > $ file valid.output unittest.dip > valid.output: ASCII text > unittest.dip: data > > Where is that requirement mentioned in the manpage though? I can't > find it in the GNU diffutils manpage. > > If this is a BSD diff requirement, then it's doing something clearly > different from GNU diff implementation. Whether or not the BSD > implementation has to conform is another thing entirely, but it would > be nice to keep the inconsistencies down to a minimum if at all > possible. Classic Garrett and screwing up context -- there's only one diff in base and it's GNU diff. Thanks, -Garrett