aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2024-10-10 17:16:35 -0400
committerDJ Delorie <dj@redhat.com>2024-10-21 17:08:31 -0400
commitdcad78507433a9a64b8b548b19e110933f8d939a (patch)
tree03ea6b82fcce22533d91458a4f15cae5929ad5aa
parentb371ed272695919a332d30bd2754a82e5e683178 (diff)
downloadglibc-dcad78507433a9a64b8b548b19e110933f8d939a.zip
glibc-dcad78507433a9a64b8b548b19e110933f8d939a.tar.gz
glibc-dcad78507433a9a64b8b548b19e110933f8d939a.tar.bz2
manual: Document stdio.h functions that may be macros
Glibc has two gnu-extension functions that are implemented as macros but not documented as such: fread_unlocked and fwrite_unlocked. Document them as such. Additionally, putc_unlocked and getc_unlocked are documented in POSIX as possibly being macros. Update the manual to add a warning about those also, depite glibc not implementing them as macros.
-rw-r--r--manual/stdio.texi12
1 files changed, 12 insertions, 0 deletions
diff --git a/manual/stdio.texi b/manual/stdio.texi
index 75aee8a..83f4f92 100644
--- a/manual/stdio.texi
+++ b/manual/stdio.texi
@@ -929,6 +929,9 @@ Therefore, @var{stream} should never be an expression with side-effects.
@safety{@prelim{}@mtsafe{@mtsrace{:stream}}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{}}}
The @code{putc_unlocked} function is equivalent to the @code{putc}
function except that it does not implicitly lock the stream.
+Like @code{putc}, it may be implemented as a macro and may evaluate
+the @var{stream} argument more than once. Therefore, @var{stream}
+should not be an expression with side-effects.
@end deftypefun
@deftypefun wint_t putwc_unlocked (wchar_t @var{wc}, FILE *@var{stream})
@@ -1132,6 +1135,9 @@ Therefore, @var{stream} should never be an expression with side-effects.
@safety{@prelim{}@mtsafe{@mtsrace{:stream}}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{}}}
The @code{getc_unlocked} function is equivalent to the @code{getc}
function except that it does not implicitly lock the stream.
+Like @code{getc}, it may be implemented as a macro and may evaluate
+the @var{stream} argument more than once. Therefore, @var{stream}
+should not be an expression with side-effects.
@end deftypefun
@deftypefun wint_t getwc_unlocked (FILE *@var{stream})
@@ -1571,6 +1577,9 @@ The @code{fread_unlocked} function is equivalent to the @code{fread}
function except that it does not implicitly lock the stream.
This function is a GNU extension.
+This function may be implemented as a macro and may evaluate
+@var{stream} more than once. Therefore, @var{stream} should not be an
+expression with side-effects.
@end deftypefun
@deftypefun size_t fwrite (const void *@var{data}, size_t @var{size}, size_t @var{count}, FILE *@var{stream})
@@ -1589,6 +1598,9 @@ The @code{fwrite_unlocked} function is equivalent to the @code{fwrite}
function except that it does not implicitly lock the stream.
This function is a GNU extension.
+This function may be implemented as a macro and may evaluate
+@var{stream} more than once. Therefore, @var{stream} should not be an
+expression with side-effects.
@end deftypefun
@node Formatted Output