diff(1) -N behaviour - Bug 233402

Yuri Pankov ypankov at fastmail.com
Sat May 23 11:47:39 UTC 2020


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


More information about the freebsd-hackers mailing list