Index: lib/c-stack.c
--- lib/c-stack.c.orig	2025-01-02 03:33:12.000000000 +0100
+++ lib/c-stack.c	2025-02-03 23:28:26.865087000 +0100
@@ -35,6 +35,10 @@
 
 #include <config.h>
 
+#if defined(__FreeBSD__)
+#include <sys/types.h>
+#endif
+
 #include "c-stack.h"
 
 #include <errno.h>
Index: man/Makefile.in
--- man/Makefile.in.orig	2025-02-03 03:15:12.000000000 +0100
+++ man/Makefile.in	2025-02-03 23:32:45.140511000 +0100
@@ -2506,22 +2506,6 @@
 
 .PRECIOUS: Makefile
 
-cmp.1: $S/cmp.c cmp.x
-diff.1: $S/diff.c diff.x
-diff3.1: $S/diff3.c diff3.x
-sdiff.1: $S/sdiff.c sdiff.x
-
-# Depend on the former to get version number changes.
-$(dist_man1_MANS): $(SRC_VERSION_C) help2man
-	$(AM_V_GEN)base=`expr $@ : '\(.*\).1'`				\
-	  && test -x $(bin_dir)/$$base					\
-	  && (echo '[NAME]'						\
-	      && sed 's@/\* *@@; s/-/\\-/;s/^GNU //; q' $S/$$base.c)	\
-	     | PATH="$(bin_dir)$(PATH_SEPARATOR)$$PATH"			\
-	       $(srcdir)/help2man -i - -i $(srcdir)/$$base.x		\
-		 -S '$(PACKAGE) $(VERSION)' $$base > $$base.1-t		\
-	  && mv $$base.1-t $(srcdir)/$$base.1
-
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
Index: man/diff3.1
--- man/diff3.1.orig	2025-02-03 05:49:54.000000000 +0100
+++ man/diff3.1	2025-02-03 23:32:14.095503000 +0100
@@ -39,6 +39,9 @@
 \fB\-a\fR, \fB\-\-text\fR
 treat all files as text
 .TP
+\fB\-O\fR
+Always show content of OLDFILE in bracketing output of unmerged changes. (OpenPKG only)
+.TP
 \fB\-\-strip\-trailing\-cr\fR
 strip trailing carriage return on input
 .TP
Index: src/diff3.c
--- src/diff3.c.orig	2025-01-12 19:27:47.000000000 +0100
+++ src/diff3.c	2025-02-03 23:33:37.996423000 +0100
@@ -170,6 +170,9 @@
 /* If nonzero, show information for DIFF_2ND diffs.  */
 static bool show_2nd;
 
+/* If nonzero, show information for DIFF_2ND on overlaps, too. */
+static bool show_2nd_on_overlap;
+
 /* If nonzero, include ':wq' at the end of the script
    to write out the file being edited.   */
 static bool finalwrite;
@@ -206,7 +209,7 @@
   STRIP_TRAILING_CR_OPTION
 };
 
-static char const shortopts[] = "aeimvx3AEL:TX";
+static char const shortopts[] = "aeimvx3AEL:TXO";
 static struct option const longopts[] =
 {
   {"diff-program", 1, 0, DIFF_PROGRAM_OPTION},
@@ -284,6 +287,9 @@
       case 'T':
 	initial_tab = true;
 	break;
+	  case 'O':
+	show_2nd_on_overlap = true;
+	break;
       case STRIP_TRAILING_CR_OPTION:
 	strip_trailing_cr = true;
 	break;
@@ -1453,7 +1459,7 @@
           bool leading_dot = false;
           if (type == DIFF_ALL)
             {
-              if (show_2nd)
+              if (show_2nd || show_2nd_on_overlap)
                 {
                   /* Append lines from FILE1.  */
                   fprintf (outputfile, "||||||| %s\n", file1);
@@ -1590,7 +1596,7 @@
                         D_RELLEN (b, mapping[FILE0], i), outputfile);
             }
 
-          if (show_2nd)
+          if (show_2nd || show_2nd_on_overlap)
             {
               /* Put in lines from FILE1 with bracket.  */
               fprintf (outputfile, format_2nd, file1);
