[v2] manual: Explain our implementation-defined memstream semantics

Florian Weimer fweimer@redhat.com
Fri Sep 19 18:40:09 GMT 2025


* DJ Delorie:

> 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
>
> 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}:

This looks really good to me, thanks!

Reviewed-by: Florian Weimer <fweimer@redhat.com>

Please give Collin a chance to re-confirm the previous Reviewed-by
before pushing.

Florian



More information about the Libc-alpha mailing list