Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 08 Jan 2020 01:09:52 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 242828] diff -rq still does full file comparison
Message-ID:  <bug-242828-227-LfHSXpqpw7@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-242828-227@https.bugs.freebsd.org/bugzilla/>
References:  <bug-242828-227@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D242828

--- Comment #1 from fehmi noyan isi <fnoyanisi@yahoo.com> ---
It appears BSD diff keeps working on the the files even after it knows whet=
her
the files are identical or not.=20

In diffreg(), which is called by diff() we have [1]

        switch (files_differ(f1, f2, flags)) {
        case 0:
                goto closem;
        case 1:
                break;
        default:
                /* error */
                status |=3D 2;
                goto closem;
        }

files_differ() returns 0 when the files are identical and 1 when they are
different. For the cases when files_differ() returns 1, instead of just a
single break statement, we can add a check for the command line arguments a=
nd
if '-q' supplied, i.e. D_BRIEF, then we should return from diffred() (after
doing some housekeeping if necessary - or add another 'goto' label at the e=
nd
of the function).

Instead, BSD diff carries on and hashes each line in both files, sorts them=
 and
do more checks, hence taking more time.

If this sounds reasonable, I can work on a patch.

[1] http://src.illumos.org/source/xref/freebsd-head/usr.bin/diff/diffreg.c#=
341

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-242828-227-LfHSXpqpw7>