cvs-cvs
[Top][All Lists]
Advanced

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

[Cvs-cvs] ccvs/src ChangeLog root.c sanity.sh


From: Derek Robert Price
Subject: [Cvs-cvs] ccvs/src ChangeLog root.c sanity.sh
Date: Tue, 28 Feb 2006 13:10:12 +0000

CVSROOT:        /cvsroot/cvs
Module name:    ccvs
Branch:         
Changes by:     Derek Robert Price <address@hidden>     06/02/28 13:10:12

Modified files:
        src            : ChangeLog root.c sanity.sh 

Log message:
        * root.c: Interpret specs that look like @server:/hostname as :ext:.
        * sanity.sh (parseroot2): Add a test for this.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/ChangeLog.diff?tr1=1.3353&tr2=1.3354&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/root.c.diff?tr1=1.123&tr2=1.124&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/sanity.sh.diff?tr1=1.1116&tr2=1.1117&r1=text&r2=text

Patches:
Index: ccvs/src/ChangeLog
diff -u ccvs/src/ChangeLog:1.3353 ccvs/src/ChangeLog:1.3354
--- ccvs/src/ChangeLog:1.3353   Tue Feb 28 03:25:00 2006
+++ ccvs/src/ChangeLog  Tue Feb 28 13:10:11 2006
@@ -1,3 +1,8 @@
+2006-02-28  Derek Price  <address@hidden>
+
+       * root.c: Interpret specs that look like @server:/hostname as :ext:.
+       * sanity.sh (parseroot2): Add a test for this.
+
 2006-02-27  Derek Price  <address@hidden>
 
        * rcs.c (rcsbuf_cache_open): Back out potentially dangerous change
Index: ccvs/src/root.c
diff -u ccvs/src/root.c:1.123 ccvs/src/root.c:1.124
--- ccvs/src/root.c:1.123       Mon Feb 27 14:41:30 2006
+++ ccvs/src/root.c     Tue Feb 28 13:10:11 2006
@@ -629,11 +629,32 @@
     else
     {
        /* If the method isn't specified, assume LOCAL_METHOD unless the root
-        * looks like server:/path.  Then assume EXT_METHOD.
+        * looks like address@hidden:/path.  Then assume EXT_METHOD.
         */
-       size_t len = strspn (cvsroot_copy, FQDN_CHARS);
-       if (len > 0 && cvsroot_copy[0] != '.' && cvsroot_copy[len] == ':')
-           newroot->method = ext_method;
+       char *slash = strchr (cvsroot_copy, '/');
+
+       if (slash)
+       {
+           char *atchar;
+           char *p;
+           size_t len;
+
+           *slash = '\0';
+           atchar = strchr (cvsroot_copy, '@');
+           p = (atchar) ? ++atchar : cvsroot_copy;
+           len = strspn (p, FQDN_CHARS);
+
+           /* FQDN_CHARS allows '.' and '-', but RFC 1035 forbids these as the
+            * first character, and prohibits '-' as the last character. A 
server
+            * name must be at least one character long.
+            */
+           if (len > 0 && p[0] != '.' && p[0] != '-' && p[len-1] != '-'
+               && p[len] == ':')
+               newroot->method = ext_method;
+           else
+               newroot->method = local_method;
+           *slash = '/';
+       }
        else
            newroot->method = local_method;
     }
Index: ccvs/src/sanity.sh
diff -u ccvs/src/sanity.sh:1.1116 ccvs/src/sanity.sh:1.1117
--- ccvs/src/sanity.sh:1.1116   Mon Feb 27 22:30:49 2006
+++ ccvs/src/sanity.sh  Tue Feb 28 13:10:11 2006
@@ -23654,18 +23654,28 @@
 
          # A standard case, hostname:dirname.
          mkdir parseroot2; cd parseroot2
+
+         mkdir 1; cd 1
          save_CVSROOT=$CVSROOT
          CVSROOT=$host:$CVSROOT_DIRNAME
          dotest parseroot2-1 "$testcvs -Q co CVSROOT"
          cd CVSROOT
          dotest parseroot2-2 "$testcvs -Q up"
+         cd ../..
 
          # parseroot2-3 & parseroot2-4 used to test the old degenerate case
          # hostname/path, but CVS now interprets that as a relative path and
-         # rejects it, as tested in crerepos-6a.
+         # rejects it, as tested in crerepos-6a.  Instead, test the case of
+         # @hostname:/path, where CVS interprets the empty username as the
+         # default (current) username.
+         mkdir 2; cd 2
+         address@hidden:$CVSROOT_DIRNAME
+         dotest parseroot2-3 "$testcvs -Q co CVSROOT"
+         cd CVSROOT
+         dotest parseroot2-4 "$testcvs -Q up"
 
          dokeep
-         cd ../..
+         cd ../../..
          CVSROOT=$save_CVSROOT
          rm -r parseroot2
          ;;




reply via email to

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