Support special value "max" where xz and xzdec accept an integer.
authorLasse Collin <lasse.collin@tukaani.org>
Thu, 21 May 2009 14:22:01 +0000 (17:22 +0300)
committerLasse Collin <lasse.collin@tukaani.org>
Thu, 21 May 2009 14:22:01 +0000 (17:22 +0300)
Don't round the memory usage limit in xzdec --help to avoid
an integer overflow and to not give wrong impression that
the limit is high enough when it may not actually be.

src/xz/util.c
src/xzdec/xzdec.c

index 9843c04..d200bfc 100644 (file)
@@ -45,6 +45,10 @@ str_to_uint64(const char *name, const char *value, uint64_t min, uint64_t max)
        while (*value == ' ' || *value == '\t')
                ++value;
 
+       // Accept special value "max". Supporting "min" doesn't seem useful.
+       if (strcmp(value, "max") == 0)
+               return max;
+
        if (*value < '0' || *value > '9')
                message_fatal(_("%s: Value is not a non-negative "
                                "decimal integer"), value);
index 6c1f824..90bc657 100644 (file)
@@ -86,7 +86,7 @@ help(void)
                " MiB of memory at maximum.\n"
 "\n"
 "Report bugs to <" PACKAGE_BUGREPORT "> (in English or Finnish).\n",
-               argv0, (memlimit + 512 * 1024) / (1024 * 1024));
+               argv0, memlimit / (1024 * 1024));
        my_exit();
 }
 
@@ -128,6 +128,10 @@ str_to_uint64(const char *value)
 {
        uint64_t result = 0;
 
+       // Accept special value "max".
+       if (strcmp(value, "max") == 0)
+               return UINT64_MAX;
+
        if (*value < '0' || *value > '9') {
                fprintf(stderr, "%s: %s: Not a number\n", argv0, value);
                exit(EXIT_FAILURE);