Commit 42cdf910 authored by Rusty Russell's avatar Rusty Russell

opt: avoid using err.h.

Seems it's not available on Solaris.
parent 5add556a
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include <errno.h> #include <errno.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <err.h>
#include <assert.h> #include <assert.h>
#include <stdarg.h> #include <stdarg.h>
#include <stdint.h> #include <stdint.h>
...@@ -102,6 +101,12 @@ const char *next_sopt(const char *p, unsigned *i) ...@@ -102,6 +101,12 @@ const char *next_sopt(const char *p, unsigned *i)
return p; 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) static void check_opt(const struct opt_table *entry)
{ {
const char *p; const char *p;
...@@ -110,26 +115,26 @@ static void check_opt(const struct opt_table *entry) ...@@ -110,26 +115,26 @@ static void check_opt(const struct opt_table *entry)
if (entry->type != OPT_HASARG && entry->type != OPT_NOARG if (entry->type != OPT_HASARG && entry->type != OPT_NOARG
&& entry->type != (OPT_EARLY|OPT_HASARG) && entry->type != (OPT_EARLY|OPT_HASARG)
&& entry->type != (OPT_EARLY|OPT_NOARG)) && entry->type != (OPT_EARLY|OPT_NOARG))
errx(1, "Option %s: unknown entry type %u", failmsg("Option %s: unknown entry type %u",
entry->names, entry->type); entry->names, entry->type);
if (!entry->desc) 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] != '-') 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)) { for (p = first_name(entry->names, &len); p; p = next_name(p, &len)) {
if (*p == '-') { if (*p == '-') {
if (len == 1) if (len == 1)
errx(1, "Option %s: invalid long option '--'", failmsg("Option %s: invalid long option '--'",
entry->names); entry->names);
opt_num_long++; opt_num_long++;
} else { } else {
if (len != 1) if (len != 1)
errx(1, "Option %s: invalid short option" failmsg("Option %s: invalid short option"
" '%.*s'", entry->names, len+1, p-1); " '%.*s'", entry->names, len+1, p-1);
opt_num_short++; opt_num_short++;
if (entry->type == OPT_HASARG) if (entry->type == OPT_HASARG)
opt_num_short_arg++; opt_num_short_arg++;
...@@ -137,8 +142,8 @@ static void check_opt(const struct opt_table *entry) ...@@ -137,8 +142,8 @@ static void check_opt(const struct opt_table *entry)
/* Don't document args unless there are some. */ /* Don't document args unless there are some. */
if (entry->type == OPT_NOARG) { if (entry->type == OPT_NOARG) {
if (p[len] == ' ' || p[len] == '=') if (p[len] == ' ' || p[len] == '=')
errx(1, "Option %s: does not take arguments" failmsg("Option %s: does not take arguments"
" '%s'", entry->names, p+len+1); " '%s'", entry->names, p+len+1);
} }
} }
} }
......
...@@ -9,9 +9,9 @@ ...@@ -9,9 +9,9 @@
/* We don't actually want it to exit... */ /* We don't actually want it to exit... */
static jmp_buf exited; 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 <ccan/opt/helpers.c> #include <ccan/opt/helpers.c>
#include <ccan/opt/opt.c> #include <ccan/opt/opt.c>
...@@ -34,14 +34,14 @@ static int saved_vprintf(const char *fmt, va_list ap) ...@@ -34,14 +34,14 @@ static int saved_vprintf(const char *fmt, va_list ap)
return ret; return ret;
} }
static void save_and_jump(int ecode, const char *fmt, ...) static void save_and_jump(const char *fmt, ...)
{ {
va_list ap; va_list ap;
va_start(ap, fmt); va_start(ap, fmt);
saved_vprintf(fmt, ap); saved_vprintf(fmt, ap);
va_end(ap); va_end(ap);
longjmp(exited, ecode + 1); longjmp(exited, 1);
} }
static void reset(void) static void reset(void)
...@@ -66,7 +66,7 @@ int main(int argc, char *argv[]) ...@@ -66,7 +66,7 @@ int main(int argc, char *argv[])
NULL, NULL, "1.2.3", ""); NULL, NULL, "1.2.3", "");
fail("_opt_register returned?"); fail("_opt_register returned?");
} else { } else {
ok1(exitval - 1 == 1); ok1(exitval == 1);
ok1(strstr(output, "Option -a: unknown entry type")); ok1(strstr(output, "Option -a: unknown entry type"));
} }
reset(); reset();
...@@ -77,7 +77,7 @@ int main(int argc, char *argv[]) ...@@ -77,7 +77,7 @@ int main(int argc, char *argv[])
opt_register_noarg("-a", test_noarg, "", NULL); opt_register_noarg("-a", test_noarg, "", NULL);
fail("_opt_register returned?"); fail("_opt_register returned?");
} else { } else {
ok1(exitval - 1 == 1); ok1(exitval == 1);
ok1(strstr(output, "Option -a: description cannot be NULL")); ok1(strstr(output, "Option -a: description cannot be NULL"));
} }
reset(); reset();
...@@ -88,7 +88,7 @@ int main(int argc, char *argv[]) ...@@ -88,7 +88,7 @@ int main(int argc, char *argv[])
opt_register_noarg("a", test_noarg, "", ""); opt_register_noarg("a", test_noarg, "", "");
fail("_opt_register returned?"); fail("_opt_register returned?");
} else { } else {
ok1(exitval - 1 == 1); ok1(exitval == 1);
ok1(strstr(output, "Option a: does not begin with '-'")); ok1(strstr(output, "Option a: does not begin with '-'"));
} }
...@@ -100,7 +100,7 @@ int main(int argc, char *argv[]) ...@@ -100,7 +100,7 @@ int main(int argc, char *argv[])
opt_register_noarg("--", test_noarg, "", ""); opt_register_noarg("--", test_noarg, "", "");
fail("_opt_register returned?"); fail("_opt_register returned?");
} else { } else {
ok1(exitval - 1 == 1); ok1(exitval == 1);
ok1(strstr(output, "Option --: invalid long option '--'")); ok1(strstr(output, "Option --: invalid long option '--'"));
} }
...@@ -112,7 +112,7 @@ int main(int argc, char *argv[]) ...@@ -112,7 +112,7 @@ int main(int argc, char *argv[])
opt_register_noarg("--a|-aaa", test_noarg, "", ""); opt_register_noarg("--a|-aaa", test_noarg, "", "");
fail("_opt_register returned?"); fail("_opt_register returned?");
} else { } else {
ok1(exitval - 1 == 1); ok1(exitval == 1);
ok1(strstr(output, ok1(strstr(output,
"Option --a|-aaa: invalid short option '-aaa'")); "Option --a|-aaa: invalid short option '-aaa'"));
} }
...@@ -124,7 +124,7 @@ int main(int argc, char *argv[]) ...@@ -124,7 +124,7 @@ int main(int argc, char *argv[])
opt_register_noarg("--a foo", test_noarg, "", ""); opt_register_noarg("--a foo", test_noarg, "", "");
fail("_opt_register returned?"); fail("_opt_register returned?");
} else { } else {
ok1(exitval - 1 == 1); ok1(exitval == 1);
ok1(strstr(output, ok1(strstr(output,
"Option --a foo: does not take arguments 'foo'")); "Option --a foo: does not take arguments 'foo'"));
} }
...@@ -136,7 +136,7 @@ int main(int argc, char *argv[]) ...@@ -136,7 +136,7 @@ int main(int argc, char *argv[])
opt_register_noarg("--a=foo", test_noarg, "", ""); opt_register_noarg("--a=foo", test_noarg, "", "");
fail("_opt_register returned?"); fail("_opt_register returned?");
} else { } else {
ok1(exitval - 1 == 1); ok1(exitval == 1);
ok1(strstr(output, ok1(strstr(output,
"Option --a=foo: does not take arguments 'foo'")); "Option --a=foo: does not take arguments 'foo'"));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment