This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] Clean up conditionals for declaration of gets().
On 02/20/2017 08:47 AM, Carlos O'Donell wrote:
> On 02/16/2017 10:01 AM, Zack Weinberg wrote:
>> gets() has the dubious honor of being the only C89 library feature
>> that has been completely removed from the current C and C++ standards.
>> glibc follows suit by not declaring it in _GNU_SOURCE mode either, but
>> it remains present in older compatibility modes. Internally, two test
>> cases need to see stdio.h make the declaration, but all our internal
>> code is of course compiled under _GNU_SOURCE. This is currently
>> kludged by duplicating the gets declaration, fortify wrapper and all,
>> in include/stdio.h. Also, the conditional in the public headers for
>> deciding when to declare gets is complicated and repeated in two places.
>>
>> This patch adds a new macro to features.h that encapsulates the
>> complicated rule for when to declare gets. stdio.h and bits/stdio2.h
>> can simply test __GLIBC_USE (DEPRECATED_GETS). Then, instead of
>> having a duplicate gets declaration in include/stdio.h,
>> debug/tst-chk1.c and stdio-common/tst-gets.c force that flag on.
>>
>> Tested on x86-64-linux, OK to commit?
>
> This cleanup looks good to me as long as you tested compiling with
> installed headers and nothing obvious broke (it doesn't look like it would).
I have now tested compiling with installed headers, in both C and C++.
gets is declared only when it's supposed to be. I will commit the patch
shortly.
zw