X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fopt%2Fopt.c;h=94eb0d5ab7f2808e0f1a4fb155b617cebf9422b6;hp=094b15c7e1b48c25aed1256aa741921ad8091f52;hb=42cdf910d2ab677e8cdafe17085efdf68c12b3da;hpb=5add556a1cb64b49a664506aa76216d885b22c97 diff --git a/ccan/opt/opt.c b/ccan/opt/opt.c index 094b15c7..94eb0d5a 100644 --- a/ccan/opt/opt.c +++ b/ccan/opt/opt.c @@ -4,7 +4,6 @@ #include #include #include -#include #include #include #include @@ -102,6 +101,12 @@ const char *next_sopt(const char *p, unsigned *i) return p; } +/* Avoids dependency on err.h or ccan/err */ +#ifndef failmsg +#define failmsg(fmt, ...) \ + do { fprintf(stderr, fmt, __VA_ARGS__); exit(1); } while(0) +#endif + static void check_opt(const struct opt_table *entry) { const char *p; @@ -110,26 +115,26 @@ static void check_opt(const struct opt_table *entry) if (entry->type != OPT_HASARG && entry->type != OPT_NOARG && entry->type != (OPT_EARLY|OPT_HASARG) && entry->type != (OPT_EARLY|OPT_NOARG)) - errx(1, "Option %s: unknown entry type %u", - entry->names, entry->type); + failmsg("Option %s: unknown entry type %u", + entry->names, entry->type); if (!entry->desc) - errx(1, "Option %s: description cannot be NULL", entry->names); + failmsg("Option %s: description cannot be NULL", entry->names); if (entry->names[0] != '-') - errx(1, "Option %s: does not begin with '-'", entry->names); + failmsg("Option %s: does not begin with '-'", entry->names); for (p = first_name(entry->names, &len); p; p = next_name(p, &len)) { if (*p == '-') { if (len == 1) - errx(1, "Option %s: invalid long option '--'", - entry->names); + failmsg("Option %s: invalid long option '--'", + entry->names); opt_num_long++; } else { if (len != 1) - errx(1, "Option %s: invalid short option" - " '%.*s'", entry->names, len+1, p-1); + failmsg("Option %s: invalid short option" + " '%.*s'", entry->names, len+1, p-1); opt_num_short++; if (entry->type == OPT_HASARG) opt_num_short_arg++; @@ -137,8 +142,8 @@ static void check_opt(const struct opt_table *entry) /* Don't document args unless there are some. */ if (entry->type == OPT_NOARG) { if (p[len] == ' ' || p[len] == '=') - errx(1, "Option %s: does not take arguments" - " '%s'", entry->names, p+len+1); + failmsg("Option %s: does not take arguments" + " '%s'", entry->names, p+len+1); } } }