bug-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: cvs 1.11.2 rdiff fails with binary files


From: tony
Subject: Re: cvs 1.11.2 rdiff fails with binary files
Date: Wed, 30 Oct 2002 15:54:24 -0500
User-agent: Internet Messaging Program (IMP) 3.1

Quoting Larry Jones <address@hidden>:

> > What exactly is the point of the cvswrappers option during import
> > (-W)... it doesn't seem to matter with rdiff.  Is this just an
> rdiff
> > quirk, or am I missing something?
> 
> It marks the file as binary, which affects many things -- including
> rdiff -- just not in the way you wanted.

Ok, but now it does.  Here's a patch that works as follows:

For each file in the module we are rdiff'ing: if the two versions differ, but 
the file is marked as "binary" (via cvswrappers, or cvs admin -kb), then 
instead of trying to print the patch (which would result in an error and 
non-zero return code), just print out a message like the "patch" program does, 
ie:  "Binary files name:ver1 and name:ver2 differ".

Here it is:

diff -urN cvs-1.11.1p1-orig/src/patch.c cvs-1.11.1p1-apc/src/patch.c
--- cvs-1.11.1p1-orig/src/patch.c       Tue Apr 24 14:14:53 2001
+++ cvs-1.11.1p1-apc/src/patch.c        Wed Oct 30 15:32:38 2002
@@ -590,6 +592,28 @@
        case 0:                         /* nothing to do */
            break;
        case 1:
+           /* If files differ and are marked as binary, just output message */
+           if (rcsfile->expand != NULL && strcmp(rcsfile->expand, "b") == 0)
+           {
+               cvs_output("Binary files ", 0);
+               cvs_output(finfo->fullname, 0);
+               cvs_output(":", 1);
+               if (vers_tag)
+                   cvs_output(vers_tag, 0);
+               else
+                   cvs_output("missing", 0);
+               cvs_output(" and ", 0);
+               cvs_output(finfo->fullname, 0);
+               cvs_output(":", 1);
+               if (vers_head) 
+                   cvs_output(vers_head, 0);
+               else
+                   cvs_output("removed", 0);
+               cvs_output(" differ",0);
+               cvs_output("\n",1);
+               break;
+           }
+
            /*
             * The two revisions are really different, so read the first two
             * lines of the diff output file, and munge them to include more





reply via email to

[Prev in Thread] Current Thread [Next in Thread]