diff options
author | Johannes Löthberg <johannes@kyriasis.com> | 2014-11-10 23:50:09 +0100 |
---|---|---|
committer | Johannes Löthberg <johannes@kyriasis.com> | 2014-11-10 23:50:09 +0100 |
commit | a856598c95e5820e855f2483a49db5aa5e97176f (patch) | |
tree | 25721736400c99f9d672776766dea56034a31f93 /src/utils.c | |
parent | c9c31d8d15c2e7034a9a4dc1135a95aa60066b6d (diff) | |
download | yawa-a856598c95e5820e855f2483a49db5aa5e97176f.tar.xz |
Make non-negatable arguments unsigned, make parse_uint
Diffstat (limited to 'src/utils.c')
-rw-r--r-- | src/utils.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/utils.c b/src/utils.c index 20cc6d4..0441ba2 100644 --- a/src/utils.c +++ b/src/utils.c @@ -33,6 +33,30 @@ parse_int(char *string, char *arg) return (int)val; } +unsigned int +parse_uint(char *string, char *arg) +{ + errno = 0; + char *endptr; + unsigned long val = strtoul(string, &endptr, 10); + if (errno != 0) + { + char *errormsg; + asprintf(&errormsg, "parse_uint: failed to parse %s", arg); + + perror(errormsg); + free(errormsg); + exit(-2); + } + + if (endptr == string) + { + fprintf(stderr, "Valid %s not found\n", arg); + exit(-2); + } + return (unsigned int)val; +} + bool parse_color(char *hex, Color *c, int a) { |