Index: Makefile.in
--- Makefile.in.orig	2009-01-23 19:05:35 +0100
+++ Makefile.in	2009-01-24 12:42:02 +0100
@@ -192,7 +192,7 @@
 top_srcdir = @top_srcdir@
 DISTCLEANFILES = src/stamp-h[0-9]* src/config.h
 bin_SCRIPTS = fixcvsdiff splitdiff editdiff recountdiff unwrapdiff dehtmldiff \
-	espdiff
+	espdiff gendiff
 
 man_MANS = doc/interdiff.1 doc/filterdiff.1 doc/fixcvsdiff.1 doc/rediff.1 \
 	doc/editdiff.1 doc/combinediff.1 doc/lsdiff.1 doc/splitdiff.1 \
@@ -434,6 +434,8 @@
 	cd $(top_builddir) && $(SHELL) ./config.status $@
 espdiff: $(top_builddir)/config.status $(srcdir)/espdiff.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
+gendiff: $(top_builddir)/config.status gendiff.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
 patchutils.spec: $(top_builddir)/config.status $(srcdir)/patchutils.spec.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
 install-binPROGRAMS: $(bin_PROGRAMS)
Index: configure
--- configure.orig	2009-01-23 19:05:35 +0100
+++ configure	2009-01-24 12:36:51 +0100
@@ -5781,7 +5781,7 @@
 _ACEOF
 
 
-ac_config_files="$ac_config_files Makefile splitdiff editdiff fixcvsdiff recountdiff unwrapdiff dehtmldiff espdiff patchutils.spec"
+ac_config_files="$ac_config_files Makefile splitdiff editdiff fixcvsdiff recountdiff unwrapdiff dehtmldiff espdiff patchutils.spec gendiff"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
Index: gendiff.in
--- /dev/null	2009-01-24 12:41:21 +0100
+++ gendiff.in	2009-01-24 12:36:51 +0100
@@ -0,0 +1,18 @@
+#!/bin/bash
+if [ $# -ne 2 ]; then
+    echo "Usage: ${0##*/} DIRECTORY DIFF-SUFFIX" 1>&2
+    exit 1
+fi
+find "$1" \( -name "*$2" -o -name ".*$2" \) -print |\
+while read OP; do
+    NP="${OP%$2}"
+    NN="${NP##*/}"
+    U="-u"
+    if [ "$NN" = "ChangeLog" ]; then
+        U="-U0"
+    fi
+    case "${NN##*.}" in
+        c|cc|C|cpp) U="$U -p" ;;
+    esac
+    diff $U "$OP" "$NP"
+done
