[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [bug-gettext] [PATCH] gettext-runtime/intl: Merge from glibc
From: |
Will Newton |
Subject: |
Re: [bug-gettext] [PATCH] gettext-runtime/intl: Merge from glibc |
Date: |
Fri, 12 Dec 2014 09:07:53 +0000 |
On 12 December 2014 at 04:40, Daiki Ueno <address@hidden> wrote:
> Will Newton <address@hidden> writes:
>
>>> As a minor nitpicking, I'm not sure if we can join the intervals of
>>> copyright years. How about using update-copyright in Gnulib?
>>
>> The reason I did this is that matches the copyright in glibc, which
>> has the practice of using the full range of years for most files
>> including the intl ones.
>
> I don't have strong opinion here, but:
>
>> https://www.gnu.org/prep/maintain/html_node/Copyright-Notices.html
>
> This also contains:
>
> "You can use a range (‘2008-2010’) instead of listing individual years
> (‘2008, 2009, 2010’) if and only if: 1) every year in the range,
> inclusive, really is a “copyrightable” year that would be listed
> individually; and 2) you make an explicit statement in a README file
> about this usage."
>
> I guess we should at least have the statement in README, like glibc.
>
> By the way:
>
>> Test HAVE_DECL_FGETS_UNLOCKED with #ifdef rather than #if.
>> Test HAVE_DECL_FEOF_UNLOCKED with #ifdef rather than #if.
>
>> -#if defined _LIBC_REENTRANT || HAVE_DECL_FGETS_UNLOCKED
>> +#if defined _LIBC_REENTRANT || defined HAVE_DECL_FGETS_UNLOCKED
>
> This is no-no. On some platforms (e.g. Mac OS X),
> HAVE_DECL_FGETS_UNLOCKED will be defined as 0:
>
> $ grep 'define HAVE_DECL_FGETS' gettext-runtime/config.h
> #define HAVE_DECL_FGETS_UNLOCKED 0
>
> What's the rationale behind this change? According to C99 and C11, the
> C preprocessor shall convert undefined identifiers to pp-number 0 before
> evaluation.
glibc quite recently switched to passing -Wundef to the compiler which
requires that #if is only used on defined values in order to catch
bugs where somebody forgets or typos the name of a define.
The usual way of testing config variables that start with HAVE_ is to
use #ifdef as they are binary on/off switches. Is there a reason this
constant must distinguish between not-defined and zero?
Converting it to:
#if defined _LIBC_REENTRANT || (defined HAVE_DECL_FGETS_UNLOCKED &&
HAVE_DECL_FGETS_UNLOCKED)
should work but it is a bit ugly.
--
Will Newton
Toolchain Working Group, Linaro