mostly revert commit 700c1c04445f4ff11cdb7256df2be57db55abbf6
[alioth/cvs.git] / src / parseinfo.c
index 51e6873..0f5aec9 100644 (file)
@@ -230,7 +230,7 @@ readSizeT (const char *infopath, const char *option, const char *p,
        return true;
     }
 
-    /* Record the factor character (kilo, mega, giga, tera).  */
+    /* Record the factor character (kibi, mebi, gibi, tebi).  */
     if (!isdigit (p[strlen(p) - 1]))
     {
        switch (p[strlen(p) - 1])
@@ -241,16 +241,16 @@ readSizeT (const char *infopath, const char *option, const char *p,
                factor = xtimes (factor, 1024);
            case 'M':
                factor = xtimes (factor, 1024);
-           case 'k':
+           case 'K':
                factor = xtimes (factor, 1024);
                break;
            default:
                error (0, 0,
     "%s: Unknown %s factor: `%c'",
-                      infopath, option, p[strlen(p)]);
+                      infopath, option, p[strlen(p) - 1]);
                return false;
        }
-       TRACE (TRACE_DATA, "readSizeT(): Found factor %u for %s",
+       TRACE (TRACE_DATA, "readSizeT(): Found factor %zu for %s",
               factor, option);
     }
 
@@ -274,9 +274,9 @@ readSizeT (const char *infopath, const char *option, const char *p,
        /* Don't return an error, just max out.  */
        num = SIZE_MAX;
 
-    TRACE (TRACE_DATA, "readSizeT(): read number %u for %s", num, option);
+    TRACE (TRACE_DATA, "readSizeT(): read number %zu for %s", num, option);
     *val = xtimes (strtoul (p, NULL, 10), factor);
-    TRACE (TRACE_DATA, "readSizeT(): returnning %u for %s", *val, option);
+    TRACE (TRACE_DATA, "readSizeT(): returnning %zu for %s", *val, option);
     return true;
 }
 
@@ -298,7 +298,7 @@ new_config (void)
     new->MaxCompressionLevel = 9;
 #endif /* SERVER_SUPPORT */
 #ifdef PROXY_SUPPORT
-    new->MaxProxyBufferSize = (size_t)(8 * 1024 * 1024); /* 8 megabytes,
+    new->MaxProxyBufferSize = (size_t)(8 * 1024 * 1024); /* 8 mebibytes,
                                                           * by default.
                                                           */
 #endif /* PROXY_SUPPORT */
@@ -392,6 +392,9 @@ parse_config (const char *cvsroot, const char *path)
      */
     bool processing = true;
     bool processed = true;
+#ifdef SERVER_SUPPORT
+    size_t dummy_sizet;
+#endif
 
     TRACE (TRACE_FUNCTION, "parse_config (%s)", cvsroot);
 
@@ -689,13 +692,29 @@ parse_config (const char *cvsroot, const char *path)
            readBool (infopath, "UseArchiveCommentLeader", p,
                      &retval->UseArchiveCommentLeader);
 #ifdef SERVER_SUPPORT
-       else if (!strcmp (line, "MinCompressionLevel"))
-           readSizeT (infopath, "MinCompressionLevel", p,
-                      &retval->MinCompressionLevel);
-       else if (!strcmp (line, "MaxCompressionLevel"))
-           readSizeT (infopath, "MaxCompressionLevel", p,
-                      &retval->MaxCompressionLevel);
+       else if (!strcmp (line, "MinCompressionLevel")) {
+           readSizeT (infopath, "MinCompressionLevel", p, &dummy_sizet);
+           retval->MinCompressionLevel = dummy_sizet;
+       }
+       else if (!strcmp (line, "MaxCompressionLevel")) {
+           readSizeT (infopath, "MaxCompressionLevel", p, &dummy_sizet);
+           retval->MaxCompressionLevel = dummy_sizet;
+       }
 #endif /* SERVER_SUPPORT */
+#if !defined(LOCK_COMPATIBILITY) || !defined(SUPPORT_OLD_INFO_FMT_STRINGS)
+       else if ((!strcmp (line, "tag")) || (!strcmp (line, "umask"))
+         || (!strcmp (line, "DisableXProg")) || (!strcmp (line, "dlimit"))
+         || (!strcmp (line, "forceReadOnlyFS"))) {
+           /* We are dealing with keywords removed between cvs 1.11.1p1
+              and cvs 1.12.10; odds are we are not being able to handle
+              access or concurrent access with 1.11 cvs correctly */
+           error (0, 0, "%s: found keyword '%s' in repository",
+                  infopath, line);
+           error (readonlyfs ? 0 : 1, 0, readonlyfs
+               ? "Danger: Granting read access to incompatible repository!"
+               : "Do not try to access a cvs 1.11 repository!");
+       }
+#endif
        else
            /* We may be dealing with a keyword which was added in a
               subsequent version of CVS.  In that case it is a good idea