aboutsummaryrefslogtreecommitdiff
path: root/opts.c
diff options
context:
space:
mode:
Diffstat (limited to 'opts.c')
-rw-r--r--opts.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/opts.c b/opts.c
index 4027d18..373e5b6 100644
--- a/opts.c
+++ b/opts.c
@@ -7,6 +7,7 @@
*/
#include "opts.h"
+#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <glib.h>
@@ -102,3 +103,20 @@ void process_options(int *argcp, char *argv[], struct opt opts[],
}
*argcp = newargctr;
}
+
+int opt_get_unsigned(const struct opt *o, unsigned *valp)
+{
+ char *end;
+ unsigned val;
+ if (!o->value || !o->value[0]) {
+ fprintf(stderr, "Missing value for '%s' option\n", o->optname);
+ return -1;
+ }
+ val = strtoul(o->value, &end, 0);
+ if (end[0]) {
+ fprintf(stderr, "Invalid value for '%s' option\n", o->optname);
+ return -1;
+ }
+ *valp = val;
+ return 0;
+}