--- xxdiff-3.2.orig/debian/control
+++ xxdiff-3.2/debian/control
@@ -0,0 +1,47 @@
+Source: xxdiff
+Build-Depends: qt3-dev-tools, flex, bison, libqt3-mt-dev, debhelper (>= 5), dpatch, python, python-support (>= 0.4)
+Section: text
+Priority: optional
+Maintainer: Y Giridhar Appaji Nag <appaji@debian.org>
+Uploaders: Tomas Pospisek <tpo_deb@sourcepole.ch>
+Standards-Version: 3.8.1
+Homepage: http://furius.ca/xxdiff/
+Vcs-Svn: svn://svn.debian.org/svn/collab-maint/ext-maint/xxdiff/unstable
+Vcs-Browser: http://svn.debian.org/wsvn/collab-maint/ext-maint/xxdiff/unstable/?op=log
+
+Package: xxdiff
+Architecture: any
+Depends: ${shlibs:Depends}
+Suggests: x-terminal-emulator, xxdiff-scripts
+Description: graphical file/directory comparison and merge tool
+ xxdiff is a powerful tool for viewing the differences between two or three
+ files, or two directories, and can be used to produce a merged version. The
+ texts of the two or three files are presented side by side with their
+ differences highlighted with colors for easy identification. Among its
+ features are:
+ .
+ * Compares two or three files, or two directories (shallow and recursive)
+ * Horizontal highlighting of diffs
+ * Interactive merges, previewing and saving of the resulting output
+ * Unmerges CVS conflicts and displays two files, to help resolve conflicts
+ * Fully customizable with a resource file
+ * Features and output that ease integration with scripts
+ .
+ The scripts that accompany xxdiff can be found in the xxdiff-scripts package.
+
+Package: xxdiff-scripts
+Architecture: all
+Depends: ${python:Depends}, xxdiff
+Description: graphical file/directory comparison and merge tool - scripts
+ xxdiff is a powerful tool for viewing the differences between two or three
+ files, or two directories, and can be used to produce a merged version. The
+ texts of the two or three files are presented side by side with their
+ differences highlighted with colors for easy identification. This package
+ contains the following tools that allow automation of tasks with xxdiff:
+ .
+ * xx-match: only diff files that match a pattern
+ * xx-cvs-diff: preview changes made in a CVS checkout
+ * xx-svn-diff: preview changes made in a SVN checkout and commit them
+ * xx-svn-resolve: resolve conflicts
+ * svn-foreign: traverse a checkout and prompt user to check in new files etc.
+ * xx-diff-proxy: a diff tool - useful for tools that feed input to diff
--- xxdiff-3.2.orig/debian/pyversions
+++ xxdiff-3.2/debian/pyversions
@@ -0,0 +1 @@
+2.4-
--- xxdiff-3.2.orig/debian/compat
+++ xxdiff-3.2/debian/compat
@@ -0,0 +1 @@
+5
--- xxdiff-3.2.orig/debian/xxdiff.doc-base.integration
+++ xxdiff-3.2/debian/xxdiff.doc-base.integration
@@ -0,0 +1,13 @@
+Document: xxdiff-integration
+Title: Integrating xxdiff with scripts
+Author: Martin Blais
+Abstract: A summary of some of the features and techniques
+ that can be used to integrate xxdiff with your own homegrown programs.
+Section: Programming
+
+Format: text
+Files: /usr/share/doc/xxdiff/txt/xxdiff-integration.txt.gz
+
+Format: HTML
+Index: /usr/share/doc/xxdiff/html/xxdiff-integration.html
+Files: /usr/share/doc/xxdiff/html/xxdiff-integration.html
--- xxdiff-3.2.orig/debian/changelog
+++ xxdiff-3.2/debian/changelog
@@ -0,0 +1,466 @@
+xxdiff (1:3.2-10) unstable; urgency=low
+
+ * Update Standards-Version to 3.8.1 (no changes required)
+ * Modify 03_cvsrevcomp_cmp_typo to fix typos reported by lintian -E
+ * Re-build with newer debhelper to avoid useless calls to install-docs that
+ have would otherwise be inserted.
+
+ -- Y Giridhar Appaji Nag <appaji@debian.org> Wed, 29 Apr 2009 18:38:48 +0530
+
+xxdiff (1:3.2-9) unstable; urgency=low
+
+ * Update Maintainer to official Debian ID
+ * Remove DM-Upload-Allowed: yes
+ * Patch 08_516143_xml_is_text to classify XML files as text, thanks to
+ "J.P. Delport" <jpdelport@csir.co.za> for the patch (Closes: #516143)
+
+ -- Y Giridhar Appaji Nag <appaji@debian.org> Tue, 24 Feb 2009 14:51:19 +0530
+
+xxdiff (1:3.2-8) unstable; urgency=low
+
+ * Improved package description
+ * Patch 07_subversion_externals to fix the xx-svn-diff failure when it
+ encounters an SVN externals item. Thanks Joseph Rawson
+ <umeboshi3@gmail.com> for the bug report and fix (Closes: #498449)
+ * Update Standards-Version to 3.8.0 (add a README.source)
+
+ -- Y Giridhar Appaji Nag <giridhar@appaji.net> Tue, 30 Sep 2008 21:23:41 +0530
+
+xxdiff (1:3.2-7) unstable; urgency=low
+
+ * Change doc-base section from Apps/Programming to Programming. Fixes
+ lintian W: doc-base-unknown-section
+ * Convert xxdiff.doc-base.secrets from ISO-8859-1 to ASCII
+ * Patch 06_user_commands_menu to implement menu with user defined commands.
+ Thanks "Simon Kågström" <simon.kagstrom@bth.se> (Closes: #312240)
+ * Use xxdiff-scripts.links with dh_link instead of by-hand dh_link for all
+ the xxdiff-scripts commands.
+
+ -- Y Giridhar Appaji Nag <giridhar@appaji.net> Sun, 23 Mar 2008 10:20:50 +0530
+
+xxdiff (1:3.2-6) unstable; urgency=low
+
+ * Add a DM-Upload-Allowed: yes field to be able to DM update packages
+ * Remove '-' from previous changelog entries.
+ * Add Homepage: and Vcs-Svn: fields to debian/control
+ * Change debian/copyright per latest standards
+ * Rename README.debian to README.Debian per convention
+ * xxdiff-scripts is Arch: all rather than Arch: any and remove
+ ${shlibs:Depends} from Depends:
+ * Remove DH_COMPAT from debian/rules, add debian/compat (5)
+ * Remove spaces in doc-base file sections' separators, fixes lintian W:
+ doc-base-file-separator-extra-whitespaces
+ * Add debian/patches, using dpatch
+ + 01_script_not_executable to prevent lintian W: script-not-executable
+ + 02_doc_furius.ca_href to change relative URLs in documentation to
+ http://furius.ca/
+ + 03_cvsrevcomp_cmp_typo to correct typo in xx-cvs-revcmp (cvsrevcomp
+ should be cvsrevcmp)
+ + 04_build_setup_paths to set the appropriate paths necessary to build
+ xxdiff and install the python scripts
+ + 05_417780_gcc4.3_ftbfs to #include <cstdlib> to prevent FTBFS with
+ GCC 4.3
+ * Cleanup and re-organize debian/rules
+ + Do not ignore make errors etc.
+ + Add comands to binary-indep target for xxdiff-scripts
+ + Use dh_installman for installing manpages
+ + Remove symlink of changelog in xxdiff to that in xxdiff-scripts
+ * Rename doc directories to keep in sync with the usual conventions:
+ manual.html/ is html/ and manual.txt/ is txt/
+ * Add a xxdiff-scripts.1 manpage and dh_link to it for all the scripts
+ present in the xxdiff-scripts package.
+ * Use dh_install and *.install files as opposed to by-hand install
+
+ -- Y Giridhar Appaji Nag <giridhar@appaji.net> Fri, 07 Mar 2008 15:28:44 +0530
+
+xxdiff (1:3.2-5) unstable; urgency=low
+
+ * Adopted by Y Giridhar Appaji Nag <giridhar@appaji.net> (closes: #445882).
+ * New version 3 watch file, upstream uses tar.bz2 files. Thanks for the
+ report Raphael Geissert (closes: #449716).
+ * Add Homepage to the package description
+
+ -- Y Giridhar Appaji Nag <giridhar@appaji.net> Sun, 11 Nov 2007 10:30:44 +0530
+
+xxdiff (1:3.2-4) unstable; urgency=low
+
+ * install postinst/prerm scripts. Thanks for the report Reuben Thomas.
+ Closes: #445943
+ * remove gratuitous xxdiff.doc-base file
+ * remove dh_installdocs
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Fri, 12 Oct 2007 22:59:09 +0200
+
+xxdiff (1:3.2-3) unstable; urgency=low
+
+ * include required c++ headers. Thanks to Martin Michlmayr. Closes: #417780
+ * refer to xxdiff-scripts instead off xxdiff-tools. Thanks to Andre Colomb.
+ Closes: #426039
+ * I'm orphaning the package since I'm not using it and since I genereally
+ want to shed responsability. The package is in good state IMHO and
+ doesn't require much attention. It has smaller issues with font handling
+ though, so that'd be a good thing to look into.
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Mon, 08 Oct 2007 23:12:02 +0200
+
+xxdiff (1:3.2-2) unstable; urgency=low
+
+ * oops /usr/man slipped in again. Re-re-re-moving it.
+ * fix doc-base reference problems reported by lintian
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Sun, 03 Dec 2006 21:41:08 +0100
+
+xxdiff (1:3.2-1) unstable; urgency=low
+
+ * Acknowledge NMU. Thanks a lot Ana Beatriz Guerrero Lopez!!!
+ * include scripts/db subdirectory in setup and fix includes
+ Closes: #390091
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Sun, 03 Dec 2006 20:54:21 +0100
+
+xxdiff (1:3.2-0.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Removed directory /usr/man. Patch by Andreas Henriksson.
+ (Closes: #399764).
+ * Python Policy: using dh_pysupport instead of dh_python.
+ Added Build-Depends on python-support.
+ * Updated Standars-versions to 3.7.2, no changes required.
+ * Updated FSF address in copyright file.
+
+ -- Ana Beatriz Guerrero Lopez <ana@debian.org> Tue, 28 Nov 2006 06:06:06 +0100
+
+xxdiff (1:3.2-1) unstable; urgency=low
+
+ * debian:
+ * fix created dirs. Closes: #399764 (thanks Andreas Henriksson)
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Tue, 28 Nov 2006 00:37:24 +0100
+
+xxdiff (1:3.2-0) unstable; urgency=low
+
+ * new upstream:
+ * the names of the scripts have changed from xxdiff-... to xx-...
+ * some short options for the script have changed: review the scripts that
+ call them.
+ * xx-subversion script has been renamed to xxdiff-diff-proxy
+ + xx-resolve: finds all files that are still in conflict and invokes
+ a 3-way merge algorithm to resolve them.
+ + xxdiff-svn-diff: view all changes in a subversion checkout. Drives the
+ show itself, rather than being invoked by Subversion
+ + xxdiff-rename: performs global renames
+ + xxdiff-filter: run transformation loop using a UNIX command filter
+ + --select-grep: among the files selected by filename, select only those
+ which match the given regexp (or multiple clauses)
+ + --ignore-grep: among the files selected by filename, ignore those which
+ match the given regexp (or multiple clauses)
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Fri, 15 Sep 2006 22:46:16 +0200
+
+xxdiff (1:3.2-1) unstable; urgency=low
+
+ * sent docu patches upstream
+ * NOT RELEASED OR BUILT
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Thu, 21 Sep 2006 14:36:52 +0200
+
+xxdiff (1:3.1-5) unstable; urgency=low
+
+ * transition from debmake to debhelper
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Sun, 26 Mar 2006 20:22:48 +0200
+
+xxdiff (1:3.1-4) unstable; urgency=low
+
+ * C++ ABI transition: rebuild against current libqt3-mt-dev
+ closes: #326059
+ * Work around for #326553 (thanks realKano@directbox.com
+ and Norbert Kiesel). It doesn't fix the bug though, so I'm only
+ downgrading the bug.
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Wed, 07 Sep 2005 22:07:10 +0200
+
+xxdiff (1:3.1-3) unstable; urgency=low
+
+ * re-upload
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Tue, 29 Mar 2005 08:43:56 +0200
+
+xxdiff (1:3.1-2) unstable; urgency=low
+
+ * Fix path in xxdiff-subversion (thanks Matthew Mueller) closes: #301442
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Tue, 29 Mar 2005 08:25:58 +0200
+
+xxdiff (1:3.1-1) unstable; urgency=low
+
+ * New upstream release
+ + "Save Options" menu entry in the file menu
+ + interactive font resizing
+ + wheel support in overview area
+ + xxdiff-cond-replace script: script to conditionally replace a
+ original by a generated file
+ + xxdiff-subversion script: wrapper script for integration with
+ Subversion
+ * clean html file closes: #198327
+ * fixes segfault closes: #291416
+ * fixed watch file
+ * removed src/version.h from my diff to the package
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Wed, 23 Mar 2005 21:28:12 +0100
+
+xxdiff (1:3.0.2-4) unstable; urgency=low
+
+ * reupload, something went wrong the last time
+ * correcting lintian warnings closes: #269681
+ (thanks for the lintian cluebar Adrian Bunk!)
+ * manpage section fixed
+ * moved binaries and manpage out of /usr/X11 to /usr
+ * suggesting python for the xxdiff scripts
+ * included png files
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Mon, 06 Sep 2004 16:53:49 +0200
+
+xxdiff (1:3.0.2-3) unstable; urgency=low
+
+ * correcting lintian warnings closes: #269681
+ (thanks for the lintian cluebar Adrian Bunk!)
+ * manpage section fixed
+ * moved binaries and manpage out of /usr/X11 to /usr
+ * suggesting python for the xxdiff scripts
+ * included png files
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Mon, 06 Sep 2004 15:45:46 +0200
+
+xxdiff (1:3.0.2-2) unstable; urgency=low
+
+ * gosh!: reintroduce flex build-dep closes: #266840
+ (thanks Anibal Monsalve Salazar)
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Fri, 20 Aug 2004 08:15:38 +0200
+
+xxdiff (1:3.0.2-1) unstable; urgency=low
+
+ * New upstream release closes: #258856
+ + a lot of new scripts for:
+ * xxdiff-find-grep-sed: change/replace/merge
+ * xxdiff-encrypted: compare and merge encrypted files
+ * xxdiff-match: diff only files that match a pattern
+ * xxdiff-cvs-diff: preview CVS changes and accept/reject
+ + works with new flex closes: #193585
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Tue, 17 Aug 2004 12:20:08 +0200
+
+xxdiff (1:2.9.2-1) unstable; urgency=low
+
+ * Thanks a lot Chris Halls for the previous NMU!
+ * New upstream release:
+ + Should be able to diff Mac files
+ + xxdiff can open single file
+ + clicking on new file opens it
+ * Rebuilt with libqt3-mt (thanks Brian Nelson) closes: #184023
+ closes: #181029
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Fri, 06 Jun 2003 11:55:51 +0200
+
+xxdiff (1:2.9.1-1) unstable; urgency=low
+
+ * NMU with permission from Thomas
+ * New upstream release:
+ + Bugfixes in 3 way diff handling
+ + New variable text clipboard selection with Control+Button1
+ * Rebuild against current unstable using new qt directories
+ closes: #181029
+ * Reference common-licenses/GPL in copyright
+ * Move manpage to /usr/X11R6/man to match the location of the binary
+ * Update feature list in description
+ * Remove dependency for diff, which is essential.
+
+ -- Chris Halls <halls@debian.org> Fri, 21 Feb 2003 12:35:01 +0100
+
+xxdiff (1:2.7.2-1) unstable; urgency=low
+
+ * new upstream (thanks Adrian!) closes: #156088
+ * new upstream features:
+ * whitespace and linebreak changes can be detected and ignored
+ * indent changes can be specialy marked
+ * port to qt3
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Fri, 23 Aug 2002 16:08:37 +0200
+
+xxdiff (1:2.5-2) unstable; urgency=low
+
+ * fixed g++-3.0 problem (thanks Daniel Jakobowitz and Philip Blundell)
+ closes: #140032
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Fri, 22 Mar 2002 14:25:29 +0100
+
+xxdiff (1:2.5-1) unstable; urgency=low
+
+ * New upstream with a lot of new features, bugfixes closes: #139273
+ + multiple horizontal diffs
+ + ignore whitespace
+ + unmerge (merge conflicts support)
+ + save as merged
+ + gcc3.0 fixes closes: #134023
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Fri, 22 Mar 2002 14:25:29 +0100
+
+xxdiff (1:2.0.3-1) unstable; urgency=low
+
+ * included Martin Blais revised minimal manpage
+ * adapted control file text to Martin's manpage
+ * fixed watch file
+ * stepped back to 2.0.3 (stable) as suggested by author
+ * learned about epochs at the same time (thanks to Ryan Murray!)
+ * generating manual.html again, fixed by upstream
+ * removed TODO from install in rules
+ * added debmake dependency closes: #122272
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Fri, 14 Dec 2001 18:01:50 +0100
+
+xxdiff (2.1-2) unstable; urgency=low
+
+ * using "sendible-editor" instead of /etc/alternatives/...
+ * not generating manual.html any more, since it requires X closes: #121116
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Thu, 29 Nov 2001 13:53:55 +0100
+
+xxdiff (2.1-1) unstable; urgency=low
+
+ * new upstream closes: #111902
+ * upstream does not use autoconf any more closes: #120101
+ * added depends: diff, suggests: editor
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Sat, 24 Nov 2001 17:05:47 +0100
+
+xxdiff (1.9.1-13) unstable; urgency=low
+
+ * corrected some typos (thanks to Matt Zimmermann's effort)
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Fri, 16 Nov 2001 15:29:57 +0100
+
+xxdiff (1.9.1-12) unstable; urgency=low
+
+ * removed ldso from build-dependencies closes: #112869
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Thu, 20 Sep 2001 12:45:05 +0200
+
+xxdiff (1.9.1-11) unstable; urgency=low
+
+ * will I get the dependencies ever right? Thanks again to James Troup for pointing it out!
+ closes: #112297, #112756
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Wed, 19 Sep 2001 14:25:04 +0200
+
+xxdiff (1.9.1-10) unstable; urgency=low
+
+ * removed libqt2.2-dev dependency. Thanks to James Troup for pointing it out!
+ fixes: #112297
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Mon, 17 Sep 2001 17:14:03 +0200
+
+xxdiff (1.9.1-9) unstable; urgency=low
+
+ * reorganized build-dependencies to fix bug in autobuilder. concerns: #112297
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Sat, 15 Sep 2001 14:58:02 +0200
+
+xxdiff (1.9.1-8) unstable; urgency=low
+
+ * moved from libstlport to libstdc++. closes: #97557
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Mon, 25 May 2001 10:38:01 +0200
+
+xxdiff (1.9.1-7) unstable; urgency=low
+
+ * libstlport was missing in the dependencies (thanks Johannes Zellner)
+ as well as automake for the builddependencies . closes: #93780
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Thu, 12 Apr 2001 23:07:00 +0200
+
+xxdiff (1.9.1-6) unstable; urgency=low
+
+ * changed back to Depends: ${shlibs:Depends}. Thanks go out to Adrian Bunk
+ for patience and explanation ;-). closes: #92865
+
+ * some more cleaning of Build-Depends. Again, thanks to the gentleman above!
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Tue, 4 Apr 2001 20:14:42 +0200
+
+xxdiff (1.9.1-5) unstable; urgency=low
+
+ * it seems that the deb got linked against an obsolete
+ libstl. Thanks again Wayne!
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Tue, 3 Apr 2001 12:56:01 +0200
+
+xxdiff (1.9.1-4) unstable; urgency=low
+
+ * reversed automoc changes (was only some --verbose stuff)
+
+ * added missing libstlport dependency (Thanks Wayne Scott ;-)
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Mon, 2 Apr 2001 21:38:00 +0200
+
+xxdiff (1.9.1-3) unstable; urgency=high
+
+ * now depends on libmng | libmng1. closes: #92484
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Mon, 2 Apr 2001 11:07:00 +0200
+
+xxdiff (1.9.1-2) unstable; urgency=low
+
+ * changed my email address
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Wed, 28 Mar 2001 14:54:00 +0200
+
+xxdiff (1.9.1-1) unstable; urgency=low
+
+ * new upstream
+
+ * did some heavy build procedure patching for upstream
+
+ * building with a mix of testing and potato with the "new" libstl
+ closes: #85276, #86195
+
+ * xxdiff can't be started without a filename from the command line
+ closes: #75614
+
+ * open left and open right now work as expected, that is the will open
+ the file and redo the diff. closes: #75747
+
+ * the horizontal window size defaults to the horizontal resolution
+ closes: #75748
+
+ * depends on libqt2.2*. closes: #89782
+
+ -- Tomas Pospisek <tpo@spin.ch> Thu, 15 Mar 2001 21:53:00 +0200
+
+xxdiff (1.8-3) unstable; urgency=low
+
+ * I must have mixed some stuff from the 1.8.2 release into this, which
+ is undone in this release
+
+ * set Architecture: to any, thanks to Roman Hodek (fixes #76385)
+
+ -- Tomas Pospisek <tpo@spin.ch> Wed, 08 Sep 2000 12:11:01 +0200
+
+xxdiff (1.8-2) unstable; urgency=low
+
+ * Bas Zoetekouw has volenteered to sponsor me. Cool. Thanks Bas. And
+ at the same time found the first build bugs...
+
+ * Also I forgot to thank Pirmin Kalberer and Michael Weber for help
+ with autoconfig and automake
+
+ * added AUTHORS, ChangeLog and NEWS which are required by automake
+
+ -- Tomas Pospisek <tpo@spin.ch> Thu, 14 Sep 2000 13:07:03 +0200
+
+xxdiff (1.8-1) unstable; urgency=low
+
+ * Initial release.
+
+ -- Tomas Pospisek <tpo@spin.ch> Thu, 14 Sep 2000 13:07:03 +0200
+
--- xxdiff-3.2.orig/debian/xxdiff.dirs
+++ xxdiff-3.2/debian/xxdiff.dirs
@@ -0,0 +1,3 @@
+usr/share/doc/xxdiff/html
+usr/share/doc/xxdiff/txt
+usr/bin
--- xxdiff-3.2.orig/debian/xxdiff-scripts.doc-base
+++ xxdiff-3.2/debian/xxdiff-scripts.doc-base
@@ -0,0 +1,14 @@
+Document: xxdiff-scripts
+Title: Helper Scripts for xxdiff
+Author: Martin Blais
+Abstract: A description of the Python scripts and infrastructure
+ that is provided around xxdiff, to faciliate implementing
+ processes requiring display and selection of differences.
+Section: Programming
+
+Format: text
+Files: /usr/share/doc/xxdiff-scripts/txt/xxdiff-scripts.txt.gz
+
+Format: HTML
+Index: /usr/share/doc/xxdiff-scripts/html/xxdiff-scripts.html
+Files: /usr/share/doc/xxdiff-scripts/html/xxdiff-scripts.html
--- xxdiff-3.2.orig/debian/xxdiff-scripts.README.Debian
+++ xxdiff-3.2/debian/xxdiff-scripts.README.Debian
@@ -0,0 +1,9 @@
+xxdiff for Debian
+----------------------
+
+The package's homepage is http://furius.ca/xxdiff/
+
+Note that the upstream tarball contains a lot more scripts that _might_
+be useful.
+
+Tomas Pospisek <tpo_deb@sourcepole.ch>, Tue, 19 Sep 2006 01:07:44 +0200
--- xxdiff-3.2.orig/debian/rules
+++ xxdiff-3.2/debian/rules
@@ -0,0 +1,74 @@
+#!/usr/bin/make -f
+
+include /usr/share/dpatch/dpatch.make
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+src/Makefile: patch qmake-stamp
+qmake-stamp:
+ dh_testdir
+ $(MAKE) -C src -f Makefile.bootstrap makefile
+ touch $@
+
+build: build-stamp
+
+build-stamp: patch-stamp src/Makefile
+ dh_testdir
+ $(MAKE) -C src
+ touch $@
+
+clean: clean-patched unpatch
+clean-patched:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp qmake-stamp
+ [ ! -f src/Makefile ] || $(MAKE) -C src distclean
+ rm -f src/Makefile
+ rm -f src/Makefile.qmake
+ rm -rf build
+ rm -f src/resParser_lex.h
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+ python setup.py install --no-compile --prefix debian/xxdiff-scripts/usr
+
+binary-indep: build install
+ dh_testdir -i
+ dh_testroot -i
+ dh_install -i
+ dh_installman -i
+ dh_link -i
+ dh_installdocs -i
+ dh_installchangelogs -i
+ dh_pysupport -i
+ dh_compress -i
+ dh_fixperms -i
+ dh_installdeb -i
+ dh_md5sums -i
+ dh_gencontrol -i
+ dh_builddeb -i
+
+binary-arch: build install
+ dh_testdir -a
+ dh_testroot -a
+ dh_install -a
+ dh_installman -a
+ dh_installdocs -a
+ dh_installchangelogs -a CHANGES
+ dh_strip -a
+ dh_compress -a
+ dh_fixperms -a
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_md5sums -a
+ dh_gencontrol -a
+ dh_builddeb -a
+
+binary: binary-indep binary-arch
+
+.PHONY: build clean binary-indep binary-arch binary install patch unpatch
--- xxdiff-3.2.orig/debian/xxdiff.doc-base.xxdiff
+++ xxdiff-3.2/debian/xxdiff.doc-base.xxdiff
@@ -0,0 +1,11 @@
+Document: xxdiff
+Title: xxdiff Documentation
+Author: Martin Blais
+Abstract: User's manual for xxdiff. If you're reading
+ this page from the web, note that you can also access
+ this document from the Help menu of xxdiff.
+Section: Programming
+
+Format: HTML
+Index: /usr/share/doc/xxdiff/html/xxdiff-doc.html
+Files: /usr/share/doc/xxdiff/html/xxdiff-doc.html
--- xxdiff-3.2.orig/debian/watch
+++ xxdiff-3.2/debian/watch
@@ -0,0 +1,3 @@
+version = 3
+
+http://sf.net/xxdiff/xxdiff-(.+)\.tar\.bz2
--- xxdiff-3.2.orig/debian/menu.unused
+++ xxdiff-3.2/debian/menu.unused
@@ -0,0 +1,2 @@
+?package(xxdiff):needs=X11 section=Apps/Text\
+ title="xxdiff" command="/usr/bin/xxdiff"
--- xxdiff-3.2.orig/debian/copyright
+++ xxdiff-3.2/debian/copyright
@@ -0,0 +1,35 @@
+This package was debianized by Tomas Pospisek <tpo_deb@sourcepole.ch> on
+Sat, 24 Nov 2001 17:05:47 +0100.
+
+It was downloaded from http://furius.ca/xxdiff/
+
+Upstream Author:
+
+ Martin Blais <blais@furius.ca>
+
+Copyright:
+
+ Copyright (C) 1999-2006, Martin Blais
+
+License:
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ with the Debian GNU/Linux distribution in the file
+ /usr/share/common-licenses/GPL-2; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+The Debian packaging is
+Copyright (C) 2001-2007, Tomas Pospisek <tpo_deb@sourcepole.ch>
+Copyright (C) 2007-2008, Y Giridhar Appaji Nag <giridhar@appaji.net> and
+is licensed under the GNU GPL, either version 2 of the License, or (at
+your option) any later version; see `/usr/share/common-licenses/GPL-2'.
--- xxdiff-3.2.orig/debian/xxdiff.doc-base.secrets
+++ xxdiff-3.2/debian/xxdiff.doc-base.secrets
@@ -0,0 +1,13 @@
+Document: xxdiff-secrets
+Title: The Almost Secret Features of xxdiff
+Author: Martin Blais
+Abstract: A sneak peak into of some of the lesser-known
+ or non-obvious features of xxdiff.
+Section: Programming
+
+Format: text
+Files: /usr/share/doc/xxdiff/txt/xxdiff-secrets.txt.gz
+
+Format: HTML
+Index: /usr/share/doc/xxdiff/html/xxdiff-secrets.html
+Files: /usr/share/doc/xxdiff/html/xxdiff-secrets.html
--- xxdiff-3.2.orig/debian/NEWS
+++ xxdiff-3.2/debian/NEWS
@@ -0,0 +1,8 @@
+xxdiff (1:3.2-0) unstable; urgency=low
+
+ * the names of the scripts have changed from xxdiff-... to xx-...
+ * some short options for the script have changed: review the scripts that
+ call them.
+ * xx-subversion script has been renamed to xxdiff-diff-proxy
+
+ -- Tomas Pospisek <tpo_deb@sourcepole.ch> Fri, 15 Sep 2006 22:46:16 +0200
--- xxdiff-3.2.orig/debian/xxdiff-scripts.dirs
+++ xxdiff-3.2/debian/xxdiff-scripts.dirs
@@ -0,0 +1,3 @@
+usr/share/doc/xxdiff-scripts/html
+usr/share/doc/xxdiff-scripts/txt
+etc/bash_completion.d/
--- xxdiff-3.2.orig/debian/README.Debian
+++ xxdiff-3.2/debian/README.Debian
@@ -0,0 +1,8 @@
+xxdiff for Debian
+----------------------
+
+The package's homepage is http://furius.ca/xxdiff/
+
+The source has been repacked, since upstream ships in tar.bz format.
+
+Tomas Pospisek <tpo_deb@sourcepole.ch>, Tue, 19 Sep 2006 01:11:35 +0200
--- xxdiff-3.2.orig/debian/xxdiff-scripts.1
+++ xxdiff-3.2/debian/xxdiff-scripts.1
@@ -0,0 +1,110 @@
+.TH XXDIFF-SCRIPTS 1 "02 March 2008"
+.SH NAME
+xxdiff-scripts \- Tools that allow automation of tasks with xxdiff
+.SH SYNOPSIS
+.B xx-cvs-diff, xx-svn-diff, xx-*
+.br
+.SH DESCRIPTION
+\fBxxdiff(1)\fP
+is a graphical file and directories comparison and merge tool.
+.PP
+xxdiff-scripts is a collection of python scripts around xxdiff that
+allows automation of various diff, review and merge tasks using xxdiff.
+
+.SH COMMANDS
+All the programs in xxdiff-scripts script collection support the usual
+GNU command line syntax and have a \-\-help option that has detailed
+information about the options supported.
+
+.TP
+.B svn-foreign
+svn-foreign runs 'svn status' on the given Subversion checkout
+directories, to find out which files are unaccounted for and allows
+dealing with the files interactively.
+
+.TP
+.B xx-cond-replace
+xx-cond-replace is a script to conditionally replace an original by a
+generated file.
+
+.TP
+.B xx-cvs-diff
+xx-cvs-diff invokes 'cvs diff' with the given file arguments, and allows
+a xxdiff preview of the current changes made in a cvs checkout.
+
+.TP
+.B xx-cvs-revcmp
+xx-cvs-revcmp displays file differences with the current or a previous
+CVS version.
+
+.TP
+.B xx-diff-proxy
+xx-diff-proxy is a wrapper script for xxdiff that presents options that
+are the same as the diff or diff3 commands. This can be used with
+programs that expect to call diff/diff3 to present differences to users,
+and can be configured with a different diff program.
+
+.TP
+.B xx-encrypted
+xx-encrypted is a script to compare and merge contents of encrypted
+files relatively safely.
+
+.TP
+.B xx-filter
+xx-filter walks a directory hierarchy, selects some files to be
+processed, performs replacements in files and confirms the application
+of changes via xxdiff.
+
+.TP
+.B xx-find-grep-sed
+xx-find-grep-sed walks a directory hierarchy, selects some files to be
+processed and performs global sed-like replacements in the set of files.
+
+.TP
+.B xx-match
+xx-match is a script for invoking xxdiff on matching files using the
+basename of the files.
+
+.TP
+.B xx-pyline
+xx-pyline walks a directory hierarchy, selects some files to be
+processed and runs a given Python code on each line of the input.
+xxdiff is presented to confirm application of the changes.
+
+.TP
+.B xx-rename
+xx-rename walks a directory hierarchy, selects some files to be
+processed and perform a replacement of a one string to another in the
+files and confirm the application of changes via xxdiff.
+
+.TP
+.B xx-sql-schemas
+xx-sql-schemas dumps the schemas for two PostgreSQL databases, re-orders
+the contents so that they diff nicely, and spawns xxdiff on the results.
+
+.TP
+.B xx-svn-diff
+xx-svn-diff invokes xxdiff for all modified files in the given
+Subversion checkout area.
+
+.TP
+.B xx-svn-resolve
+xx-svn-resolve invokes xxdiff with a 3-way merge view for all files in a
+Subversion checkout whose conflicts need to be resolved. Depending on
+the exit status, xxdiff also calls 'svn resolve' on the files.
+
+.SH SEE ALSO
+.IP "\fI/usr/share/doc/xxdiff-scripts/html/xxdiff-scripts.html\fR"
+A description of the Python scripts and infrastructure that is provided
+around xxdiff, to faciliate implementing processes requiring display and
+selection of differences.
+.IP "\fI/usr/share/doc/xxdiff-scripts/txt/xxdiff-scripts.txt.gz\fR"
+The above documentation in plain text.
+.IP "xxdiff(1)"
+The xxdiff manual page
+.BR
+.SH AUTHOR
+xxdiff was written by Martin Blais <blais@furius.ca>
+.PP
+This manual page was written by Y Giridhar Appaji Nag <giridhar@appaji.net>
+for the Debian project (but may be used by others).
--- xxdiff-3.2.orig/debian/xxdiff.manpages
+++ xxdiff-3.2/debian/xxdiff.manpages
@@ -0,0 +1 @@
+src/xxdiff.1
--- xxdiff-3.2.orig/debian/xxdiff-scripts.manpages
+++ xxdiff-3.2/debian/xxdiff-scripts.manpages
@@ -0,0 +1 @@
+debian/xxdiff-scripts.1
--- xxdiff-3.2.orig/debian/xxdiff.install
+++ xxdiff-3.2/debian/xxdiff.install
@@ -0,0 +1,11 @@
+bin/xxdiff usr/bin
+doc/equals.png usr/share/doc/xxdiff/html
+doc/horiz.png usr/share/doc/xxdiff/html
+doc/perhunk.png usr/share/doc/xxdiff/html
+doc/rma.png usr/share/doc/xxdiff/html
+doc/select.png usr/share/doc/xxdiff/html
+doc/xxdiff-secrets.html usr/share/doc/xxdiff/html
+doc/xxdiff-integration.html usr/share/doc/xxdiff/html
+doc/xxdiff-doc.html usr/share/doc/xxdiff/html
+doc/xxdiff-secrets.txt usr/share/doc/xxdiff/txt
+doc/xxdiff-integration.txt usr/share/doc/xxdiff/txt
--- xxdiff-3.2.orig/debian/xxdiff-scripts.install
+++ xxdiff-3.2/debian/xxdiff-scripts.install
@@ -0,0 +1,4 @@
+doc/screenshot-sql-schema-compare.png usr/share/doc/xxdiff-scripts/html
+doc/xxdiff-scripts.html usr/share/doc/xxdiff-scripts/html
+doc/xxdiff-scripts.txt usr/share/doc/xxdiff-scripts/txt
+etc/bashrc etc/bash_completion.d/xxdiff
--- xxdiff-3.2.orig/debian/xxdiff-scripts.links
+++ xxdiff-3.2/debian/xxdiff-scripts.links
@@ -0,0 +1,14 @@
+usr/share/man/man1/xxdiff-scripts.1 usr/share/man/man1/svn-foreign.1
+usr/share/man/man1/xxdiff-scripts.1 usr/share/man/man1/xx-cond-replace.1
+usr/share/man/man1/xxdiff-scripts.1 usr/share/man/man1/xx-cvs-diff.1
+usr/share/man/man1/xxdiff-scripts.1 usr/share/man/man1/xx-cvs-revcmp.1
+usr/share/man/man1/xxdiff-scripts.1 usr/share/man/man1/xx-diff-proxy.1
+usr/share/man/man1/xxdiff-scripts.1 usr/share/man/man1/xx-encrypted.1
+usr/share/man/man1/xxdiff-scripts.1 usr/share/man/man1/xx-filter.1
+usr/share/man/man1/xxdiff-scripts.1 usr/share/man/man1/xx-find-grep-sed.1
+usr/share/man/man1/xxdiff-scripts.1 usr/share/man/man1/xx-match.1
+usr/share/man/man1/xxdiff-scripts.1 usr/share/man/man1/xx-pyline.1
+usr/share/man/man1/xxdiff-scripts.1 usr/share/man/man1/xx-rename.1
+usr/share/man/man1/xxdiff-scripts.1 usr/share/man/man1/xx-sql-schemas.1
+usr/share/man/man1/xxdiff-scripts.1 usr/share/man/man1/xx-svn-diff.1
+usr/share/man/man1/xxdiff-scripts.1 usr/share/man/man1/xx-svn-resolve.1
--- xxdiff-3.2.orig/debian/README.source
+++ xxdiff-3.2/debian/README.source
@@ -0,0 +1,2 @@
+Please read the README.source provided with the documentation of the
+dpatch package
--- xxdiff-3.2.orig/debian/patches/04_build_setup_paths.dpatch
+++ xxdiff-3.2/debian/patches/04_build_setup_paths.dpatch
@@ -0,0 +1,45 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_build_setup_paths.dpatch by Y Giridhar Appaji Nag <giridhar@appaji.net>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: qmake is in /usr/bin in Debian not in /usr/qt/3/bin. Add db to
+## DP: xxdiff python packages alongside scripts and scm.
+
+@DPATCH@
+diff -urNad xxdiff-3.2~/setup.py xxdiff-3.2/setup.py
+--- xxdiff-3.2~/setup.py 2008-01-24 11:45:47.000000000 +0530
++++ xxdiff-3.2/setup.py 2008-01-24 11:50:11.000000000 +0530
+@@ -52,7 +52,8 @@
+ package_dir = {'': 'lib/python'},
+ packages = ['xxdiff',
+ join('xxdiff', 'scripts'),
+- join('xxdiff', 'scm')],
++ join('xxdiff', 'scm'),
++ join('xxdiff', 'db')],
+ scripts = allscripts
+ )
+
+diff -urNad xxdiff-3.2~/src/Makefile.bootstrap xxdiff-3.2/src/Makefile.bootstrap
+--- xxdiff-3.2~/src/Makefile.bootstrap 2008-01-24 11:45:36.000000000 +0530
++++ xxdiff-3.2/src/Makefile.bootstrap 2008-01-24 11:50:06.000000000 +0530
+@@ -8,7 +8,7 @@
+ QTDIR ?= /usr/qt/3
+
+ # Rule to generate the qmake Makefile for building xxdiff.
+-QMAKE = $(QTDIR)/bin/qmake
++QMAKE = qmake
+
+
+ # Rule to generate qmake and delegate to it.
+diff -urNad xxdiff-3.2~/src/Makefile.extra xxdiff-3.2/src/Makefile.extra
+--- xxdiff-3.2~/src/Makefile.extra 2008-01-24 11:45:41.000000000 +0530
++++ xxdiff-3.2/src/Makefile.extra 2008-01-24 11:50:02.000000000 +0530
+@@ -61,7 +61,7 @@
+
+
+ # Override the qmake we use because the one in the path might be different.
+-QMAKE = $(QTDIR)/bin/qmake
++QMAKE = qmake
+
+
+ # Note: we would need to add this to be correct. Danger! If the Makefile gets
--- xxdiff-3.2.orig/debian/patches/03_cvsrevcomp_cmp_typo.dpatch
+++ xxdiff-3.2/debian/patches/03_cvsrevcomp_cmp_typo.dpatch
@@ -0,0 +1,66 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 03_cvsrevcomp_cmp_typo.dpatch by Y Giridhar Appaji Nag <giridhar@appaji.net>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Correct typo in xx-cvs-revcmp (cvsrevcomp should be cvsrevcmp) and help
+
+@DPATCH@
+diff -urNad xxdiff-3.2~/bin/xx-cvs-revcmp xxdiff-3.2/bin/xx-cvs-revcmp
+--- xxdiff-3.2~/bin/xx-cvs-revcmp 2009-04-29 18:34:36.000000000 +0530
++++ xxdiff-3.2/bin/xx-cvs-revcmp 2009-04-29 18:43:09.000000000 +0530
+@@ -5,6 +5,6 @@
+
+ __author__ = 'Martin Blais <blais@furius.ca>'
+
+-from xxdiff.scripts.cvsrevcomp import main
++from xxdiff.scripts.cvsrevcmp import main
+ main()
+
+diff -urNad xxdiff-3.2~/doc/xxdiff-doc.html xxdiff-3.2/doc/xxdiff-doc.html
+--- xxdiff-3.2~/doc/xxdiff-doc.html 2006-05-14 20:26:06.000000000 +0530
++++ xxdiff-3.2/doc/xxdiff-doc.html 2009-04-29 18:43:09.000000000 +0530
+@@ -1892,7 +1892,7 @@
+ MergedFilename: "%L.merge"
+ </PRE>
+ <BLOCKQUOTE>
+-Default merged filename. %L, %M, %R can be used as placeholders for left, middle and right filenames repectively. Note that ClearCase suffixes are stripped automatically.
++Default merged filename. %L, %M, %R can be used as placeholders for left, middle and right filenames respectively. Note that ClearCase suffixes are stripped automatically.
+ </BLOCKQUOTE>
+
+ </div></div>
+diff -urNad xxdiff-3.2~/src/doc.html xxdiff-3.2/src/doc.html
+--- xxdiff-3.2~/src/doc.html 2009-04-29 18:34:36.000000000 +0530
++++ xxdiff-3.2/src/doc.html 2009-04-29 18:43:09.000000000 +0530
+@@ -762,7 +762,7 @@
+ </div>
+ <div class="section">
+ <h1><a class="toc-backref" href="#id54" id="reporting-bugs" name="reporting-bugs">16 Reporting bugs</a></h1>
+-<p>All bug reports and feature requests should be submitted throught the
++<p>All bug reports and feature requests should be submitted through the
+ SourceForge bug tracking system at the following URL
+ <a class="reference" href="http://sourceforge.net/bugs/?group_id=2198">http://sourceforge.net/bugs/?group_id=2198</a>. Please avoid sending the author
+ email about xxdiff bugs. Please use this bug tracking system, it is extremely
+diff -urNad xxdiff-3.2~/src/doc.txt xxdiff-3.2/src/doc.txt
+--- xxdiff-3.2~/src/doc.txt 2009-04-29 18:34:36.000000000 +0530
++++ xxdiff-3.2/src/doc.txt 2009-04-29 18:43:09.000000000 +0530
+@@ -919,7 +919,7 @@
+ --------------
+
+
+-All bug reports and feature requests should be submitted throught the
++All bug reports and feature requests should be submitted through the
+ SourceForge bug tracking system at the following URL
+ http://sourceforge.net/bugs/?group_id=2198. Please avoid sending the author
+ email about xxdiff bugs. Please use this bug tracking system, it is extremely
+diff -urNad xxdiff-3.2~/src/resParser.cpp xxdiff-3.2/src/resParser.cpp
+--- xxdiff-3.2~/src/resParser.cpp 2009-04-29 18:34:36.000000000 +0530
++++ xxdiff-3.2/src/resParser.cpp 2009-04-29 18:43:09.000000000 +0530
+@@ -213,7 +213,7 @@
+
+ { "MergedFilename", MERGED_FILENAME,
+ "Default merged filename. %L, %M, %R can be used as placeholders for \
+-left, middle and right filenames repectively. Note that ClearCase suffixes \
++left, middle and right filenames respectively. Note that ClearCase suffixes \
+ are stripped automatically." },
+
+ };
--- xxdiff-3.2.orig/debian/patches/05_417780_gcc4.3_ftbfs.dpatch
+++ xxdiff-3.2/debian/patches/05_417780_gcc4.3_ftbfs.dpatch
@@ -0,0 +1,20 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 05_417780_gcc4.3_ftbfs.dpatch by Y Giridhar Appaji Nag <giridhar@appaji.net>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: #include <cstdlib> to prevent FTBFS with GCC 4.3, based on patch
+## DP: from Martin Michlmayr <tbm@cyrius.com>
+
+@DPATCH@
+diff -urNad xxdiff-3.2~/src/resources.inline.h xxdiff-3.2/src/resources.inline.h
+--- xxdiff-3.2~/src/resources.inline.h 2008-01-24 11:59:54.000000000 +0530
++++ xxdiff-3.2/src/resources.inline.h 2008-01-24 12:02:59.000000000 +0530
+@@ -20,6 +20,8 @@
+ *
+ ******************************************************************************/
+
++#include <cstdlib>
++
+ /*==============================================================================
+ * EXTERNAL DECLARATIONS
+ *============================================================================*/
--- xxdiff-3.2.orig/debian/patches/01_script_not_executable.dpatch
+++ xxdiff-3.2/debian/patches/01_script_not_executable.dpatch
@@ -0,0 +1,279 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 01_script_not_executable.dpatch by Y Giridhar Appaji Nag <giridhar@appaji.net>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Remove hashbang lines for non executable scripts to prevent
+## DP: lintian W: script-not-executable
+
+@DPATCH@
+diff -urNad xxdiff-3.2~/etc/bashrc xxdiff-3.2/etc/bashrc
+--- xxdiff-3.2~/etc/bashrc 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/etc/bashrc 2008-03-01 11:45:09.000000000 +0530
+@@ -1,5 +1,3 @@
+-#!/bin/sh
+-#
+ # $Id: bashrc 760 2004-02-09 18:51:12Z blais $
+ # $Source$
+ #
+@@ -15,4 +13,4 @@
+ complete -F _optcomplete xx-encrypted
+ complete -F _optcomplete xx-find-grep-sed
+ complete -F _optcomplete xx-match
+-complete -F _optcomplete xx-patch-UNFINISHED # FIXME
++# complete -F _optcomplete xx-patch-UNFINISHED # FIXME
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/backup.py xxdiff-3.2/lib/python/xxdiff/backup.py
+--- xxdiff-3.2~/lib/python/xxdiff/backup.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/backup.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/checkout.py xxdiff-3.2/lib/python/xxdiff/checkout.py
+--- xxdiff-3.2~/lib/python/xxdiff/checkout.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/checkout.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/condrepl.py xxdiff-3.2/lib/python/xxdiff/condrepl.py
+--- xxdiff-3.2~/lib/python/xxdiff/condrepl.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/condrepl.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/db/__init__.py xxdiff-3.2/lib/python/xxdiff/db/__init__.py
+--- xxdiff-3.2~/lib/python/xxdiff/db/__init__.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/db/__init__.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ """
+ This package contains support for extracting stuff from various databases.
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/db/postgresql.py xxdiff-3.2/lib/python/xxdiff/db/postgresql.py
+--- xxdiff-3.2~/lib/python/xxdiff/db/postgresql.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/db/postgresql.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/editor.py xxdiff-3.2/lib/python/xxdiff/editor.py
+--- xxdiff-3.2~/lib/python/xxdiff/editor.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/editor.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/history.py xxdiff-3.2/lib/python/xxdiff/history.py
+--- xxdiff-3.2~/lib/python/xxdiff/history.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/history.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/invoke.py xxdiff-3.2/lib/python/xxdiff/invoke.py
+--- xxdiff-3.2~/lib/python/xxdiff/invoke.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/invoke.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/mapcompare.py xxdiff-3.2/lib/python/xxdiff/mapcompare.py
+--- xxdiff-3.2~/lib/python/xxdiff/mapcompare.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/mapcompare.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/patches.py xxdiff-3.2/lib/python/xxdiff/patches.py
+--- xxdiff-3.2~/lib/python/xxdiff/patches.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/patches.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/resilient.py xxdiff-3.2/lib/python/xxdiff/resilient.py
+--- xxdiff-3.2~/lib/python/xxdiff/resilient.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/resilient.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scm/clearcase.py xxdiff-3.2/lib/python/xxdiff/scm/clearcase.py
+--- xxdiff-3.2~/lib/python/xxdiff/scm/clearcase.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scm/clearcase.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scm/cvs.py xxdiff-3.2/lib/python/xxdiff/scm/cvs.py
+--- xxdiff-3.2~/lib/python/xxdiff/scm/cvs.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scm/cvs.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scm/subversion.py xxdiff-3.2/lib/python/xxdiff/scm/subversion.py
+--- xxdiff-3.2~/lib/python/xxdiff/scm/subversion.py 2006-06-12 05:01:29.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scm/subversion.py 2008-03-01 11:46:08.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scripts/__init__.py xxdiff-3.2/lib/python/xxdiff/scripts/__init__.py
+--- xxdiff-3.2~/lib/python/xxdiff/scripts/__init__.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scripts/__init__.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scripts/condreplace.py xxdiff-3.2/lib/python/xxdiff/scripts/condreplace.py
+--- xxdiff-3.2~/lib/python/xxdiff/scripts/condreplace.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scripts/condreplace.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """xx-cond-replace [<options>] <orig-file> <modified-file>
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scripts/cvsdiff.py xxdiff-3.2/lib/python/xxdiff/scripts/cvsdiff.py
+--- xxdiff-3.2~/lib/python/xxdiff/scripts/cvsdiff.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scripts/cvsdiff.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """xx-cvs-diff [<options>] [<file> <file> ...]
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scripts/cvsrevcmp.py xxdiff-3.2/lib/python/xxdiff/scripts/cvsrevcmp.py
+--- xxdiff-3.2~/lib/python/xxdiff/scripts/cvsrevcmp.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scripts/cvsrevcmp.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+ #
+ # Note: this has originally been distributed by Michalis Giannakidis, under the
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scripts/diffproxy.py xxdiff-3.2/lib/python/xxdiff/scripts/diffproxy.py
+--- xxdiff-3.2~/lib/python/xxdiff/scripts/diffproxy.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scripts/diffproxy.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """xx-diff-proxy [<options>] <file> <file> [<file>]
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scripts/encrypted.py xxdiff-3.2/lib/python/xxdiff/scripts/encrypted.py
+--- xxdiff-3.2~/lib/python/xxdiff/scripts/encrypted.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scripts/encrypted.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """xx-encrypted [<options>] <encrypted-file> [<encrypted file> ...]
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scripts/filter.py xxdiff-3.2/lib/python/xxdiff/scripts/filter.py
+--- xxdiff-3.2~/lib/python/xxdiff/scripts/filter.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scripts/filter.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scripts/findgrepsed.py xxdiff-3.2/lib/python/xxdiff/scripts/findgrepsed.py
+--- xxdiff-3.2~/lib/python/xxdiff/scripts/findgrepsed.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scripts/findgrepsed.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scripts/match.py xxdiff-3.2/lib/python/xxdiff/scripts/match.py
+--- xxdiff-3.2~/lib/python/xxdiff/scripts/match.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scripts/match.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """xx-match [<options>] <file> <file> <file> <file> ...
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scripts/patch.py xxdiff-3.2/lib/python/xxdiff/scripts/patch.py
+--- xxdiff-3.2~/lib/python/xxdiff/scripts/patch.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scripts/patch.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """xx-patch [<options>] [<patchfile>]
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scripts/pyline.py xxdiff-3.2/lib/python/xxdiff/scripts/pyline.py
+--- xxdiff-3.2~/lib/python/xxdiff/scripts/pyline.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scripts/pyline.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scripts/rename.py xxdiff-3.2/lib/python/xxdiff/scripts/rename.py
+--- xxdiff-3.2~/lib/python/xxdiff/scripts/rename.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scripts/rename.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scripts/sqlschemas.py xxdiff-3.2/lib/python/xxdiff/scripts/sqlschemas.py
+--- xxdiff-3.2~/lib/python/xxdiff/scripts/sqlschemas.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scripts/sqlschemas.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """xx-sql-schemas [<options>] <db1> <db2>
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scripts/svndiff.py xxdiff-3.2/lib/python/xxdiff/scripts/svndiff.py
+--- xxdiff-3.2~/lib/python/xxdiff/scripts/svndiff.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scripts/svndiff.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """xx-svn-diff [<options>] <file> <file> [<file>]
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scripts/svnresolve.py xxdiff-3.2/lib/python/xxdiff/scripts/svnresolve.py
+--- xxdiff-3.2~/lib/python/xxdiff/scripts/svnresolve.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/scripts/svnresolve.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """xx-svn-resolve [<options>] <file> <file> [<file>]
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/selectfiles.py xxdiff-3.2/lib/python/xxdiff/selectfiles.py
+--- xxdiff-3.2~/lib/python/xxdiff/selectfiles.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/selectfiles.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/utils.py xxdiff-3.2/lib/python/xxdiff/utils.py
+--- xxdiff-3.2~/lib/python/xxdiff/utils.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/utils.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/xformloop.py xxdiff-3.2/lib/python/xxdiff/xformloop.py
+--- xxdiff-3.2~/lib/python/xxdiff/xformloop.py 2008-03-01 11:44:56.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/xformloop.py 2008-03-01 11:45:09.000000000 +0530
+@@ -1,4 +1,3 @@
+-#!/usr/bin/env python
+ # This file is part of the xxdiff package. See xxdiff for license and details.
+
+ """
--- xxdiff-3.2.orig/debian/patches/00list
+++ xxdiff-3.2/debian/patches/00list
@@ -0,0 +1,8 @@
+01_script_not_executable
+02_doc_furius.ca_href
+03_cvsrevcomp_cmp_typo
+04_build_setup_paths
+05_417780_gcc4.3_ftbfs
+06_user_commands_menu
+07_subversion_externals
+08_516143_xml_is_text
--- xxdiff-3.2.orig/debian/patches/02_doc_furius.ca_href.dpatch
+++ xxdiff-3.2/debian/patches/02_doc_furius.ca_href.dpatch
@@ -0,0 +1,49 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_doc_furius.ca_href.dpatch by Y Giridhar Appaji Nag <giridhar@appaji.net>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Change relative URLs in HTML documentation to http://furius.ca/
+
+@DPATCH@
+diff -urNad xxdiff-3.2~/doc/xxdiff-integration.html xxdiff-3.2/doc/xxdiff-integration.html
+--- xxdiff-3.2~/doc/xxdiff-integration.html 2008-01-24 10:58:00.000000000 +0530
++++ xxdiff-3.2/doc/xxdiff-integration.html 2008-01-24 11:02:05.000000000 +0530
+@@ -12,8 +12,8 @@
+ <body>
+
+ <div id="project-header">
+- <a href="/"><img src="/home/furius-logo-w.png" id="logo"></a>
+- <div id="project-home"><a href="..">Project Home</a></div>
++ <a href="http://furius.ca/"><img src="http://furius.ca/home/furius-logo-w.png" id="logo"></a>
++ <div id="project-home"><a href="http://furius.ca/xxdiff">Project Home</a></div>
+ </div>
+
+ <div class="document" id="integrating-xxdiff-with-scripts">
+diff -urNad xxdiff-3.2~/doc/xxdiff-scripts.html xxdiff-3.2/doc/xxdiff-scripts.html
+--- xxdiff-3.2~/doc/xxdiff-scripts.html 2008-01-24 10:58:13.000000000 +0530
++++ xxdiff-3.2/doc/xxdiff-scripts.html 2008-01-24 11:01:55.000000000 +0530
+@@ -12,8 +12,8 @@
+ <body>
+
+ <div id="project-header">
+- <a href="/"><img src="/home/furius-logo-w.png" id="logo"></a>
+- <div id="project-home"><a href="..">Project Home</a></div>
++ <a href="http://furius.ca/"><img src="http://furius.ca/home/furius-logo-w.png" id="logo"></a>
++ <div id="project-home"><a href="http://furius.ca/xxdiff">Project Home</a></div>
+ </div>
+
+ <div class="document" id="helper-scripts-for-xxdiff">
+diff -urNad xxdiff-3.2~/doc/xxdiff-secrets.html xxdiff-3.2/doc/xxdiff-secrets.html
+--- xxdiff-3.2~/doc/xxdiff-secrets.html 2008-01-24 10:58:26.000000000 +0530
++++ xxdiff-3.2/doc/xxdiff-secrets.html 2008-01-24 11:02:00.000000000 +0530
+@@ -11,8 +11,8 @@
+ <body>
+
+ <div id="project-header">
+- <a href="/"><img src="/home/furius-logo-w.png" id="logo"></a>
+- <div id="project-home"><a href="..">Project Home</a></div>
++ <a href="http://furius.ca/"><img src="http://furius.ca/home/furius-logo-w.png" id="logo"></a>
++ <div id="project-home"><a href="http://furius.ca/">Project Home</a></div>
+ </div>
+
+ <div class="document" id="the-almost-secret-features-of-xxdiff">
--- xxdiff-3.2.orig/debian/patches/06_user_commands_menu.dpatch
+++ xxdiff-3.2/debian/patches/06_user_commands_menu.dpatch
@@ -0,0 +1,806 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 06_user_commands_menu.dpatch by Y Giridhar Appaji Nag <giridhar@appaji.net>
+##
+## DP: Implements a menu with user defined commands. Patch thanks to
+## DP: Simon Kågström <simon.kagstrom@bth.se>
+
+@DPATCH@
+diff -urNad xxdiff-3.2~/src/app.cpp xxdiff-3.2/src/app.cpp
+--- xxdiff-3.2~/src/app.cpp 2009-04-29 18:34:35.000000000 +0530
++++ xxdiff-3.2/src/app.cpp 2009-04-29 18:44:24.000000000 +0530
+@@ -1748,6 +1748,27 @@
+
+ //---------------------------------------------------------------------------
+
++ // User menu
++ QkPopupMenu* userMenu = new QkPopupMenu;
++ for ( int ii = 0; ii < USER_COMMAND_LAST; ii++ ) {
++ if ( !_resources->getUserCommand(ii).isEmpty() ) {
++ int id = userMenu->insertItem(
++ _resources->getUserCommandTitle(ii), this, SLOT(userInvoke(int)),
++ _resources->getAccelerator( ACCEL_USER_ADD_NEW )
++ );
++ userMenu->setItemParameter(id, ii);
++ }
++ }
++
++
++ //---------------------------------------------------------------------------
++
++ // User menu
++ _userMenu = new QkPopupMenu;
++ fillUserMenu();
++
++ //---------------------------------------------------------------------------
++
+ // Help menu
+ QkPopupMenu* helpMenu = new QkPopupMenu;
+ helpMenu->insertItem(
+@@ -1778,6 +1799,7 @@
+ m->insertItem( "O&ptions", _optionsMenu );
+ m->insertItem( "&Display", _displayMenu );
+ m->insertItem( "W&indows", _windowsMenu );
++ m->insertItem( "&User", userMenu );
+ m->insertSeparator();
+ m->insertItem( "&Help", helpMenu );
+ }
+@@ -2963,6 +2985,44 @@
+
+ //------------------------------------------------------------------------------
+ //
++QString XxApp::getUserCommand(unsigned int id) const
++{
++ QString name;
++
++ // FIXME: Use _cmdline?
++ name = _resources->getUserCommand(id);
++
++ QString left, middle, right;
++ XxBuffer* leftbuf = getBuffer( 0 );
++ if ( leftbuf ) {
++ left = leftbuf->getName();
++ }
++ if ( _nbFiles == 2 ) {
++ XxBuffer* rightbuf = getBuffer( 1 );
++ if ( rightbuf ) {
++ right = rightbuf->getName();
++ }
++ }
++ else {
++ XxBuffer* middlebuf = getBuffer( 1 );
++ if ( middlebuf ) {
++ middle = middlebuf->getName();
++ }
++ XxBuffer* rightbuf = getBuffer( 2 );
++ if ( rightbuf ) {
++ right = rightbuf->getName();
++ }
++ }
++
++ name.replace( QRegExp("%L"), left );
++ name.replace( QRegExp("%M"), middle );
++ name.replace( QRegExp("%R"), right );
++
++ return name;
++}
++
++//------------------------------------------------------------------------------
++//
+ void XxApp::saveSelectedOnly()
+ {
+ if ( _diffs.get() == 0 ) {
+@@ -4183,6 +4243,23 @@
+
+ //------------------------------------------------------------------------------
+ //
++void XxApp::fillUserMenu()
++{
++ // Recreate the user menu
++ _userMenu->clear();
++ for ( int ii = 0; ii < USER_COMMAND_LAST; ii++ ) {
++ if ( !_resources->getUserCommand(ii).isEmpty() ) {
++ int id = _userMenu->insertItem(
++ _resources->getUserCommandTitle(ii), this, SLOT(userInvoke(int)),
++ _resources->getAccelerator( ACCEL_USER_ADD_NEW )
++ );
++ _userMenu->setItemParameter(id, ii);
++ }
++ }
++}
++
++//------------------------------------------------------------------------------
++//
+ void XxApp::synchronizeUI()
+ {
+ if ( _filesAreDirectories == false ) {
+@@ -4606,4 +4683,32 @@
+
+ }
+
++//------------------------------------------------------------------------------
++//
++void XxApp::userInvoke(int id)
++{
++ const char **args;
++ QStringList filenames;
++ QString command = getUserCommand(id);
++
++ XxUtil::splitArgs( command, filenames, args );
++ try {
++ XxUtil::spawnCommand( args );
++ }
++ catch ( const XxIoError& ioerr) {
++ QString text;
++ {
++ QTextOStream oss( &text );
++ oss << "There has been an error spawning user program:"
++ << ioerr.getMsg() << endl;
++ }
++ QMessageBox* box = new XxSuicideMessageBox(
++ _mainWindow, "Error.", text, QMessageBox::Warning
++ );
++ box->show();
++
++ }
++ free (args);
++}
++
+ XX_NAMESPACE_END
+diff -urNad xxdiff-3.2~/src/app.h xxdiff-3.2/src/app.h
+--- xxdiff-3.2~/src/app.h 2009-04-29 18:34:35.000000000 +0530
++++ xxdiff-3.2/src/app.h 2009-04-29 18:44:24.000000000 +0530
+@@ -285,6 +285,7 @@
+ void ignoreFileRight();
+ void helpManPage();
+ void helpAbout();
++ void fillUserMenu();
+ // </group>
+
+ // Keyboard accelerators cursor motion callbacks.
+@@ -309,7 +310,11 @@
+ void fontSizeIncrease();
+ void fontSizeDecrease();
+ // </group>
+-
++
++ // User-specified
++ // <group>
++ void userInvoke(int id);
++ // </group>
+ signals:
+
+ // Signal emitted when the cursor changes line.
+@@ -404,6 +409,9 @@
+ // Get the merged filename.
+ QString getMergedFilename() const;
+
++ // Get a user command
++ QString getUserCommand(unsigned int id) const;
++
+ // Compute if there is even a single byte different between the files.
+ bool computeAbsoluteDifference() const;
+
+@@ -456,6 +464,7 @@
+ QkPopupMenu* _displayMenu;
+ QkPopupMenu* _hordiffMenu;
+ QkPopupMenu* _windowsMenu;
++ QkPopupMenu* _userMenu;
+ int _menuids[ MAX_MENUIDS ];
+ QWidget* _overviewArea;
+ QLabel* _remUnselView;
+diff -urNad xxdiff-3.2~/src/optionsDialog.cpp xxdiff-3.2/src/optionsDialog.cpp
+--- xxdiff-3.2~/src/optionsDialog.cpp 2009-04-29 18:34:35.000000000 +0530
++++ xxdiff-3.2/src/optionsDialog.cpp 2009-04-29 18:44:24.000000000 +0530
+@@ -289,6 +289,16 @@
+
+ // Make this dialog an observer of the resources.
+ connect( resourcesPtr, SIGNAL( changed() ), this, SLOT( synchronize() ) );
++
++ //---------------------------------------------------------------------------
++ // User menu
++
++ connect( _comboUserCommand, SIGNAL( activated(int) ),
++ this, SLOT( userCommandSelected(int) ) );
++ connect( _editUserCommand, SIGNAL( textChanged(const QString &) ),
++ this, SLOT( userCommandTextChanged(const QString &) ) );
++ connect( _editUserCommandTitle, SIGNAL( textChanged(const QString &) ),
++ this, SLOT( userCommandTitleTextChanged(const QString &) ) );
+ }
+
+ //------------------------------------------------------------------------------
+@@ -466,6 +476,13 @@
+ _labelEditBack->update();
+ }
+ }
++
++ //---------------------------------------------------------------------------
++ // User menu
++
++ int n = _comboUserCommand->currentItem( );
++ _editUserCommandTitle->setText( resources.getUserCommandTitle( n ) );
++ _editUserCommand->setText( resources.getUserCommand( n ) );
+ }
+
+ //------------------------------------------------------------------------------
+@@ -887,6 +904,37 @@
+
+ //------------------------------------------------------------------------------
+ //
++void XxOptionsDialog::userCommandSelected( int cmd )
++{
++ _comboUserCommand->setCurrentItem( cmd );
++ // Redraw the widgets
++ synchronize();
++}
++
++void XxOptionsDialog::userCommandTextChanged(const QString &newStr)
++{
++ XxResources& resources = _app->getResourcesNC();
++
++ resources.setUserCommand( (unsigned int) _comboUserCommand->currentItem(), newStr );
++ // Redraw the widgets
++ synchronize();
++ // Recreate the menu
++ _app->fillUserMenu();
++}
++
++void XxOptionsDialog::userCommandTitleTextChanged(const QString &newStr)
++{
++ XxResources& resources = _app->getResourcesNC();
++
++ resources.setUserCommandTitle( (unsigned int) _comboUserCommand->currentItem(), newStr );
++ // Redraw the widgets
++ synchronize();
++ // Recreate the menu
++ _app->fillUserMenu();
++}
++
++//------------------------------------------------------------------------------
++//
+ bool XxOptionsDialog::isInCommand(
+ const QString& command,
+ const QString& option
+diff -urNad xxdiff-3.2~/src/optionsDialog.h xxdiff-3.2/src/optionsDialog.h
+--- xxdiff-3.2~/src/optionsDialog.h 2009-04-29 18:34:35.000000000 +0530
++++ xxdiff-3.2/src/optionsDialog.h 2009-04-29 18:44:24.000000000 +0530
+@@ -170,6 +170,12 @@
+ void editColorFore();
+ void editColorBack();
+
++ //---------------------------------------------------------------------------
++ // User commands
++
++ void userCommandSelected( int cmd );
++ void userCommandTextChanged(const QString &newStr);
++ void userCommandTitleTextChanged(const QString &newStr);
+
+ private:
+
+diff -urNad xxdiff-3.2~/src/optionsDialogBase.ui xxdiff-3.2/src/optionsDialogBase.ui
+--- xxdiff-3.2~/src/optionsDialogBase.ui 2009-04-29 18:34:35.000000000 +0530
++++ xxdiff-3.2/src/optionsDialogBase.ui 2009-04-29 18:44:24.000000000 +0530
+@@ -1274,6 +1274,146 @@
+ </widget>
+ </vbox>
+ </widget>
++ <widget class="QWidget">
++ <property name="name">
++ <cstring>UserMenu</cstring>
++ </property>
++ <attribute name="title">
++ <string>User menu</string>
++ </attribute>
++ <widget class="QLayoutWidget">
++ <property name="name">
++ <cstring>layout90</cstring>
++ </property>
++ <property name="geometry">
++ <rect>
++ <x>20</x>
++ <y>10</y>
++ <width>210</width>
++ <height>50</height>
++ </rect>
++ </property>
++ <hbox>
++ <property name="name">
++ <cstring>unnamed</cstring>
++ </property>
++ <widget class="QLabel">
++ <property name="name">
++ <cstring>textLabel3</cstring>
++ </property>
++ <property name="text">
++ <string>Menu item</string>
++ </property>
++ </widget>
++ <widget class="QComboBox">
++ <item>
++ <property name="text">
++ <string>Item 1</string>
++ </property>
++ </item>
++ <item>
++ <property name="text">
++ <string>Item 2</string>
++ </property>
++ </item>
++ <item>
++ <property name="text">
++ <string>Item 3</string>
++ </property>
++ </item>
++ <property name="name">
++ <cstring>_comboUserCommand</cstring>
++ </property>
++ </widget>
++ </hbox>
++ </widget>
++ <widget class="QButtonGroup">
++ <property name="name">
++ <cstring>buttonGroup4_4_3</cstring>
++ </property>
++ <property name="geometry">
++ <rect>
++ <x>10</x>
++ <y>60</y>
++ <width>640</width>
++ <height>120</height>
++ </rect>
++ </property>
++ <property name="title">
++ <string>User Command</string>
++ </property>
++ <widget class="QLabel">
++ <property name="name">
++ <cstring>TestLabel1_2_4</cstring>
++ </property>
++ <property name="geometry">
++ <rect>
++ <x>10</x>
++ <y>70</y>
++ <width>90</width>
++ <height>29</height>
++ </rect>
++ </property>
++ <property name="text">
++ <string>Command:</string>
++ </property>
++ </widget>
++ <widget class="QLabel">
++ <property name="name">
++ <cstring>TestLabel1_2_4_2</cstring>
++ </property>
++ <property name="geometry">
++ <rect>
++ <x>10</x>
++ <y>30</y>
++ <width>90</width>
++ <height>29</height>
++ </rect>
++ </property>
++ <property name="text">
++ <string>Title:</string>
++ </property>
++ </widget>
++ <widget class="QLineEdit">
++ <property name="name">
++ <cstring>_editUserCommandTitle</cstring>
++ </property>
++ <property name="geometry">
++ <rect>
++ <x>100</x>
++ <y>30</y>
++ <width>530</width>
++ <height>29</height>
++ </rect>
++ </property>
++ <property name="text">
++ <string></string>
++ </property>
++ <property name="toolTip" stdset="0">
++ <string>The title that appears for the User menu item</string>
++ </property>
++ </widget>
++ <widget class="QLineEdit">
++ <property name="name">
++ <cstring>_editUserCommand</cstring>
++ </property>
++ <property name="geometry">
++ <rect>
++ <x>100</x>
++ <y>70</y>
++ <width>530</width>
++ <height>29</height>
++ </rect>
++ </property>
++ <property name="text">
++ <string></string>
++ </property>
++ <property name="toolTip" stdset="0">
++ <string>The command to execute when the menu item is selected</string>
++ </property>
++ </widget>
++ </widget>
++ </widget>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+diff -urNad xxdiff-3.2~/src/resParser.cpp xxdiff-3.2/src/resParser.cpp
+--- xxdiff-3.2~/src/resParser.cpp 2009-04-29 18:44:24.000000000 +0530
++++ xxdiff-3.2/src/resParser.cpp 2009-04-29 18:44:49.000000000 +0530
+@@ -127,6 +127,13 @@
+ "Color choice for diff hunks, and for certain other items in the text \
+ view." },
+
++ { "User", USER,
++ "User-specified commands in the User menu. The command will be executed \
++when the entry is selected in the menu. %L, %M, %R can be used as placeholders \
++for left, middle and right filenames respectively. Note that ClearCase suffixes \
++are stripped automatically. Title specifies the title in the menu for the \
++command." },
++
+ { "FontApp", FONT_APP,
+ "General application font, used for widgets and menus." },
+
+@@ -491,6 +498,15 @@
+ " Color of text region selection " }
+ };
+
++StringToken userList[] = {
++ { "UserCommand1", USER_COMMAND1,
++ "User command 1." },
++ { "UserCommand2", USER_COMMAND2,
++ "User command 2." },
++ { "UserCommand3", USER_COMMAND3,
++ "User command 3." },
++};
++
+ StringToken commandList[] = {
+ { "DiffFiles2", CMD_DIFF_FILES_2,
+ "Command to use for comparing two files." },
+@@ -590,7 +606,7 @@
+ DECL_SIZE(commandSwitchList);
+ DECL_SIZE(showList);
+ DECL_SIZE(tagList);
+-
++DECL_SIZE(userList);
+
+ //------------------------------------------------------------------------------
+ //
+@@ -819,6 +835,7 @@
+ sortTokens( commandSwitchList, commandSwitchList_size );
+ sortTokens( showList, showList_size );
+ sortTokens( tagList, tagList_size );
++ sortTokens( userList, userList_size );
+ }
+
+ //------------------------------------------------------------------------------
+@@ -1069,6 +1086,20 @@
+ }
+ }
+
++ int nbuser = sizeof(userList)/sizeof(StringToken);
++ const char* userStr = searchTokenName( kwdList, kwdList_size, USER );
++ for ( ii = 0; ii < nbuser; ++ii ) {
++ XxUserCommand bo = XxUserCommand(userList[ii]._token);
++ const QString& bc1 = res1.getUserCommand( bo );
++ const QString& bt1 = res1.getUserCommandTitle( bo );
++ if ( bc1 != res2.getUserCommand( bo ) || bt1 != res2.getUserCommandTitle( bo )) {
++ os << userStr << "." << userList[ii]._name << ".Command" << ": \""
++ << bc1 << "\"" << endl;
++ os << userStr << "." << userList[ii]._name << ".Title" << ": \""
++ << bt1 << "\"" << endl;
++ }
++ }
++
+ const char* initSwitchStr = searchTokenName( kwdList, kwdList_size, INITSW );
+ for ( ii = 0; ii < nbcommandSwitch; ++ii ) {
+ XxCommandSwitch bo = XxCommandSwitch(commandSwitchList[ii]._token);
+@@ -1235,6 +1266,19 @@
+ << b1.latin1() << "\"" << endl;
+ }
+
++ int nbusercommand = sizeof(userList)/sizeof(StringToken);
++ const char* userCommandStr =
++ searchTokenName( kwdList, kwdList_size, USER );
++ for ( ii = 0; ii < nbusercommand; ++ii ) {
++ XxUserCommand bo = XxUserCommand(userList[ii]._token);
++ const QString& bc1 = res.getUserCommand( bo );
++ const QString& bt1 = res.getUserCommandTitle( bo );
++ os << userCommandStr << "." << userList[ii]._name << ".Command" << ": \""
++ << bc1.latin1() << "\"" << endl;
++ os << userCommandStr << "." << userList[ii]._name << ".Title" << ": \""
++ << bt1.latin1() << "\"" << endl;
++ }
++
+ int nbcommandSwitch = sizeof(commandSwitchList)/sizeof(StringToken);
+ const char* commandSwitchStr =
+ searchTokenName( kwdList, kwdList_size, COMMANDSW );
+@@ -1341,7 +1385,7 @@
+ drbegin( os );
+ int nbaccel = sizeof(accelList)/sizeof(StringToken);
+ const StringToken* tok = searchToken( kwdList, kwdList_size, ACCEL );
+- os << tok->_name << "." << "[NAME]." << ": \"[ACCELERATOR]\"" << endl;
++ os << tok->_name << "." << "[NAME]" << ": \"[ACCELERATOR]\"" << endl;
+ drend( os );
+ ddbegin( os );
+ os << tok->_desc << endl;
+@@ -1458,6 +1502,49 @@
+ }
+
+ {
++ drbegin( os );
++ int nbusercommands = sizeof(userList)/sizeof(StringToken);
++ const StringToken* tok = searchToken( kwdList, kwdList_size, USER );
++ os << tok->_name << "." << "[NAME].[Command]"
++ << ": \"[COMMAND]\"" << endl;
++ os << tok->_name << "." << "[NAME].[Title]"
++ << ": \"[MENU TITLE]\"" << endl;
++ drend( os );
++ ddbegin( os );
++ os << tok->_desc << endl;
++
++ for ( ii = 0; ii < nbusercommands; ++ii ) {
++ const StringToken* tokc = &( userList[ii] );
++
++ drbegin( os );
++
++ os << tok->_name << "." << tokc->_name << ".Title" << ": \"";
++ if ( qApp != 0 ) {
++ os << res.getUserCommandTitle( ii );
++ }
++ else {
++ os << "<menu title>";
++ }
++ os << "\"" << endl;
++
++ os << tok->_name << "." << tokc->_name << ".Command" << ": \"";
++ if ( qApp != 0 ) {
++ os << res.getUserCommand( ii );
++ }
++ else {
++ os << "<command>";
++ }
++ os << "\"" << endl;
++
++ drend( os );
++ ddbegin( os );
++ os << tokc->_desc << endl;
++ ddend( os );
++ }
++ ddend( os );
++ }
++
++ {
+ int nbbool = sizeof(boolkwdList)/sizeof(StringToken);
+ for ( ii = 0; ii < nbbool; ++ii ) {
+ XxBoolOpt bo = static_cast<XxBoolOpt>( boolkwdList[ii]._token - BOOLKWD_BASE );
+diff -urNad xxdiff-3.2~/src/resParser.l xxdiff-3.2/src/resParser.l
+--- xxdiff-3.2~/src/resParser.l 2009-04-29 18:34:35.000000000 +0530
++++ xxdiff-3.2/src/resParser.l 2009-04-29 18:44:24.000000000 +0530
+@@ -49,6 +49,7 @@
+ extern StringToken commandSwitchList[];
+ extern StringToken showList[];
+ extern StringToken tagList[];
++extern StringToken userList[];
+
+ extern int kwdList_size;
+ extern int boolkwdList_size;
+@@ -58,7 +59,7 @@
+ extern int commandSwitchList_size;
+ extern int showList_size;
+ extern int tagList_size;
+-
++extern int userList_size;
+ }
+ using namespace XxResParserNS;
+
+@@ -101,6 +102,7 @@
+
+ %s GEOM_SC
+ %s ACCEL_SC
++%s USER_SC USERCT_SC
+ %s COLOR_SC COLORBF_SC
+ %s COMMAND_SC
+ %s COMMANDSW_SC
+@@ -149,6 +151,24 @@
+ );
+ }
+
++<USER_SC>{id} {
++ int token = parseFromKeywordList(
++ userList, userList_size,
++ USERNAME, "user",
++ yytext, yylval->num
++ );
++ if ( token != ERROR_TOKEN ) {
++ BEGIN(USERCT_SC);
++ }
++ return token;
++}
++
++<USERCT_SC>([cC]ommand|[tT]itle) {
++ BEGIN(INITIAL);
++ yylval->num = ( (yytext[0] == 'c') || (yytext[0] == 'C') ) ? USERCOMMAND : USERTITLE;
++ return yylval->num;
++}
++
+ <COLOR_SC>{id} {
+ BEGIN(INITIAL);
+ int token = parseFromKeywordList(
+@@ -257,6 +277,7 @@
+ switch ( yylval->num ) {
+ case PREFGEOMETRY: BEGIN(GEOM_SC); break;
+ case ACCEL: BEGIN(ACCEL_SC); break;
++ case USER: BEGIN(USER_SC); break;
+ case COLOR: BEGIN(COLOR_SC); break;
+ case COMMAND: BEGIN(COMMAND_SC); break;
+ case COMMANDSW: BEGIN(COMMANDSW_SC); break;
+diff -urNad xxdiff-3.2~/src/resParser.y xxdiff-3.2/src/resParser.y
+--- xxdiff-3.2~/src/resParser.y 2009-04-29 18:34:35.000000000 +0530
++++ xxdiff-3.2/src/resParser.y 2009-04-29 18:44:24.000000000 +0530
+@@ -77,6 +77,9 @@
+ %token ACCEL
+ %token <num> ACCELNAME
+
++%token USER
++%token <num> USERNAME USERCOMMAND USERTITLE
++
+ %token COLOR
+ %token <num> COLORNAME BACK FORE
+
+@@ -141,6 +144,7 @@
+
+ /* typed rules */
+ %type <num> colorbf
++%type <num> userct
+ %type <num> boolkwd
+
+ %start xxdiffrc
+@@ -158,6 +162,7 @@
+ | prefgeometry
+ | style
+ | accel
++ | user
+ | color
+ | boolopt
+ | command
+@@ -235,6 +240,28 @@
+ }
+ ;
+
++user : USER DOT USERNAME DOT userct COLON STRING
++ {
++ /*printf( "==> User %d, %d: %s\n", $3, $5, $7 );*/
++ if ($5 == USERCOMMAND)
++ RESOURCES->setUserCommand( $3, $7 );
++ else if ($5 == USERTITLE)
++ RESOURCES->setUserCommandTitle( $3, $7 );
++ else {
++ char buf[2048];
++ ::snprintf( buf, 2048,
++ "Unrecognized user command: %s\n", $7 );
++ yyerror( buf );
++ }
++
++ }
++ ;
++
++userct : USERCOMMAND
++ | USERTITLE
++ ;
++
++
+ color : COLOR DOT COLORNAME COLON STRING
+ {
+ /*printf( "==> color %d back: %s\n", $3, $5 );*/
+diff -urNad xxdiff-3.2~/src/resources.cpp xxdiff-3.2/src/resources.cpp
+--- xxdiff-3.2~/src/resources.cpp 2009-04-29 18:34:35.000000000 +0530
++++ xxdiff-3.2/src/resources.cpp 2009-04-29 18:44:24.000000000 +0530
+@@ -802,6 +802,28 @@
+
+ //------------------------------------------------------------------------------
+ //
++void XxResources::setUserCommand( unsigned int n, const QString& fn )
++{
++ if (n < USER_COMMAND_LAST) {
++ _userCommand[n] = fn;
++ emit changed();
++ }
++ /* Fail silently */
++}
++
++//------------------------------------------------------------------------------
++//
++void XxResources::setUserCommandTitle( unsigned int n, const QString& fn )
++{
++ if (n < USER_COMMAND_LAST) {
++ _userCommandTitle[n] = fn;
++ emit changed();
++ }
++ /* Fail silently */
++}
++
++//------------------------------------------------------------------------------
++//
+ bool XxResources::compareFonts( const QFont& f1, const QFont& f2 )
+ {
+ if ( f1.rawMode() || f2.rawMode() ) {
+diff -urNad xxdiff-3.2~/src/resources.h xxdiff-3.2/src/resources.h
+--- xxdiff-3.2~/src/resources.h 2009-04-29 18:34:35.000000000 +0530
++++ xxdiff-3.2/src/resources.h 2009-04-29 18:44:24.000000000 +0530
+@@ -203,6 +203,7 @@
+ ACCEL_IGNORE_FILE_LEFT,
+ ACCEL_IGNORE_FILE_MIDDLE,
+ ACCEL_IGNORE_FILE_RIGHT,
++ ACCEL_USER_ADD_NEW,
+ ACCEL_HELP_MAN_PAGE,
+ ACCEL_HELP_ON_CONTEXT,
+ ACCEL_HELP_ABOUT,
+@@ -337,6 +338,13 @@
+ HD_MULTIPLE
+ };
+
++enum XxUserCommand {
++ USER_COMMAND1,
++ USER_COMMAND2,
++ USER_COMMAND3,
++ USER_COMMAND_LAST, // Not a real resource
++};
++
+ /*==============================================================================
+ * CLASS XxResources
+ *============================================================================*/
+@@ -550,6 +558,14 @@
+ void setMergedFilename( const QString& fn );
+ // </group>
+
++ // Get/set user command.
++ // <group>
++ const QString& getUserCommand( unsigned int n) const;
++ void setUserCommand( unsigned n, const QString& fn );
++ const QString& getUserCommandTitle( unsigned int n) const;
++ void setUserCommandTitle( unsigned int n, const QString& fn );
++ // </group>
++
+
+ // Return a table for the dynamic programming algorithm, if the maximum size
+ // of the table allows it. If not, then return 0.
+@@ -627,6 +643,8 @@
+ uint _hordiffContext;
+ uint _showPaneMergedViewPercent;
+ QString _mergedFilename;
++ QString _userCommand[ USER_COMMAND_LAST ];
++ QString _userCommandTitle[ USER_COMMAND_LAST ];
+
+ // Dynamic programming table used for horizontal diffs computation.
+ // <group>
+diff -urNad xxdiff-3.2~/src/resources.inline.h xxdiff-3.2/src/resources.inline.h
+--- xxdiff-3.2~/src/resources.inline.h 2009-04-29 18:44:24.000000000 +0530
++++ xxdiff-3.2/src/resources.inline.h 2009-04-29 18:44:24.000000000 +0530
+@@ -242,6 +242,24 @@
+
+ //------------------------------------------------------------------------------
+ //
++inline const QString& XxResources::getUserCommand(unsigned int n) const
++{
++ if (n < USER_COMMAND_LAST)
++ return _userCommand[n];
++ return _userCommand[USER_COMMAND_LAST-1];
++}
++
++//------------------------------------------------------------------------------
++//
++inline const QString& XxResources::getUserCommandTitle(unsigned int n) const
++{
++ if (n < USER_COMMAND_LAST)
++ return _userCommandTitle[n];
++ return _userCommandTitle[USER_COMMAND_LAST-1];
++}
++
++//------------------------------------------------------------------------------
++//
+ inline void XxResources::setFbColors(
+ XxColor color,
+ const char* backstr,
--- xxdiff-3.2.orig/debian/patches/07_subversion_externals.dpatch
+++ xxdiff-3.2/debian/patches/07_subversion_externals.dpatch
@@ -0,0 +1,164 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 07_svn_externals.dpatch by <Joseph Rawson <umeboshi3@gmail.com>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: xx-svn-diff should not fail when it encounters an external item
+
+@DPATCH@
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/scm/subversion.py xxdiff-3.2/lib/python/xxdiff/scm/subversion.py
+--- xxdiff-3.2~/lib/python/xxdiff/scm/subversion.py 2006-06-11 18:31:29.000000000 -0500
++++ xxdiff-3.2/lib/python/xxdiff/scm/subversion.py 2008-09-09 20:31:21.000000000 -0500
+@@ -88,6 +88,72 @@
+ Status result for a file in a subversion repository.
+ """
+
++def _parse_status_line(line):
++ status = SvnStatus()
++ status.parsed_line = line
++
++ # The first six columns in the output are each one character wide:
++ lc = iter(line)
++
++ # First column: Says if item was added, deleted, or otherwise
++ # changed
++ # ' ' no modifications
++ # 'A' Added
++ # 'C' Conflicted
++ # 'D' Deleted
++ # 'G' Merged
++ # 'I' Ignored
++ # 'M' Modified
++ # 'R' Replaced
++ # 'X' item is unversioned, but is used by an externals
++ # definition
++ # '?' item is not under version control
++ # '!' item is missing (removed by non-svn command) or incomplete
++ # '~' versioned item obstructed by some item of a different kind
++ status.status = lc.next()
++
++ # Second column: Modifications of a file's or directory's
++ # properties
++ # ' ' no modifications
++ # 'C' Conflicted
++ # 'M' Modified
++ status.modprops = lc.next()
++
++ # Third column: Whether the working copy directory is locked
++ # ' ' not locked
++ # 'L' locked
++ status.dirlocked = lc.next()
++
++ # Fourth column: Scheduled commit will contain
++ # addition-with-history
++ # ' ' no history scheduled with commit
++ # '+' history scheduled with commit
++ status.withhist = lc.next()
++
++ # Fifth column: Whether the item is switched relative to its
++ # parent
++ # ' ' normal
++ # 'S' switched
++ status.switched = lc.next()
++
++ # Sixth column: Repository lock token
++ # (without -u)
++ # ' ' no lock token
++ # 'K' lock token present
++ # (with -u)
++ # ' ' not locked in repository, no lock token
++ # 'K' locked in repository, lock toKen present
++ # 'O' locked in repository, lock token in some Other working
++ # copy
++ # 'T' locked in repository, lock token present but sTolen
++ # 'B' not locked in repository, lock token present but Broken
++ status.locktoken = lc.next()
++
++ # There is a space and the rest is a filename:
++ status.filename = line[7:].strip()
++ assert isabs(status.filename)
++ return status
++
+ def status(rootdirs):
+ """
+ Obtains the status from all the given root directories.
+@@ -106,72 +172,14 @@
+
+ statii = []
+ for line in stdout.splitlines():
+- status = SvnStatus()
+- status.parsed_line = line
+-
+- # The first six columns in the output are each one character wide:
+- lc = iter(line)
+-
+- # First column: Says if item was added, deleted, or otherwise
+- # changed
+- # ' ' no modifications
+- # 'A' Added
+- # 'C' Conflicted
+- # 'D' Deleted
+- # 'G' Merged
+- # 'I' Ignored
+- # 'M' Modified
+- # 'R' Replaced
+- # 'X' item is unversioned, but is used by an externals
+- # definition
+- # '?' item is not under version control
+- # '!' item is missing (removed by non-svn command) or incomplete
+- # '~' versioned item obstructed by some item of a different kind
+- status.status = lc.next()
+-
+- # Second column: Modifications of a file's or directory's
+- # properties
+- # ' ' no modifications
+- # 'C' Conflicted
+- # 'M' Modified
+- status.modprops = lc.next()
+-
+- # Third column: Whether the working copy directory is locked
+- # ' ' not locked
+- # 'L' locked
+- status.dirlocked = lc.next()
+-
+- # Fourth column: Scheduled commit will contain
+- # addition-with-history
+- # ' ' no history scheduled with commit
+- # '+' history scheduled with commit
+- status.withhist = lc.next()
+-
+- # Fifth column: Whether the item is switched relative to its
+- # parent
+- # ' ' normal
+- # 'S' switched
+- status.switched = lc.next()
+-
+- # Sixth column: Repository lock token
+- # (without -u)
+- # ' ' no lock token
+- # 'K' lock token present
+- # (with -u)
+- # ' ' not locked in repository, no lock token
+- # 'K' locked in repository, lock toKen present
+- # 'O' locked in repository, lock token in some Other working
+- # copy
+- # 'T' locked in repository, lock token present but sTolen
+- # 'B' not locked in repository, lock token present but Broken
+- status.locktoken = lc.next()
+-
+- # There is a space and the rest is a filename:
+- status.filename = line[7:].strip()
+- assert isabs(status.filename)
+-
+- statii.append(status)
+-
++ ignore = False
++ if not line:
++ ignore = True
++ if line.startswith('Performing status on external item'):
++ ignore = True
++ if not ignore:
++ status = _parse_status_line(line)
++ statii.append(status)
+
+ # Note: we could parse this information, but this requires server access:
+ # -----------------------------------------------------------------------
--- xxdiff-3.2.orig/debian/patches/08_516143_xml_is_text.dpatch
+++ xxdiff-3.2/debian/patches/08_516143_xml_is_text.dpatch
@@ -0,0 +1,28 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 08_516143_xml_is_text.dpatch by Y Giridhar Appaji Nag <appaji@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Don't classify XML files as non-text, thanks "J.P. Delport"
+## DP: <jpdelport@csir.co.za> for the bug report #516143 and the patch.
+
+@DPATCH@
+diff -urNad xxdiff-3.2~/lib/python/xxdiff/utils.py xxdiff-3.2/lib/python/xxdiff/utils.py
+--- xxdiff-3.2~/lib/python/xxdiff/utils.py 2008-09-30 18:03:57.000000000 +0530
++++ xxdiff-3.2/lib/python/xxdiff/utils.py 2009-02-24 14:48:08.000000000 +0530
+@@ -59,6 +59,7 @@
+ # options were taken from Ian F. Darwin's file implementation.
+ guesscmd = ['file', '-b', '-L']
+ text_re = re.compile('\\btext\\b')
++xml_re = re.compile('\\bXML\\b')
+ empty_re = re.compile('^empty$')
+
+ def istextfile(fn):
+@@ -75,7 +76,7 @@
+ if p.returncode != 0 or stderr or stdout.startswith('cannot open'):
+ raise RuntimeError("Error: Running 'file' on '%s'." % fn)
+
+- return bool(text_re.search(stdout) or empty_re.match(stdout))
++ return bool(text_re.search(stdout) or xml_re.search(stdout) or empty_re.match(stdout))
+
+
+ #-------------------------------------------------------------------------------