47 lines
2.1 KiB
Diff
47 lines
2.1 KiB
Diff
commit 8aa99c592bf8f5894215fd62fef8248fac19dee1
|
|
Author: DJ Delorie <dj@redhat.com>
|
|
Date: Thu Sep 18 19:13:32 2025 -0400
|
|
|
|
manual: Explain our implementation-defined memstream semantics
|
|
|
|
Posix Issue 8 adds an implementation-defined item we don't already
|
|
cover, about seeking backwards. This defines our implentation.
|
|
|
|
https://issues.redhat.com/browse/RHEL-3008
|
|
https://pubs.opengroup.org/onlinepubs/9799919799/functions/open_memstream.html
|
|
|
|
Reviewed-by: Florian Weimer <fweimer@redhat.com>
|
|
Reviewed-by Collin Funk <collin.funk1@gmail.com>
|
|
|
|
diff --git a/manual/stdio.texi b/manual/stdio.texi
|
|
index 16d459424e..e8f60b09c1 100644
|
|
--- a/manual/stdio.texi
|
|
+++ b/manual/stdio.texi
|
|
@@ -5135,13 +5135,21 @@ remain valid only as long as no further output on the stream takes
|
|
place. If you do more output, you must flush the stream again to store
|
|
new values before you use them again.
|
|
|
|
-A null character is written at the end of the buffer. This null character
|
|
-is @emph{not} included in the size value stored at @var{sizeloc}.
|
|
+A null character is written at the end of the buffer when the stream
|
|
+is flushed, and at the current location when closed (these locations
|
|
+may be different if @code{fseek} is used). This null character is
|
|
+@emph{not} included in the size value stored at @var{sizeloc}.
|
|
|
|
You can move the stream's file position with @code{fseek} or
|
|
-@code{fseeko} (@pxref{File Positioning}). Moving the file position past
|
|
-the end of the data already written fills the intervening space with
|
|
-zeroes.
|
|
+@code{fseeko} (@pxref{File Positioning}). Moving the file position
|
|
+past the end of the data already written fills the intervening space
|
|
+with zeroes. Note that seeking backwards into existing written data
|
|
+will change the effective ``end of file'' used by @code{fflush} and
|
|
+@code{SEEK_END} (and where the trailing null character is written,
|
|
+when closed). Thus, if you wish to do ``random-access'' I/O in a
|
|
+memstream, it's important to use @code{fseek} to move the file
|
|
+position to the desired data end (using @code{SEEK_POS}) before
|
|
+closing it.
|
|
@end deftypefun
|
|
|
|
Here is an example of using @code{open_memstream}:
|