From: Rusty Russell Date: Sat, 9 Jun 2012 06:04:56 +0000 (+0930) Subject: opt: avoid using err.h. X-Git-Url: http://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=42cdf910d2ab677e8cdafe17085efdf68c12b3da opt: avoid using err.h. Seems it's not available on Solaris. --- 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); } } } diff --git a/ccan/opt/test/run-checkopt.c b/ccan/opt/test/run-checkopt.c index 71ee3c41..d54a7520 100644 --- a/ccan/opt/test/run-checkopt.c +++ b/ccan/opt/test/run-checkopt.c @@ -9,9 +9,9 @@ /* We don't actually want it to exit... */ static jmp_buf exited; -#define errx save_and_jump +#define failmsg save_and_jump -static void save_and_jump(int ecode, const char *fmt, ...); +static void save_and_jump(const char *fmt, ...); #include #include @@ -34,14 +34,14 @@ static int saved_vprintf(const char *fmt, va_list ap) return ret; } -static void save_and_jump(int ecode, const char *fmt, ...) +static void save_and_jump(const char *fmt, ...) { va_list ap; va_start(ap, fmt); saved_vprintf(fmt, ap); va_end(ap); - longjmp(exited, ecode + 1); + longjmp(exited, 1); } static void reset(void) @@ -66,7 +66,7 @@ int main(int argc, char *argv[]) NULL, NULL, "1.2.3", ""); fail("_opt_register returned?"); } else { - ok1(exitval - 1 == 1); + ok1(exitval == 1); ok1(strstr(output, "Option -a: unknown entry type")); } reset(); @@ -77,7 +77,7 @@ int main(int argc, char *argv[]) opt_register_noarg("-a", test_noarg, "", NULL); fail("_opt_register returned?"); } else { - ok1(exitval - 1 == 1); + ok1(exitval == 1); ok1(strstr(output, "Option -a: description cannot be NULL")); } reset(); @@ -88,7 +88,7 @@ int main(int argc, char *argv[]) opt_register_noarg("a", test_noarg, "", ""); fail("_opt_register returned?"); } else { - ok1(exitval - 1 == 1); + ok1(exitval == 1); ok1(strstr(output, "Option a: does not begin with '-'")); } @@ -100,7 +100,7 @@ int main(int argc, char *argv[]) opt_register_noarg("--", test_noarg, "", ""); fail("_opt_register returned?"); } else { - ok1(exitval - 1 == 1); + ok1(exitval == 1); ok1(strstr(output, "Option --: invalid long option '--'")); } @@ -112,7 +112,7 @@ int main(int argc, char *argv[]) opt_register_noarg("--a|-aaa", test_noarg, "", ""); fail("_opt_register returned?"); } else { - ok1(exitval - 1 == 1); + ok1(exitval == 1); ok1(strstr(output, "Option --a|-aaa: invalid short option '-aaa'")); } @@ -124,7 +124,7 @@ int main(int argc, char *argv[]) opt_register_noarg("--a foo", test_noarg, "", ""); fail("_opt_register returned?"); } else { - ok1(exitval - 1 == 1); + ok1(exitval == 1); ok1(strstr(output, "Option --a foo: does not take arguments 'foo'")); } @@ -136,7 +136,7 @@ int main(int argc, char *argv[]) opt_register_noarg("--a=foo", test_noarg, "", ""); fail("_opt_register returned?"); } else { - ok1(exitval - 1 == 1); + ok1(exitval == 1); ok1(strstr(output, "Option --a=foo: does not take arguments 'foo'")); }