<stdio.h>: fcloseall, fopencookie, vasprintf, asprintf by default
Checks
Context |
Check |
Description |
dj/TryBot-apply_patch |
success
|
Patch applied to master at the time it was sent
|
dj/TryBot-32bit |
success
|
Build for i686
|
Commit Message
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.
---
libio/stdio.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
base-commit: 5bb4b51a76cc9bec72f67f702b5bf2fce30f0f7c
Comments
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
@@ -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,