Ejemplo n.º 1
0
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;
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
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;
	}
}
Ejemplo n.º 5
0
/* 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;
	}
}
Ejemplo n.º 6
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;
}