I have an issue with GNU-diff which uses
this Gnulib function 'add_exclude_file()'.

A command like:
  diff -X exclude new old > x.diff
or
  diff --exclude-from=exclude new old > x.diff

Adding some trace in 'diff.c', I see that 'add_exclude_file()'
returns -1 and 'errno = 22' (EINVAL).

But this works:
  cat exclude | diff --exclude-from=- new old > x.diff

GNU-diff has not changed in ages WRT to this function.

So I patched 'exclude.c' like this:
--- a/lib/exclude.c 2021-03-17 21:03:14
+++ b/lib/exclude.c 2021-05-24 13:33:05
@@ -683,7 +683,7 @@

   if (use_stdin)
     in = stdin;
-  else if (! (in = fopen (file_name, "re")))
+  else if (! (in = fopen (file_name, "r")))
     return -1;


a presto! GNU-diff now works fine. So what is
this mode "re" that fails on Windows?

--
--gv

Reply via email to