Re: [PATCH v2 03/13] configurator: Inline err.h functions from musl libc
David Gibson <[email protected]> Tue, 27 Sep 2016 15:01:10 +1000
| Newsgroups | org.ozlabs.lists.ccan |
|---|---|
| Message-ID | <[email protected]> |
On Thu, Sep 22, 2016 at 09:33:06PM -0600, Kevin Locke wrote: > Since we can't use HAVE_ERR_H in configurator, provide a definition for > the err.h functions used. The version provided is the one from musl > libc, since it is concise and shares the MIT License with configurator. > > Signed-off-by: Kevin Locke <[email protected]> For me this breaks Linux build, because we get "static declaration follows non-static" on these functions. I think we instead want to stop using the err() etc. functions and use similar functions with a different name that we always define locally. > --- > tools/configurator/configurator.c | 54 ++++++++++++++++++++++++++++++++++++++- > 1 file changed, 53 insertions(+), 1 deletion(-) > > diff --git a/tools/configurator/configurator.c b/tools/configurator/configurator.c > index 4eed188..5929355 100644 > --- a/tools/configurator/configurator.c > +++ b/tools/configurator/configurator.c > @@ -3,6 +3,9 @@ > * > * Copyright 2011 Rusty Russell <[email protected]>. MIT license. > * > + * err, errx, verr, verrx, vwarn, vwarnx functions from musl libc > + * Copyright 2005-2013 Rich Felker. MIT license. > + * > * Permission is hereby granted, free of charge, to any person obtaining a copy > * of this software and associated documentation files (the "Software"), to deal > * in the Software without restriction, including without limitation the rights > @@ -25,9 +28,9 @@ > > #include <errno.h> > #include <stdio.h> > +#include <stdarg.h> > #include <stdbool.h> > #include <stdlib.h> > -#include <err.h> > #include <string.h> > > #ifdef _MSC_VER > @@ -41,6 +44,7 @@ > #define OUTPUT_FILE "configurator.out" > #define INPUT_FILE "configuratortest.c" > > +static const char *progname = ""; > static int verbose; > > enum test_style { > @@ -370,6 +374,51 @@ static struct test tests[] = { > }, > }; > > +static void vwarn(const char *fmt, va_list ap) > +{ > + fprintf (stderr, "%s: ", progname); > + if (fmt) { > + vfprintf(stderr, fmt, ap); > + fputs (": ", stderr); > + } > + perror(0); > +} > + > +static void vwarnx(const char *fmt, va_list ap) > +{ > + fprintf (stderr, "%s: ", progname); > + if (fmt) vfprintf(stderr, fmt, ap); > + putc('\n', stderr); > +} > + > +static void verr(int status, const char *fmt, va_list ap) > +{ > + vwarn(fmt, ap); > + exit(status); > +} > + > +static void verrx(int status, const char *fmt, va_list ap) > +{ > + vwarnx(fmt, ap); > + exit(status); > +} > + > +static void err(int status, const char *fmt, ...) > +{ > + va_list ap; > + va_start(ap, fmt); > + verr(status, fmt, ap); > + va_end(ap); > +} > + > +static void errx(int status, const char *fmt, ...) > +{ > + va_list ap; > + va_start(ap, fmt); > + verrx(status, fmt, ap); > + va_end(ap); > +} > + > static size_t fread_noeintr(void *ptr, size_t size, size_t nitems, > FILE *stream) > { > @@ -610,6 +659,9 @@ int main(int argc, const char *argv[]) > const char *default_args[] > = { "", DEFAULT_COMPILER, DEFAULT_FLAGS, NULL }; > > + if (argc > 0) > + progname = argv[0]; > + > if (argc > 1) { > if (strcmp(argv[1], "--help") == 0) { > printf("Usage: configurator [-v] [<compiler> <flags>...]\n" -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson _______________________________________________ ccan mailing list [email protected] https://lists.ozlabs.org/listinfo/ccan
signature.asc
(application/pgp-signature, 819 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJX6f0WAAoJEGw4ysog2bOS5tQP+gLB4PI3lBVN1x2UknljM9zx R3uy+VYSF7JvyNt0IZNNUEboYe7S+KfeIzmp53O0UFq7O9JrQt56r3L3Zy3tgzeJ IswXNTY89oQAJs3j8IC3KSiuvqtZyKbvu7Al8AD1QzMpscwMkQDZbTqELMHunU+1 gL41DpFeFWMh2IqHBq53G5O8XF7iWJgjIhl6SQ4KelUo1/dahAjTzveaRlJYRjXY +HjT19+h7628pkd4SxbbSbfHUaF47klHefIyXZMAQ2VZP5CSgcGDb/bvhVZ12XXk 2MTBjMoe/eufqP2GaJySd0yuhXMDPc76N2yXWC1kNrYGyJIhOa4w4ZSYl/i5FH/Q XnSWRj9MxPDqjkFFf21juVCaGooy/TRv7sDy+4pEcHMHBjgElR8R8GgP5x6C2H2N Lpf4/vO2pm83p+pVU9Nz2jrg0o2lWw4NR1S2lfxgfPhV3KLgRUGIDDA+dTpz16d0 zYZVf1A1H0YL/cdtN1eHANlMMasBa6lNUDdCHJSxGHXWGT+4izWC+qdAfPMQD0J/ wQF4Ik5dg7pya226NRdj+njMGFqAZyXzfFP6wkoFIKcefwtdqCPxocxJoFocH9k4 E6QxNDIwXcUgcmF3E+z8oQe0bhnO7GAxmA8oCcuLo09ejTi4l7Ghs/M9x0e0kIrI NOjnXxX3t4PkZITz6S2Q =UsHX -----END PGP SIGNATURE-----