VPFMT(3C) Standard C Library Functions VPFMT(3C)
NAME
vpfmt - display error message in standard format and pass to logging
and monitoring services
SYNOPSIS
#include <pfmt.h>
#include <stdarg.h>
int vpfmt(
FILE *stream,
long flag,
const char *format,
va_list ap);
DESCRIPTION
The
vpfmt() function is identical to
pfmt(3C), except that it is
called with an argument list as defined by <
stdarg.h>.
The <
stdarg.h> header defines the type
va_list and a set of macros
for advancing through a list of arguments whose number and types may
vary. The
ap argument is of type
va_list. This argument is used with
the <
stdarg.h> macros
va_start(),
va_arg(), and
va_end(). See
stdarg(3EXT). The example in the
EXAMPLES section below demonstrates
their use with
vpfmt().
RETURN VALUES
Upon successful completion,
vpfmt() returns the number of bytes
transmitted. Otherwise,
-1 is returned if there was a write error to
stream.
EXAMPLES
Example 1: Use of vpfmt() to write an error routine.
The following example demonstrates how
vpfmt() could be used to write
an
error() routine. The
va_alist() macro is used as the parameter
list in a function definition. The
va_start(ap, ...) call, where
ap is of type
va_list, must be invoked before any attempt to traverse
and access unnamed arguments. Calls to
va_arg(ap, atype) traverse the
argument list. Each execution of
va_arg() expands to an expression
with the value and type of the next argument in the list
ap, which is
the same object initialized by
va_start(). The
atype argument is the
type that the returned argument is expected to be. The
va_end(ap) macro must be invoked when all desired arguments have been accessed.
The argument list in
ap can be traversed again if
va_start() is
called again after
va_end(). In the example below,
va_arg() is
executed first to retrieve the format string passed to
error(). The
remaining
error() arguments (
arg1,
arg2, ...) are passed to
vpfmt() in the argument
ap.
#include <pfmt.h>
#include <stdarg.h>
/*
* error should be called like
* error(format, arg1, ...);
*/
void error(...)
{
va_list ap;
char *format;
va_start(ap, );
format = va_arg(ap, char *);
(void) vpfmt(stderr, MM_ERROR, format, ap);
va_end(ap);
(void) abort();
}
USAGE
Since
vpfmt() uses
gettxt(3C), it is recommended that
vpfmt() not be
used.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+---------------+-----------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+---------------+-----------------+
|MT-Level | MT-Safe |
+---------------+-----------------+
SEE ALSO
gettxt(3C),
pfmt(3C),
stdarg(3EXT),
attributes(7) December 29, 1996 VPFMT(3C)