ssize_t __argp_fmtstream_printf (struct argp_fmtstream *fs, const char *fmt, ...) { int out; size_t avail; size_t size_guess = PRINTF_SIZE_GUESS; /* How much space to reserve. */ do { va_list args; if (! __argp_fmtstream_ensure (fs, size_guess)) return -1; va_start (args, fmt); avail = fs->end - fs->p; out = __vsnprintf (fs->p, avail, fmt, args); va_end (args); if ((size_t) out >= avail) size_guess = out + 1; } while ((size_t) out >= avail); fs->p += out; return out; }
ssize_t __argp_fmtstream_printf (struct argp_fmtstream *fs, const char *fmt, ...) { int out; size_t size_guess = PRINTF_SIZE_GUESS; /* How much space to reserve. */ do { va_list args; if (! __argp_fmtstream_ensure (fs, size_guess)) return -1; size_guess += size_guess; va_start (args, fmt); #if 0 out = __vsnprintf (fs->p, fs->end - fs->p, fmt, args); #else out = vsprintf (fs->p, fmt, args); #endif va_end (args); } while (out == -1); fs->p += out; return out; }
int __argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch) { if (__fs->p < __fs->end || __argp_fmtstream_ensure (__fs, 1)) return *__fs->p++ = __ch; else return EOF; }
int __argp_fmtstream_putc(argp_fmtstream_t __fs, int __ch) { if ((__fs->p < __fs->end) || __argp_fmtstream_ensure(__fs, (size_t)1)) { return (*__fs->p++ = (char)__ch); } else { return EOF; } }
/* Duplicate the inline definitions in argp-fmtstream.h, for compilers * that do NOT do inlining (this fails with certain build settings). */ size_t __argp_fmtstream_write(argp_fmtstream_t __fs, __const char *__str, size_t __len) { if (((__fs->p + __len) <= __fs->end) || __argp_fmtstream_ensure(__fs, __len)) { memcpy(__fs->p, __str, __len); __fs->p += __len; return __len; } else { return 0; } }
ssize_t __argp_fmtstream_printf (struct argp_fmtstream *fs, const char *fmt, ...) { size_t out; size_t size_guess = PRINTF_SIZE_GUESS; /* How much space to reserve. */ do { va_list args; if (! __argp_fmtstream_ensure (fs, size_guess)) return -1; size_guess += size_guess; va_start (args, fmt); #if HAVE_VSNPRINTF out = __vsnprintf (fs->p, fs->end - fs->p, fmt, args); #else #if VSPRINTF_RETURNS_INT out = vsprintf (fs->p, fmt, args); #else { char *s = (char*) vsprintf (fs->p, fmt, args); out = strlen (s); } #endif /* VSPRINTF_RETURNS_INT */ assert (out < fs->end - fs->p); #endif /* HAVE_VSNPRINTF */ va_end (args); } while (out == -1); fs->p += out; return out; }