This is the mail archive of the mailing list for the glibc project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Clean up conditionals for declaration of gets().

On Sun, Nov 27, 2016 at 2:13 AM, Mike Frysinger <> wrote:
> On 21 Nov 2016 12:44, 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.
> for the tests, what if we forced an older standard ?  that'd provide
> double test coverage by also making sure things build in that mode.

That's a good idea but effectively impossible right now; there's no
way to turn off -include libc-symbols.h even for just one test.
Please don't ask me to add one.

> your patch appears to have been mangled in transit.  might want to
> check that.

Yeah, turns out opening "git format-patch" files in Thunderbird
doesn't do what I wanted it to.  I'll resend these patches properly in
a couple days.

Style errors have been corrected in my tree.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]