int _IO_vdprintf (int d, const char *format, _IO_va_list arg) { struct _IO_FILE_plus tmpfil; struct _IO_wide_data wd; int done; #ifdef _IO_MTSAFE_IO tmpfil.file._lock = NULL; #endif _IO_no_init (&tmpfil.file, _IO_USER_LOCK, 0, &wd, &_IO_wfile_jumps); _IO_JUMPS (&tmpfil) = &_IO_file_jumps; _IO_new_file_init_internal (&tmpfil); #if !_IO_UNIFIED_JUMPTABLES tmpfil.vtable = NULL; #endif if (_IO_file_attach (&tmpfil.file, d) == NULL) { _IO_un_link (&tmpfil); return EOF; } tmpfil.file._flags |= _IO_DELETE_DONT_CLOSE; _IO_mask_flags (&tmpfil.file, _IO_NO_READS, _IO_NO_READS+_IO_NO_WRITES+_IO_IS_APPENDING); done = _IO_vfprintf (&tmpfil.file, format, arg); if (done != EOF && _IO_do_flush (&tmpfil.file) == EOF) done = EOF; _IO_FINISH (&tmpfil.file); return done; }
int __vdprintf_chk (int d, int flags, const char *format, va_list arg) { struct _IO_FILE_plus tmpfil; struct _IO_wide_data wd; int done; #ifdef _IO_MTSAFE_IO tmpfil.file._lock = NULL; #endif _IO_no_init (&tmpfil.file, _IO_USER_LOCK, 0, &wd, &_IO_wfile_jumps); _IO_JUMPS (&tmpfil) = &_IO_file_jumps; _IO_new_file_init_internal (&tmpfil); if (_IO_file_attach (&tmpfil.file, d) == NULL) { _IO_un_link (&tmpfil); return EOF; } tmpfil.file._flags |= _IO_DELETE_DONT_CLOSE; _IO_mask_flags (&tmpfil.file, _IO_NO_READS, _IO_NO_READS+_IO_NO_WRITES+_IO_IS_APPENDING); /* For flags > 0 (i.e. __USE_FORTIFY_LEVEL > 1) request that %n can only come from read-only format strings. */ if (flags > 0) tmpfil.file._flags2 |= _IO_FLAGS2_FORTIFY; done = _IO_vfprintf (&tmpfil.file, format, arg); _IO_FINISH (&tmpfil.file); return done; }