diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2017-09-13 10:11:49 +0200 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2017-09-14 18:30:47 +0200 |
| commit | f28fb7268ce372c6c0c4bf10b1153017f6f8a994 (patch) | |
| tree | 6f56581330f35a5a9648a2313fe4dac08f695171 | |
| parent | 443142fb7e0f62e7e4fde9edc23166e21a7cbbd4 (diff) | |
| download | sparse-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.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -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) \ |
