On Sat, 15 Oct 2005, Romain Francoise wrote:

> Your patch removes this 'intelligence' and as a result, rcsdiff will
> always skip diff generation when the revisions are identical, which is
> wrong if the user specified -y or -D.
>
> The "bug" is that RCS considers a long option name as a case where we
> don't know if diff(1) will produce output or not; indeed if the long
> options are --side-by-side or --ifdef (the long counterparts of -y and
> -D) then there will be output even if the revisions are identical.

Point taken.  Then, here's an even smaller patch:

--- rcsdiff.c   2005/10/14 20:35:53     1.1
+++ rcsdiff.c   2005/10/17 19:44:10
@@ -215,7 +215,11 @@
                    }
                    goto option_handled;
            case '-': case 'D':
-                   no_diff_means_no_output = false;
+                   if (c == 'D'
+                       || strcmp(*argv, "--side-by-side") == 0
+                       || strcmp(*argv, "--ifdef") == 0) {
+                       no_diff_means_no_output = false;
+                   }
                    /* fall into */
            case 'C': case 'F': case 'I': case 'L': case 'W':
 #if DIFF_L
--- rcsdiff.c   2005/10/14 20:35:53     1.1
+++ rcsdiff.c   2005/10/17 19:44:10
@@ -215,7 +215,11 @@
                    }
                    goto option_handled;
            case '-': case 'D':
-                   no_diff_means_no_output = false;
+                   if (c == 'D'
+                       || strcmp(*argv, "--side-by-side") == 0
+                       || strcmp(*argv, "--ifdef") == 0) {
+                       no_diff_means_no_output = false;
+                   }
                    /* fall into */
            case 'C': case 'F': case 'I': case 'L': case 'W':
 #if DIFF_L

Reply via email to