Back to index

glibc  2.9
vpprintf.c File Reference
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <hurd.h>

Go to the source code of this file.


static ssize_t do_write (void *cookie, const char *buf, size_t n)
int vpprintf (io_t port, const char *format, va_list arg)

Function Documentation

static ssize_t do_write ( void *  cookie,
const char *  buf,
size_t  n 
) [static]

Definition at line 29 of file vpprintf.c.

  error_t error = __io_write ((io_t) cookie, buf, n, -1,
                           (mach_msg_type_number_t *) &n);
  if (error)
    return __hurd_fail (error);
  return n;

Here is the call graph for this function:

Here is the caller graph for this function:

int vpprintf ( io_t  port,
const char *  format,
va_list  arg 

Definition at line 41 of file vpprintf.c.

  int done;


  struct locked_FILE
    struct _IO_cookie_file cfile;
#ifdef _IO_MTSAFE_IO
    _IO_lock_t lock;
  } temp_f;
#ifdef _IO_MTSAFE_IO
  temp_f.cfile.__fp.file._lock = &temp_f.lock;

  _IO_cookie_init (&temp_f.cfile, _IO_NO_READS,
                 (void *) port, (cookie_io_functions_t) { write: do_write });

  done = _IO_vfprintf (&temp_f.cfile.__fp.file, format, arg);


  FILE f;

  /* Create an unbuffered stream talking to PORT on the stack.  */
  memset ((void *) &f, 0, sizeof (f));
  f.__magic = _IOMAGIC;
  f.__mode.__write = 1;
  f.__cookie = (void *) port;
  f.__room_funcs = __default_room_functions;
  f.__io_funcs.__write = do_write;
  f.__seen = 1;
  f.__userbuf = 1;

  /* vfprintf will use a buffer on the stack for the life of the call.  */
  done = vfprintf (&f, format, arg);


  return done;

Here is the call graph for this function: