fprintf.c revision 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Copyright (c) 2000-2001 Sendmail, Inc. and its suppliers.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * All rights reserved.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Copyright (c) 1990, 1993
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * The Regents of the University of California. All rights reserved.
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * This code is derived from software contributed to Berkeley by
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Chris Torek.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * By using this file, you agree to the terms and conditions set
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * forth in the LICENSE file which can be found at the top level of
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * the sendmail distribution.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#pragma ident "%Z%%M% %I% %E% SMI"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <sm/gen.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinSM_RCSID("@(#)$Id: fprintf.c,v 1.15 2001/03/02 23:53:41 ca Exp $")
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <sm/varargs.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <sm/io.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <sm/assert.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include "local.h"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin** SM_IO_FPRINTF -- format and print a string to a file pointer
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin**
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin** Parameters:
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin** fp -- file pointer to be printed to
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin** timeout -- time to complete print
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin** fmt -- markup format for the string to be printed
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin** ... -- additional information for 'fmt'
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin**
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin** Returns:
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin** Failure: returns SM_IO_EOF and sets errno
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin** Success: returns the number of characters o/p
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin*/
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinint
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if SM_VA_STD
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinsm_io_fprintf(SM_FILE_T *fp, int timeout, const char *fmt, ...)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else /* SM_VA_STD */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinsm_io_fprintf(fp, timeout, fmt, va_alist)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin SM_FILE_T *fp;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int timeout;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char *fmt;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin va_dcl
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif /* SM_VA_STD */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int ret;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin SM_VA_LOCAL_DECL
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin SM_REQUIRE_ISA(fp, SmFileMagic);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin SM_VA_START(ap, fmt);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ret = sm_io_vfprintf(fp, timeout, fmt, ap);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin SM_VA_END(ap);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin return ret;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin