]> git.ozlabs.org Git - ccan/blobdiff - ccan/opt/helpers.c
opt: relicense to GPLv2+ (from GPLv3+)
[ccan] / ccan / opt / helpers.c
index 420a97a4fcac596fd31999ffbda42bb229a7f0f3..2c771bc3309062aa7cfea03423f719128f3c9686 100644 (file)
@@ -1,6 +1,9 @@
-/* Licensed under GPLv3+ - see LICENSE file for details */
+/* Licensed under GPLv2+ - see LICENSE file for details */
 #include <ccan/opt/opt.h>
+#include <ccan/cast/cast.h>
+#include <inttypes.h>
 #include <string.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <errno.h>
 #include <stdio.h>
@@ -52,7 +55,7 @@ char *opt_set_invbool_arg(const char *arg, bool *b)
 /* Set a char *. */
 char *opt_set_charp(const char *arg, char **p)
 {
-       *p = (char *)arg;
+       *p = cast_const(char *, arg);
        return NULL;
 }
 
@@ -123,12 +126,18 @@ char *opt_inc_intval(int *i)
 char *opt_version_and_exit(const char *version)
 {
        printf("%s\n", version);
+       /* Don't have valgrind complain! */
+       opt_free_table();
        exit(0);
 }
 
 char *opt_usage_and_exit(const char *extra)
 {
-       printf("%s", opt_usage(opt_argv0, extra));
+       char *usage = opt_usage(opt_argv0, extra);
+       printf("%s", usage);
+       /* Don't have valgrind complain! */
+       opt_alloc.free(usage);
+       opt_free_table();
        exit(0);
 }
 
@@ -394,9 +403,9 @@ static void show_llong_with_suffix(char buf[OPT_SHOW_LEN], long long ll,
                ll = tmp;
        }
        if (i == 0)
-               snprintf(buf, OPT_SHOW_LEN, "%lld", ll);
+               snprintf(buf, OPT_SHOW_LEN, "%"PRId64, (int64_t)ll);
        else
-               snprintf(buf, OPT_SHOW_LEN, "%lld%c", ll, suffixes[i - 1]);
+               snprintf(buf, OPT_SHOW_LEN, "%"PRId64"%c", (int64_t)ll, suffixes[i - 1]);
 }
 
 static void show_ullong_with_suffix(char buf[OPT_SHOW_LEN], unsigned long long ull,
@@ -416,9 +425,9 @@ static void show_ullong_with_suffix(char buf[OPT_SHOW_LEN], unsigned long long u
                ull = tmp;
        }
        if (i == 0)
-               snprintf(buf, OPT_SHOW_LEN, "%llu", ull);
+               snprintf(buf, OPT_SHOW_LEN, "%"PRIu64, (uint64_t)ull);
        else
-               snprintf(buf, OPT_SHOW_LEN, "%llu%c", ull, suffixes[i - 1]);
+               snprintf(buf, OPT_SHOW_LEN, "%"PRIu64"%c", (uint64_t)ull, suffixes[i - 1]);
 }
 
 /* _bi, signed */