User-visible changes in version 2.7: * New diff option: --binary (useful only on non-Posix hosts) * diff -b and -w now ignore line incompleteness; -B no longer does this. * cmp -c now uses locale to decide which output characters to quote. * Help and version messages are reorganized. User-visible changes in version 2.6: * New cmp, diff, diff3, sdiff option: --help * A new heuristic for diff greatly reduces the time needed to compare large input files that contain many differences. * Partly as a result, GNU diff's output is not exactly the same as before. Usually it is a bit smaller, but sometimes it is a bit larger. User-visible changes in version 2.5: * New cmp option: -v --version User-visible changes in version 2.4: * New cmp option: --ignore-initial=BYTES * New diff3 option: -T --initial-tab * New diff option: --line-format=FORMAT * New diff group format specifications: [eflmnEFLMN] A printf spec followed by one of the following letters causes the integer corresponding to that letter to be printed according to the printf specification. E.g. `%5df' prints the number of the first line in the group in the old file using the "%5d" format. e: line number just before the group in old file; equals f - 1 f: first line number in group in the old file l: last line number in group in the old file m: line number just after the group in old file; equals l + 1 n: number of lines in group in the old file; equals l - f + 1 E, F, L, M, N: likewise, for lines in the new file %(A=B?T:E) If A equals B then T else E. A and B are each either a decimal constant or a single letter interpreted as above. T and E are arbitrary format strings. This format spec is equivalent to T if A's value equals B's; otherwise it is equivalent to E. For example, `%(N=0?no:%dN) line%(N=1?:s)' is equivalent to `no lines' if N (the number of lines in the group in the the new file) is 0, to `1 line' if N is 1, and to `%dN lines' otherwise. %c'C' where C is a single character, stands for the character C. C may not be a backslash or an apostrophe. E.g. %c':' stands for a colon. %c'\O' where O is a string of 1, 2, or 3 octal digits, stands for the character with octal code O. E.g. %c'\0' stands for a null character. * New diff line format specifications: n The line number, printed with . E.g. `%5dn' prints the line number with a "%5d" format. %c'C' %c'\O' The character C, or with octal code O, as above. * Supported s have the same meaning as with printf, but must match the extended regular expression %-*[0-9]*(\.[0-9]*)?[doxX]. * The format spec %0 introduced in version 2.1 has been removed, since it is incompatible with printf specs like %02d. To represent a null char, use %c'\0' instead. * cmp and diff now conform to Posix.2 (ISO/IEC 9945-2:1993) if the underlying system conforms to Posix: - Some messages' wordings are changed in minor ways. - ``White space'' is now whatever C's `isspace' says it is. - When comparing directories, if `diff' finds a file that is not a regular file or a directory, it reports the file's type instead of diffing it. (As usual, it follows symbolic links first.) - When signaled, sdiff exits with the signal's status, not with status 2. * Now portable to hosts where int, long, pointer, etc. are not all the same size. * `cmp - -' now works like `diff - -'. User-visible changes in version 2.3: * New diff option: --horizon-lines=lines User-visible changes in version 2.1: * New diff options: --{old,new,unchanged}-line-format='format' --{old,new,unchanged,changed}-group-format='format' -U * New diff3 option: -A --show-all * diff3 -m now defaults to -A, not -E. * diff3 now takes up to three -L or --label options, not just two. If just two options are given, they refer to the first two input files, not the first and third input files. * sdiff and diff -y handle incomplete lines. User-visible changes in version 2.0: * Add sdiff and cmp programs. * Add Texinfo documentation. * Add configure script. * Improve diff performance. * New diff options: -x --exclude -X --exclude-from -P --unidirectional-new-file -W --width -y --side-by-side --left-column --sdiff-merge-assist --suppress-common-lines * diff options renamed: --label renamed from --file-label --forward-ed renamed from --reversed-ed --paginate renamed from --print --entire-new-file renamed from --entire-new-files --new-file renamed from --new-files --all-text removed * New diff3 options: -v --version * Add long-named equivalents for other diff3 options. * diff options -F (--show-function-line) and -I (--ignore-matching-lines) can now be given more than once.