Message ID | 87leo04e48.fsf@oldenburg.str.redhat.com |
---|---|
State | New |
Headers | show |
Series | <stdio.h>: fcloseall, fopencookie, vasprintf, asprintf by default | expand |
On Thu, Nov 24, 2022 at 11:32 AM Florian Weimer via Libc-alpha <libc-alpha@sourceware.org> wrote: > > FreeBSD makes these functions available by default, so we should > not treat them as GNU-specific and restrict them to _GNU_SOURCE. > > Tested on x86_64-linux-gnu. It would be great if fcloseall worked before exposing it by default. :-) https://sourceware.org/bugzilla/show_bug.cgi?id=28099 (this is last time I tested, it didn't close anything whatsoever)
* Cristian RodrÃguez: > On Thu, Nov 24, 2022 at 11:32 AM Florian Weimer via Libc-alpha > <libc-alpha@sourceware.org> wrote: >> >> FreeBSD makes these functions available by default, so we should >> not treat them as GNU-specific and restrict them to _GNU_SOURCE. >> >> Tested on x86_64-linux-gnu. > > It would be great if fcloseall worked before exposing it by default. :-) > > https://sourceware.org/bugzilla/show_bug.cgi?id=28099 > > (this is last time I tested, it didn't close anything whatsoever) Hmm, okay, I see the current implementation can't really work. Closing the standard buffers is rather unsafe, too. So I think we should deprecate it. I'll send a separate patch for that soon. I've also sent a v2 without fcloseall. Thanks, Florian
diff --git a/libio/stdio.h b/libio/stdio.h index 0e0f16b464..0def214651 100644 --- a/libio/stdio.h +++ b/libio/stdio.h @@ -42,7 +42,7 @@ __BEGIN_DECLS #include <bits/types/FILE.h> #include <bits/types/struct_FILE.h> -#ifdef __USE_GNU +#ifdef __USE_MISC # include <bits/types/cookie_io_functions_t.h> #endif @@ -239,7 +239,7 @@ extern int fflush (FILE *__stream); extern int fflush_unlocked (FILE *__stream); #endif -#ifdef __USE_GNU +#ifdef __USE_MISC /* Close all streams. This function is not part of POSIX and therefore no official @@ -294,7 +294,7 @@ extern FILE *fdopen (int __fd, const char *__modes) __THROW __attribute_malloc__ __attr_dealloc_fclose __wur; #endif -#ifdef __USE_GNU +#ifdef __USE_MISC /* Create a new stream that refers to the given magic cookie, and uses the given functions for input and output. */ extern FILE *fopencookie (void *__restrict __magic_cookie, @@ -384,7 +384,7 @@ extern int vsnprintf (char *__restrict __s, size_t __maxlen, __THROWNL __attribute__ ((__format__ (__printf__, 3, 0))); #endif -#if __GLIBC_USE (LIB_EXT2) +#if defined (__USE_MISC) || __GLIBC_USE (LIB_EXT2) /* Write formatted output to a string dynamically allocated with `malloc'. Store the address of the string in *PTR. */ extern int vasprintf (char **__restrict __ptr, const char *__restrict __f,