History log of /freebsd-current/usr.bin/diff3/diff3.c
Revision Date Author Comments
# 5e3934b1 24-Nov-2023 Warner Losh <imp@FreeBSD.org>

usr.bin: Automated cleanup of cdefs and other formatting

Apply the following automated changes to try to eliminate
no-longer-needed sys/cdefs.h includes as well as now-empty
blank lines in a row.

Remove /^#if.*\n#endif.*\n#include\s+<sys/cdefs.h>.*\n/
Remove /\n+#include\s+<sys/cdefs.h>.*\n+#if.*\n#endif.*\n+/
Remove /\n+#if.*\n#endif.*\n+/
Remove /^#if.*\n#endif.*\n/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/types.h>/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/param.h>/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/capsicum.h>/

Sponsored by: Netflix


# bdcbfde3 23-Nov-2023 Warner Losh <imp@FreeBSD.org>

usr.bin: Remove ancient SCCS tags.

Remove ancient SCCS tags from the tree, automated scripting, with two
minor fixup to keep things compiling. All the common forms in the tree
were removed with a perl script.

Sponsored by: Netflix


# b37a6938 05-Sep-2023 Baptiste Daroussin <bapt@FreeBSD.org>

diff3: make the diff3 -E -m and diff3 -m behaviour match gnu diff3

In gnu diff3 3 way merging files where the new file and the target are
already the same will die and show what has failed to be merged except
if -E is passed in argument, in this case it will finish the merge.

This difference in behaviour was breaking one of the etcupdate testcase
with bsd diff3

Reviewed by: emaste
Differential Revision: https://reviews.freebsd.org/D41730


# 1d386b48 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

Remove $FreeBSD$: one-line .c pattern

Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/


# 190c4c24 02-Aug-2022 Tom Jones <thj@FreeBSD.org>

diff3: Use ranges for new and old diffedits in ed scripts

This should make the output logic easier to read. No functional change
intended.

Sponsored by: Klara, Inc.


# c0e6ccb1 02-Aug-2022 Tom Jones <thj@FreeBSD.org>

diff3: Use ranges for the old and new diffedits in A scripts

This makes the output logic easier to read. No functional change
intended.

Sponsored by: Klara, Inc.


# 264a559a 02-Aug-2022 Tom Jones <thj@FreeBSD.org>

diff3: Simplify startmark calculation in Ascript

Remove redundant calculation for startmark.

Sponsored by: Klara, Inc.


# 2c4276aa 01-Aug-2022 Tom Jones <thj@FreeBSD.org>

diff3: Use variables for old and new in A scripts

This makes the code easier to follow, no functional changes intended

Sponsored by: Klara, Inc.


# ca53a844 01-Aug-2022 Tom Jones <thj@FreeBSD.org>

diff3: Replace literal marker with variable

Sponsored by: Klara, Inc.


# 85d92faf 01-Aug-2022 Tom Jones <thj@FreeBSD.org>

diff3: Fix indentation

Sponsored by: Klara, Inc.


# d458eb8d 04-Jul-2022 Tom Jones <thj@FreeBSD.org>

diff3: make the eflag logic easier to follow

Discussed with: dim
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D35324


# 3ddd6eb6 25-May-2022 Tom Jones <thj@FreeBSD.org>

diff3: Add help and version options

Add help and version flags. Exit values in these paths are set to match
the behaviour of gnu diff3.


# 59f6408d 25-May-2022 Tom Jones <thj@FreeBSD.org>

diff3: Copy line into debug information

Sponsored by: Klara Inc.


# 7d975c7f 25-May-2022 Tom Jones <thj@FreeBSD.org>

diff3: Don't perform a bitwise OR when comparing diffs

This fixes the build now that it uses -Wbitwise-instead-of-logical

Sponsored by: Klara Inc.


# 034dd2d5 19-Apr-2022 Tom Jones <thj@FreeBSD.org>

diff3: Add support for -m

diff3 in -m mode generates a complete file with changes bracketed with
conflict markers. This adds support for diff3 to generate version
control style three way merge output.

The output format was inferred from looking at the gnu diff3 output on a
selection of test files as a specification of what diff3 -m should
output is not available. It is likely there are cases where the -m
output differs from other tools and I am happy to update diff3 to
address these.

Discussed with: pstef, kevans
Sponsored by: Klara, Inc.


# 9ab079c5 19-Apr-2022 Tom Jones <thj@FreeBSD.org>

diff3: Add support for -A

Diff3 in -A mode generates an ed script to show how the 3 files and
brackets changes that conflict. The ed script generated should when
applied leave familiar merge conflict markers in a patched file.

Diff3 output is not documented, this feature has been arrived at by
comparing bsd diff3 output to gnu diff3 output until they were made to
agree. There are likely to still be differences between these formats.

The gnu diff3 guide is actually quite good at explaining how diff3
output should appear, but it doesn't cover every form of output from
diff3.

https://www.gnu.org/software/diffutils/manual/diffutils.html#Comparing-Three-Files

Discussed with: pstef, kevans
Sponsored by: Klara, Inc.


# df092859 19-Apr-2022 Tom Jones <thj@FreeBSD.org>

diff3: seperate old and new markers from file markers

With -A and -m output the conflict markers are not tied to the file
name. Seperate out these markers.

Sponsored by: Klara, Inc.


# 2184ca3f 19-Apr-2022 Tom Jones <thj@FreeBSD.org>

diff3: Clean up printing of ranges for edscript output

Replace the edscript code that tracked and printed lines using byte
offsets with code that can work from line offsets.

This tidies up the reduces duplication in the edscript output code. It
also fixes the usage of the de struct so that it only tracks diffs as
line offsets rather than the usage changing from line offsets to byte
offsets during the lifetime of diff3.

Large files with large numbers of ranges will probably suffer in
performance here, but as we don't use diff3 yet this isn't a regression.
Include a warning for future hackers so they have a place to start
hacking from.

Reviewed by: pstef
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D34941


# 7c03df68 15-Apr-2022 Tom Jones <thj@FreeBSD.org>

diff3: allow diff3 ed scripts to generate deletions

diff3 with the -e (ed script flag) can generate line deletions, add
support for deletions and add a test case to exercise this behaviour.
This functionality was unearthed through comparison of bsd diff3 and gnu
diff3 output.

Reviewed by: pstef
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D34912


# 54a3415c 20-Aug-2021 Piotr Pawel Stefaniak <pstef@FreeBSD.org>

diff3: implement --strip-trailing-cr

Reviewed by: bapt
Differential Revision: https://reviews.freebsd.org/D31626


# 702dda43 20-Aug-2021 Piotr Pawel Stefaniak <pstef@FreeBSD.org>

diff3: improve style


# 7f7b03f3 20-Aug-2021 Piotr Pawel Stefaniak <pstef@FreeBSD.org>

diff3: sync with upstream

* replace realloc calls with reallocarray calls
* fix merging of files that lack newlines

Obtained from: OpenBSD


# 94678ee6 17-Dec-2019 Baptiste Daroussin <bapt@FreeBSD.org>

Replace homemade getline(3) by actual getline(3)


# 9520071f 17-Dec-2019 Baptiste Daroussin <bapt@FreeBSD.org>

Use strtoimax.

Use existing strtoimax instead of reinventing it


# 377421df 04-Nov-2018 Mariusz Zaborski <oshogbo@FreeBSD.org>

capsicum: use a new capsicum helpers in tools

Use caph_{rights,ioctls,fcntls}_limit to simplify the code.


# 7672a014 19-Jun-2018 Mariusz Zaborski <oshogbo@FreeBSD.org>

Convert `cap_enter() < 0 && errno != ENOSYS` to `caph_enter() < 0`.

No functional change intended.


# 433115a0 25-May-2017 Baptiste Daroussin <bapt@FreeBSD.org>

Remove the MAX_CHECK macro, it was initially used to test if a file was a
text file or not.

The check is not done by diff3 but by diff (the argument -a is directly passed
to diff(1))


# e1910ebd 25-May-2017 Baptiste Daroussin <bapt@FreeBSD.org>

Import working progress BSD diff3

import bsd diff3 from OpenBSD.
Differences with OpenBSD:
- lots of warning fixed
- no shell wrapper with diff3 actually living in libexec
- capsicumized

Keep it disconnected as it is not yet good enough to replace GNU diff

The motivation to import it now it to allow other people to jump in and also to
have an open development on it

Obtained from: OpenBSD