diff -bruw diffutils-2.8.7-1-orig/lib/exclude.c diffutils-2.8.7-1/lib/exclude.c
--- diffutils-2.8.7-1-orig/lib/exclude.c	2003-10-27 09:41:23.000000000 +0100
+++ diffutils-2.8.7-1/lib/exclude.c	2004-08-20 12:13:53.146894400 +0200
@@ -138,6 +138,15 @@
 {
   size_t exclude_count = ex->exclude_count;
 
+#ifdef PATHCOMPRESS
+  if (f)
+    {
+      if (strcmp(f,"=dirnames")==0)
+	{
+	  return true;
+	}
+    }
+#endif
   /* If no options are given, the default is to include.  */
   if (exclude_count == 0)
     return false;
diff -bruw diffutils-2.8.7-1-orig/src/context.c diffutils-2.8.7-1/src/context.c
--- diffutils-2.8.7-1-orig/src/context.c	2004-04-12 09:44:35.000000000 +0200
+++ diffutils-2.8.7-1/src/context.c	2004-08-20 12:13:53.196966400 +0200
@@ -64,7 +64,13 @@
 	  verify (info_preserved, sizeof inf->stat.st_mtime <= sizeof sec);
 	  sprintf (buf, "%ld.%.9d", sec, nsec);
 	}
+#ifdef PATHCOMPRESS
+      char uncompressed_name[4096];
+      pathcompress_uncompress_path(inf->name, uncompressed_name);
+      fprintf (outfile, "%s %s\t%s\n", mark, uncompressed_name, buf);
+#else
       fprintf (outfile, "%s %s\t%s\n", mark, inf->name, buf);
+#endif
     }
 }
 
diff -bruw diffutils-2.8.7-1-orig/src/diff.c diffutils-2.8.7-1/src/diff.c
--- diffutils-2.8.7-1-orig/src/diff.c	2004-04-12 09:44:35.000000000 +0200
+++ diffutils-2.8.7-1/src/diff.c	2004-11-08 10:08:33.184814400 +0100
@@ -273,6 +273,11 @@
   re_set_syntax (RE_SYNTAX_GREP | RE_NO_POSIX_BACKTRACKING);
   excluded = new_exclude ();
 
+#ifdef PATHCOMPRESS
+	  binary = true;
+	  set_binary_mode (STDOUT_FILENO, true);
+#endif
+
   /* Decode the options.  */
 
   while ((c = getopt_long (argc, argv, shortopts, longopts, 0)) != -1)
@@ -759,8 +764,17 @@
 		try_help ("extra operand `%s'", argv[optind + 2]);
 	    }
 
+#if PATHCOMPRESS
+	  char compressed_file0[4096];
+	  char compressed_file1[4096];
+	  pathcompress_compress_path(argv[optind], compressed_file0);
+	  pathcompress_compress_path(argv[optind+1], compressed_file1);
+	  exit_status = compare_files ((struct comparison *) 0,
+				       compressed_file0, compressed_file1);
+#else
 	  exit_status = compare_files ((struct comparison *) 0,
 				       argv[optind], argv[optind + 1]);
+#endif
 	}
     }
 
@@ -1049,6 +1063,10 @@
       char const *name = name0 == 0 ? name1 : name0;
       char const *dir = parent->file[name0 == 0].name;
 
+#ifdef PATHCOMPRESS
+      char uncompressed_dir[4096];
+      dir = pathcompress_uncompress_path(dir, uncompressed_dir);
+#endif
       /* See POSIX 1003.1-2001 for this format.  */
       message ("Only in %s: %s\n", dir, name);
 
@@ -1244,6 +1262,11 @@
 	      char const *dir
 		= parent->file[cmp.file[0].desc == NONEXISTENT].name;
 
+#ifdef PATHCOMPRESS
+      char uncompressed_dir[4096];
+      dir = pathcompress_uncompress_path(dir, uncompressed_dir);
+#endif
+
 	      /* See POSIX 1003.1-2001 for this format.  */
 	      message ("Only in %s: %s\n", dir, name0);
 
diff -bruw diffutils-2.8.7-1-orig/src/diff3.c diffutils-2.8.7-1/src/diff3.c
--- diffutils-2.8.7-1-orig/src/diff3.c	2004-04-12 09:44:35.000000000 +0200
+++ diffutils-2.8.7-1/src/diff3.c	2004-10-07 09:08:27.966227200 +0200
@@ -322,6 +322,20 @@
   for (i = tag_count; i < 3; i++)
     tag_strings[i] = file[i];
 
+#ifdef PATHCOMPRESS
+  char* compressed_file[3];
+  char compressed_file0[4096];
+  char compressed_file1[4096];
+  char compressed_file2[4096];
+  compressed_file[0]= compressed_file0;
+  compressed_file[1]= compressed_file1;
+  compressed_file[2]= compressed_file2;
+  pathcompress_compress_path(file[0], compressed_file[0]);
+  pathcompress_compress_path(file[1], compressed_file[1]);
+  pathcompress_compress_path(file[2], compressed_file[2]);
+  file = compressed_file;
+#endif
+
   /* Always compare file1 to file2, even if file2 is "-".
      This is needed for -mAeExX3.  Using the file0 as
      the common file would produce wrong results, because if the
diff -bruw diffutils-2.8.7-1-orig/src/util.c diffutils-2.8.7-1/src/util.c
--- diffutils-2.8.7-1-orig/src/util.c	2004-04-12 09:44:35.000000000 +0200
+++ diffutils-2.8.7-1/src/util.c	2004-08-20 12:13:53.407268800 +0200
@@ -155,11 +155,21 @@
 static char const *current_name1;
 static bool currently_recursive;
 
+#ifdef PATHCOMPRESS
+  char uncompressed_name0[4096];
+  char uncompressed_name1[4096];
+#endif
+
 void
 setup_output (char const *name0, char const *name1, bool recursive)
 {
+#ifdef PATHCOMPRESS
+  current_name0 = pathcompress_uncompress_path(name0, uncompressed_name0);
+  current_name1 = pathcompress_uncompress_path(name1, uncompressed_name1);
+#else
   current_name0 = name0;
   current_name1 = name1;
+#endif
   currently_recursive = recursive;
   outfile = 0;
 }
