Remove mention of open_obstack_stream, which has never existed in libio.

This commit is contained in:
Roland McGrath 2011-10-26 16:53:02 -07:00
parent 804791474d
commit 94d44d9f4d
3 changed files with 7 additions and 60 deletions

View File

@ -1,3 +1,9 @@
2011-10-26 Roland McGrath <roland@hack.frob.com>
* libio/Versions (GLIBC_2.0): Remove open_obstack_stream, which
doesn't exist.
* manual/stdio.texi (Obstack Streams): Node removed.
2011-10-26 Andreas Schwab <schwab@redhat.com> 2011-10-26 Andreas Schwab <schwab@redhat.com>
* sysdeps/ieee754/flt-32/e_j0f.c: Fix use of math_force_eval. * sysdeps/ieee754/flt-32/e_j0f.c: Fix use of math_force_eval.

View File

@ -58,7 +58,7 @@ libc {
gets; gets;
# o* # o*
open_memstream; open_obstack_stream; obstack_printf; obstack_vprintf; open_memstream; obstack_printf; obstack_vprintf;
# p* # p*
pclose; popen; putc; putc_locked; putc_unlocked; putchar; pclose; popen; putc; putc_locked; putc_unlocked; putchar;

View File

@ -4780,7 +4780,6 @@ provide equivalent functionality.
@menu @menu
* String Streams:: Streams that get data from or put data in * String Streams:: Streams that get data from or put data in
a string or memory buffer. a string or memory buffer.
* Obstack Streams:: Streams that store data in an obstack.
* Custom Streams:: Defining your own streams with an arbitrary * Custom Streams:: Defining your own streams with an arbitrary
input data source and/or output data sink. input data source and/or output data sink.
@end menu @end menu
@ -4884,64 +4883,6 @@ buf = `hello', size = 5
buf = `hello, world', size = 12 buf = `hello, world', size = 12
@end smallexample @end smallexample
@c @group Invalid outside @example.
@node Obstack Streams
@subsection Obstack Streams
You can open an output stream that puts it data in an obstack.
@xref{Obstacks}.
@comment stdio.h
@comment GNU
@deftypefun {FILE *} open_obstack_stream (struct obstack *@var{obstack})
This function opens a stream for writing data into the obstack @var{obstack}.
This starts an object in the obstack and makes it grow as data is
written (@pxref{Growing Objects}).
@c @end group Doubly invalid because not nested right.
Calling @code{fflush} on this stream updates the current size of the
object to match the amount of data that has been written. After a call
to @code{fflush}, you can examine the object temporarily.
You can move the file position of an obstack stream with @code{fseek} or
@code{fseeko} (@pxref{File Positioning}). Moving the file position past
the end of the data written fills the intervening space with zeros.
To make the object permanent, update the obstack with @code{fflush}, and
then use @code{obstack_finish} to finalize the object and get its address.
The following write to the stream starts a new object in the obstack,
and later writes add to that object until you do another @code{fflush}
and @code{obstack_finish}.
But how do you find out how long the object is? You can get the length
in bytes by calling @code{obstack_object_size} (@pxref{Status of an
Obstack}), or you can null-terminate the object like this:
@smallexample
obstack_1grow (@var{obstack}, 0);
@end smallexample
Whichever one you do, you must do it @emph{before} calling
@code{obstack_finish}. (You can do both if you wish.)
@end deftypefun
Here is a sample function that uses @code{open_obstack_stream}:
@smallexample
char *
make_message_string (const char *a, int b)
@{
FILE *stream = open_obstack_stream (&message_obstack);
output_task (stream);
fprintf (stream, ": ");
fprintf (stream, a, b);
fprintf (stream, "\n");
fclose (stream);
obstack_1grow (&message_obstack, 0);
return obstack_finish (&message_obstack);
@}
@end smallexample
@node Custom Streams @node Custom Streams
@subsection Programming Your Own Custom Streams @subsection Programming Your Own Custom Streams
@cindex custom streams @cindex custom streams