From 071b825b23911a69dd1cd2f8cda004ef8a781fae Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Thu, 21 May 2009 17:22:01 +0300 Subject: [PATCH] Support special value "max" where xz and xzdec accept an integer. 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 | 4 ++++ src/xzdec/xzdec.c | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/xz/util.c b/src/xz/util.c index 9843c04..d200bfc 100644 --- a/src/xz/util.c +++ b/src/xz/util.c @@ -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); diff --git a/src/xzdec/xzdec.c b/src/xzdec/xzdec.c index 6c1f824..90bc657 100644 --- a/src/xzdec/xzdec.c +++ b/src/xzdec/xzdec.c @@ -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); -- 2.7.4