diff(1) -N behaviour - Bug 233402
Fehmi Noyan ISI
fnoyanisi at yahoo.com
Wed May 27 09:11:13 UTC 2020
> On 27/05/2020, at 9:06 PM, Baptiste Daroussin <bapt at FreeBSD.org> wrote:
>
> 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
Cheers…
I will be working on it and update bug 233402
More information about the freebsd-hackers
mailing list