[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: human interface change?!? [Re: xstrtol.h
From: |
Jim Meyering |
Subject: |
Re: human interface change?!? [Re: xstrtol.h |
Date: |
Mon, 06 Aug 2007 19:01:32 +0200 |
Bruno Haible <address@hidden> wrote:
> Paul Eggert wrote:
>> First, human_options should probably not output to stderr or exit, but
>> should instead let the caller do it.
>
> Indeed; this allows to not increase the number of arguments to
> human_options from 3 to 4.
>
>> +static char opt_str_storage[3] = {'-', 0, 0};
>> +#define OPT_STR(opt_idx, c, long_options) \
>> + ((opt_idx) < 0 \
>> + ? (opt_str_storage[1] = c, opt_str_storage) \
>> + : LONG_OPT_STR (opt_idx, long_options))
>
> I would not put a statically allocated array into every compilation unit
> that includes "system.h". In fact, the middle part of OPT_STR does not need
> to be a macro or inline function; it can as well be a plain function:
>
> #define OPT_STR(opt_idx, c, long_options) \
> ((opt_idx) < 0 \
> ? short_opt_str (c) \
> : LONG_OPT_STR (opt_idx, long_options))
>
> /* Define in a .c file. */
> const char *
> short_opt_str (char c)
> {
> static char opt_str_storage[3] = { '-', 0, 0 };
> opt_str_storage[1] = c;
> return opt_str_storage)
> }
Yep. I might put that in a separate file eventually, but for
now, adding a file just for that tiny function isn't worth it.
I've encapsulated it in a static inline function in system.h,
as I suggested initially. Changes just pushed:
http://git.sv.gnu.org/gitweb/?p=coreutils.git
Re: human interface change?!? [Re: xstrtol.h, Bruno Haible, 2007/08/04
- Re: human interface change?!? [Re: xstrtol.h,
Jim Meyering <=