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)

tribblix@gmail.com :: GitHub :: Privacy