mirror of https://github.com/mkerrisk/man-pages
printf.3: Formatting fixes in example code
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
parent
c805532e4e
commit
6d678d7702
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue