vpfmt(3C) Standard C Library Functions vpfmt(3C)NAMEvpfmt - 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 trans‐
mitted. 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(5) for descriptions of the following attributes:
┌─────────────────────────────┬─────────────────────────────┐
│ ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
├─────────────────────────────┼─────────────────────────────┤
│MT-Level │MT-Safe │
└─────────────────────────────┴─────────────────────────────┘
SEE ALSOgettxt(3C), pfmt(3C), attributes(5), stdarg(3EXT)SunOS 5.10 29 Dec 1996 vpfmt(3C)