diff(1) -N behaviour - Bug 233402

Fehmi Noyan ISI fnoyanisi at yahoo.com
Wed May 27 08:52:49 UTC 2020



> 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?

Fehmi







More information about the freebsd-hackers mailing list