memset((PTR) &f, 0, sizeof(f));
if (maxlen == 0) return 0;  memset((void *) &f, 0, sizeof(f));
__vsnprintf (char *s, size_t maxlen, const char *format, va_list arg){  int done;  FILE f;  memset((PTR) &f, 0, sizeof(f));  f.__magic = _IOMAGIC;  f.__mode.__write = 1;  /* The buffer size is one less than MAXLEN     so we have space for the null terminator.  */  f.__bufp = f.__buffer = (char *) s;  f.__bufsize = maxlen - 1;  f.__put_limit = f.__buffer + f.__bufsize;  f.__get_limit = f.__buffer;  /* After the buffer is full (MAXLEN characters have been written),     any more characters written will go to the bit bucket.  */  f.__room_funcs = __default_room_functions;  f.__io_funcs.__write = NULL;  f.__seen = 1;  done = vfprintf(&f, format, arg);  *f.__bufp = '\0';  return done;}