aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2017-09-13 10:11:49 +0200
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2017-09-14 18:30:47 +0200
commitf28fb7268ce372c6c0c4bf10b1153017f6f8a994 (patch)
tree6f56581330f35a5a9648a2313fe4dac08f695171
parent443142fb7e0f62e7e4fde9edc23166e21a7cbbd4 (diff)
downloadsparse-dev-f28fb7268ce372c6c0c4bf10b1153017f6f8a994.tar.gz
option: add support for '-<some-option>=unlimited'
For some options with a numerical value, it is sometimes desirable, when the value is used to limits something, to easily specify we want to remove any limits. This patch allow to use 'unlimited' for this by interpreting it as the maximum value. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r--lib.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib.c b/lib.c
index 6352b4e9..4c210d58 100644
--- a/lib.c
+++ b/lib.c
@@ -511,6 +511,7 @@ static int handle_simple_switch(const char *arg, const struct flag *flags)
#define OPTNUM_ZERO_IS_INF 1
+#define OPTNUM_UNLIMITED 2
#define OPT_NUMERIC(NAME, TYPE, FUNCTION) \
static int opt_##NAME(char *arg, const char *name, TYPE *ptr, int flag) \
@@ -524,6 +525,9 @@ static int opt_##NAME(char *arg, const char *name, TYPE *ptr, int flag) \
opt++; /* opt's last char is '=' */ \
val = FUNCTION(opt, &end, 0); \
if (*end != '\0' || end == opt) { \
+ if ((flag & OPTNUM_UNLIMITED) && !strcmp(opt, "unlimited")) \
+ val = ~val; \
+ else \
die("error: missing argument to \"%s\"", name); \
} \
if ((flag & OPTNUM_ZERO_IS_INF) && val == 0) \