https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242828
--- Comment #1 from fehmi noyan isi <[email protected]> --- It appears BSD diff keeps working on the the files even after it knows whether the files are identical or not. 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 |= 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 and 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 end 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 -- You are receiving this mail because: You are the assignee for the bug. _______________________________________________ [email protected] mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "[email protected]"
