All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: Kevin Locke <kevin@kevinlocke.name>
Cc: ccan@lists.ozlabs.org
Subject: Re: [PATCH 3/9] configurator: Inline err.h functions from musl libc
Date: Tue, 20 Sep 2016 15:03:09 +1000	[thread overview]
Message-ID: <20160920050309.GM20488@umbus> (raw)
In-Reply-To: <d7b109044f3d73a3f91c56136ad487fe07b518a7.1474239353.git.kevin@kevinlocke.name>


[-- Attachment #1.1: Type: text/plain, Size: 3489 bytes --]

On Sun, Sep 18, 2016 at 06:52:00PM -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 <kevin@kevinlocke.name>

Right, so this is a general problem of how do we make the configurator
itself sufficiently portable, since it hasn't yet worked out the
portbility macros.

Personally, I think duplicating these here is an acceptable
workaround.  Rusty, any opinion?

> ---
>  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 9817fcd..9dcf307 100644
> --- a/tools/configurator/configurator.c
> +++ b/tools/configurator/configurator.c
> @@ -3,6 +3,9 @@
>   *
>   * Copyright 2011 Rusty Russell <rusty@rustcorp.com.au>.  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
> @@ -22,9 +25,9 @@
>   * THE SOFTWARE.
>   */
>  #include <stdio.h>
> +#include <stdarg.h>
>  #include <stdbool.h>
>  #include <stdlib.h>
> -#include <err.h>
>  #include <string.h>
>  
>  #ifdef _MSC_VER
> @@ -38,6 +41,7 @@
>  #define OUTPUT_FILE "configurator.out"
>  #define INPUT_FILE "configuratortest.c"
>  
> +static const char *progname = "";
>  static int verbose;
>  
>  enum test_style {
> @@ -367,6 +371,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 char *grab_stream(FILE *file)
>  {
>  	size_t max, ret, size = 0;
> @@ -593,6 +642,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

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

[-- Attachment #2: Type: text/plain, Size: 127 bytes --]

_______________________________________________
ccan mailing list
ccan@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/ccan

  reply	other threads:[~2016-09-20  5:37 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-19  0:51 [PATCH 0/9] configurator: Support for Windows and MSVC Kevin Locke
2016-09-19  0:51 ` [PATCH 1/9] configurator: Replace unlink with remove Kevin Locke
2016-09-20  4:50   ` David Gibson
2016-09-19  0:51 ` [PATCH 2/9] configurator: Reimplement run using popen Kevin Locke
2016-09-20  5:00   ` David Gibson
2016-09-20  6:22     ` Kevin Locke
2016-09-20 13:28       ` David Gibson
2016-09-19  0:52 ` [PATCH 3/9] configurator: Inline err.h functions from musl libc Kevin Locke
2016-09-20  5:03   ` David Gibson [this message]
2016-09-27  6:11     ` Rusty Russell
2016-09-19  0:52 ` [PATCH 4/9] configurator: Use native directory separator Kevin Locke
2016-09-20  5:04   ` David Gibson
2016-09-19  0:52 ` [PATCH 5/9] configurator: Mark non-Windows tests MAY_NOT_COMPILE Kevin Locke
2016-09-20  5:06   ` David Gibson
2016-09-19  0:52 ` [PATCH 6/9] configurator: Print test source without cat Kevin Locke
2016-09-20  5:09   ` David Gibson
2016-09-19  0:52 ` [PATCH 7/9] configurator: Fix compiler warning with compare Kevin Locke
2016-09-20  5:09   ` David Gibson
2016-09-19  0:52 ` [PATCH 8/9] configurator: Pass output cflag to configurator Kevin Locke
2016-09-20  5:23   ` David Gibson
2016-09-20  6:22     ` Kevin Locke
2016-09-20 13:32       ` David Gibson
2016-09-19  0:52 ` [PATCH 9/9] configurator: DEFAULT_{COMPILER, FLAGS} for MSVC Kevin Locke
2016-09-20  4:48 ` [PATCH 0/9] configurator: Support for Windows and MSVC David Gibson
2016-09-20  6:21   ` Kevin Locke
2016-09-20 12:25     ` David Gibson
2016-09-20 14:16       ` Daniel Burke
2016-09-22  2:00         ` David Gibson
2016-09-23  3:33 ` [PATCH v2 00/13] " Kevin Locke
2016-09-23  3:33   ` [PATCH v2 01/13] configurator: Replace unlink with remove Kevin Locke
2016-09-27  4:50     ` David Gibson
2016-09-23  3:33   ` [PATCH v2 02/13] configurator: Reimplement run using popen Kevin Locke
2016-09-27  4:52     ` David Gibson
2016-09-28  5:29       ` [PATCH v3 2/13] " Kevin Locke
2016-09-23  3:33   ` [PATCH v2 03/13] configurator: Inline err.h functions from musl libc Kevin Locke
2016-09-27  5:01     ` David Gibson
2016-09-28  5:35       ` [PATCH v3 3/13] configurator: Inline err.h functions Kevin Locke
2016-09-23  3:33   ` [PATCH v2 04/13] configurator: Use native directory separator Kevin Locke
2016-09-27  5:05     ` David Gibson
2016-09-23  3:33   ` [PATCH v2 05/13] configurator: Mark non-Windows tests MAY_NOT_COMPILE Kevin Locke
2016-09-27  5:05     ` David Gibson
2016-09-23  3:33   ` [PATCH v2 06/13] configurator: Print test source without cat Kevin Locke
2016-09-27  5:06     ` David Gibson
2016-09-28  5:38       ` Kevin Locke
2016-09-23  3:33   ` [PATCH v2 07/13] configurator: Fix compiler warning with compare Kevin Locke
2016-09-27  5:09     ` David Gibson
2016-09-23  3:33   ` [PATCH v2 08/13] configurator: Add output cflag option and macro Kevin Locke
2016-09-27  5:17     ` David Gibson
2016-09-23  3:33   ` [PATCH v2 09/13] configurator: DEFAULT_{COMPILER, FLAGS} for MSVC Kevin Locke
2016-09-27  5:17     ` David Gibson
2016-09-23  3:33   ` [PATCH v2 10/13] configurator: Fix warning in HAVE_FOR_LOOP_DECLARATION Kevin Locke
2016-09-27  5:10     ` David Gibson
2016-09-23  3:33   ` [PATCH v2 11/13] configurator: Return pointer difference as ptrdiff_t Kevin Locke
2016-09-27  5:10     ` David Gibson
2016-09-23  3:33   ` [PATCH v2 12/13] Makefile: Define CFLAGS_FORCE_C_SOURCE macro Kevin Locke
2016-09-27  5:18     ` David Gibson
2016-09-27  6:18       ` Rusty Russell
2016-09-28  2:01         ` David Gibson
2016-10-26  2:49           ` Rusty Russell
2016-09-23  3:33   ` [PATCH v2 13/13] Add appveyor.yml Kevin Locke
2016-09-27  5:20     ` David Gibson
2016-09-28  6:01       ` [PATCH v3 " Kevin Locke
2016-09-27  5:23   ` [PATCH v2 00/13] configurator: Support for Windows and MSVC David Gibson
2016-09-27  6:20     ` Rusty Russell
2016-09-28  6:32       ` Kevin Locke
2016-09-28  6:28     ` Kevin Locke
2016-09-29  0:21       ` David Gibson
2016-09-29  0:44         ` [PATCH v3 0/7] " Kevin Locke
2016-09-29  0:44           ` [PATCH v3 1/7] configurator: Reimplement run using popen Kevin Locke
2016-09-29  0:44           ` [PATCH v3 2/7] configurator: Inline err.h functions Kevin Locke
2016-09-29  0:44           ` [PATCH v3 3/7] configurator: Print test source without cat Kevin Locke
2016-09-29  0:44           ` [PATCH v3 4/7] configurator: Add output cflag option and macro Kevin Locke
2016-09-29  0:44           ` [PATCH v3 5/7] configurator: DEFAULT_{COMPILER, FLAGS} for MSVC Kevin Locke
2016-09-29  0:44           ` [PATCH v3 6/7] Makefile: Define CFLAGS_FORCE_C_SOURCE macro Kevin Locke
2016-09-29  0:44           ` [PATCH v3 7/7] Add appveyor.yml Kevin Locke
2016-09-30 15:08           ` [PATCH v3 0/7] configurator: Support for Windows and MSVC David Gibson
2016-10-03  3:14             ` Kevin Locke
2016-12-02 20:23               ` AppVeyor custom Git URL support (was Re: [PATCH v3 0/7] configurator: Support for Windows and MSVC) Kevin Locke

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160920050309.GM20488@umbus \
    --to=david@gibson.dropbear.id.au \
    --cc=ccan@lists.ozlabs.org \
    --cc=kevin@kevinlocke.name \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.