aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-12-25 00:44:08 +0000
committerUlrich Drepper <drepper@redhat.com>2000-12-25 00:44:08 +0000
commit7ba73c63c0ce6fe3c453c1aea67c3fa7e4bdec48 (patch)
treeb1d6a622f25d2581a324429041a98333d4284e57
parentb708b1ca77c089e72fed545b61305998cfd505a4 (diff)
downloadglibc-7ba73c63c0ce6fe3c453c1aea67c3fa7e4bdec48.zip
glibc-7ba73c63c0ce6fe3c453c1aea67c3fa7e4bdec48.tar.gz
glibc-7ba73c63c0ce6fe3c453c1aea67c3fa7e4bdec48.tar.bz2
(Dynamic Output): Document the return value of asprintf. Also make the asprintf/snprintf examples a little better (check for some error returns).
-rw-r--r--manual/stdio.texi21
1 files changed, 15 insertions, 6 deletions
diff --git a/manual/stdio.texi b/manual/stdio.texi
index e3e3918..0b030cf 100644
--- a/manual/stdio.texi
+++ b/manual/stdio.texi
@@ -1613,6 +1613,9 @@ make_message (char *name, char *value)
int nchars;
@end group
@group
+ if (buffer == NULL)
+ return NULL;
+
/* @r{Try to print in the allocated space.} */
nchars = snprintf (buffer, size, "value of %s is %s",
name, value);
@@ -1624,9 +1627,10 @@ make_message (char *name, char *value)
how much space is needed.} */
buffer = (char *) xrealloc (buffer, nchars + 1);
- /* @r{Try again.} */
- snprintf (buffer, size, "value of %s is %s",
- name, value);
+ if (buffer != NULL)
+ /* @r{Try again.} */
+ snprintf (buffer, size, "value of %s is %s",
+ name, value);
@}
/* @r{The last call worked, return the string.} */
return buffer;
@@ -1659,6 +1663,10 @@ buffer you allocate in advance. The @var{ptr} argument should be the
address of a @code{char *} object, and @code{asprintf} stores a pointer
to the newly allocated string at that location.
+The return value is the number of characters allocated for the buffer, or
+less than zero if an error occured. Usually this means that the buffer
+could not be allocated.
+
Here is how to use @code{asprintf} to get the same result as the
@code{snprintf} example, but more easily:
@@ -1669,7 +1677,8 @@ char *
make_message (char *name, char *value)
@{
char *result;
- asprintf (&result, "value of %s is %s", name, value);
+ if (asprintf (&result, "value of %s is %s", name, value) < 0)
+ return NULL;
return result;
@}
@end smallexample
@@ -3084,7 +3093,7 @@ For more information about the descriptor-level I/O functions, see
@node Error Recovery
@section Recovering from errors
-You may explicitly clear the error and EOF flags with the @code{clearerr}
+You may explicitly clear the error and EOF flags with the @code{clearerr}
function.
@comment stdio.h
@@ -3112,7 +3121,7 @@ always fail again in the same way. So usually it is best to give up and
report the error to the user, rather than install complicated recovery
logic.
-One important exception is @code{EINTR} (@pxref{Interrupted Primitives}).
+One important exception is @code{EINTR} (@pxref{Interrupted Primitives}).
Many stream I/O implementations will treat it as an ordinary error, which
can be quite inconvenient. You can avoid this hassle by installing all
signals with the @code{SA_RESTART} flag.