mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
Remove mention of open_obstack_stream, which has never existed in libio.
This commit is contained in:
parent
804791474d
commit
94d44d9f4d
@ -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.
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user