diff(1) -N behaviour - Bug 233402

Baptiste Daroussin bapt at FreeBSD.org
Wed May 27 09:06:54 UTC 2020


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, if you do provide a patch I would be more than happy to review and
apply it.

Best regards,
Bapt
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20200527/d56d569b/attachment.sig>


More information about the freebsd-hackers mailing list