bug-gnulib
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]