diff(1) -N behaviour - Bug 233402
Fehmi Noyan ISI
fnoyanisi at yahoo.com
Thu May 28 08:17:52 UTC 2020
> On 28/05/2020, at 6:26 PM, Chris <bsd-lists at BSDforge.com> wrote:
>
> On Wed, 27 May 2020 11:06:52 +0200 Baptiste Daroussin bapt at FreeBSD.org said
>
>> On Wed, May 27, 2020 at 08:52:38PM +1200, Fehmi Noyan ISI via freebsd-hackers
>> wrote:
>> > > > > On 23/05/2020, at 11:47 PM, Yuri Pankov <ypankov at fastmail.com> wrote:
>> > > > > Fehmi Noyan ISI via freebsd-hackers wrote:
>> > >>> On 23/05/2020, at 11:21 PM, Yuri Pankov <ypankov at fastmail.com> wrote:
>> > >>> > >>> Fehmi Noyan ISI via freebsd-hackers wrote:
>> > >>>> Hiya
>> > >>>> Apparently, after we switched from GNU diff to BSD diff, the -N flag no
>> > longer assumes absent files as empty.
>> > >>>> There is a bug report about GNU diff compatibility but when I look at
>> > diff(1) man page, I see that not treating absent files as empty is intentional
>> > rather than a missing functionality.
>> > >>>> If this is not the case, I can work on patch to match to GNU diff
>> > behaviour, otherwise, this bug report can be closed I think.
>> > >>>> What’s your take on this?
>> > >>>> -N --new-file
>> > >>>> If a file is found in only one directory, act as if it was found
>> > >>>> in the other directory too but was of zero size.
>> > >>>> man for GNU diff
>> > >>>> -N, --new-file
>> > >>>> treat absent files as empty
>> > >>> > >>> I think both descriptions say the same, i.e. "zero size" == "empty”?
>> > >> Maybe it’s my interpretation, but if you do not supply the second
>> > argument to diff(1), it complains
>> > >> $ echo “test” > a.txt
>> > >> $ diff -N a.txt nofile
>> > >> diff: nofile: No such file or directory
>> > >> $
>> > >> GNU diff assumes an empty file for the missing second file and makes the
>> > comparison
>> > >> $ echo “test” > a.txt
>> > >> $ diff -N a.txt nofile
>> > >> 1d0
>> > >> < test
>> > >> $
>> > > > > I must admit that I never used -N without -r, so it's probably the only
>> > case that needs fixing?
>> > > > > $ mkdir a b
>> > > $ echo bar > a/foo
>> > > $ diff -ruN a b
>> > > diff -ruN a/foo b/foo
>> > > --- a/foo 2020-05-23 14:44:34.525932000 +0300
>> > > +++ b/foo 1970-01-01 03:00:00.000000000 +0300
>> > > @@ -1 +0,0 @@
>> > > -bar
>> > > > > Took me a while to reply…
>> > With -N, GNU diff does not give an ENOENT
>> > > % echo foo > bar
>> > % diff bar nofile.txt
>> > diff: nofile.txt no such file or directory
>> > % diff -N bar nofile.txt
>> > 1d0
>> > < foo
>> > > Do we want BSD diff do the same, i.e. match the -N functionality of GNU
>> > diff?
>> > Yes we do,
> Why? If someone wants a GNU diff. Can't they simply install it? If
> FreeBSD diff is to become like GNU diff, what's the point of having
> a FreeBSD version.
> Apologies in advance if I'm missing anything here.
>
> Thanks.
>
> --Chris
>> if you do provide a patch I would be more than happy to review
>> and
>> apply it.
>> Best regards,
>> Bapt
>
>
Maybe I should have said “from functionality” wise. We are not changing the behaviour of diff(1) for the sake of being like GNU diff.
diff(1) has an -N flag and it is not short of any capabilities in that regard. However, there are minor differences in some edge cases, which, IMO, GNU diff behaves slightly looser than diff(1).
Hence the question was asked in this mailing list; we are not missing anything but do we want to have that extra functionality in diff(1)?
More information about the freebsd-hackers
mailing list