12949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Copyright (c) 1995
32949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *	The Regents of the University of California.  All rights reserved.
42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Redistribution and use in source and binary forms, with or without
62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * modification, are permitted provided that: (1) source code distributions
72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * retain the above copyright notice and this paragraph in its entirety, (2)
82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * distributions including binary code include the above copyright notice and
92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * this paragraph in its entirety in the documentation or other materials
102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * provided with the distribution, and (3) all advertising materials mentioning
112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * features or use of this software display the following acknowledgement:
122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * ``This product includes software developed by the University of California,
132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * the University nor the names of its contributors may be used to endorse
152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * or promote products derived from this software without specific prior
162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * written permission.
172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef lint
232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const char rcsid[] _U_ =
2453f17a9db278d33517d9888dd77848f554522a38JP Abgrall    "@(#) $Header: /tcpdump/master/tcpdump/vfprintf.c,v 1.6 2003-11-16 09:36:45 guy Exp $ (LBL)";
252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif
262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef HAVE_CONFIG_H
282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "config.h"
292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif
302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <sys/types.h>
322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <stdio.h>
342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <stdarg.h>
352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <stdlib.h>
362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <unistd.h>
372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "interface.h"
392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Stock 4.3 doesn't have vfprintf.
422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * This routine is due to Chris Torek.
432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectvfprintf(f, fmt, args)
452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	FILE *f;
462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	char *fmt;
472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	va_list args;
482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	int ret;
502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	if ((f->_flag & _IOWRT) == 0) {
522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		if (f->_flag & _IORW)
532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			f->_flag |= _IOWRT;
542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		else
552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			return EOF;
562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	}
572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	ret = _doprnt(fmt, args, f);
582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return ferror(f) ? EOF : ret;
592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
60