printf.3: Formatting fixes in example code

Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
Michael Kerrisk 2010-11-11 05:53:39 +01:00
parent c805532e4e
commit 6d678d7702
1 changed files with 9 additions and 2 deletions

View File

@ -1035,8 +1035,8 @@ To allocate a sufficiently large string and print into it
char *
make_message(const char *fmt, ...)
{
/* Guess we need no more than 100 bytes. */
int n, size = 100;
int n;
int size = 100; /* Guess we need no more than 100 bytes. */
char *p, *np;
va_list ap;
@ -1044,18 +1044,25 @@ make_message(const char *fmt, ...)
return NULL;
while (1) {
/* Try to print in the allocated space. */
va_start(ap, fmt);
n = vsnprintf(p, size, fmt, ap);
va_end(ap);
/* If that worked, return the string. */
if (n > \-1 && n < size)
return p;
/* Else try again with more space. */
if (n > \-1) /* glibc 2.1 */
size = n+1; /* precisely what is needed */
else /* glibc 2.0 */
size *= 2; /* twice the old size */
if ((np = realloc (p, size)) == NULL) {
free(p);
return NULL;