vlfmt(3C)
NAME
vlfmt - display error message in standard format and pass to
logging and monitoring services
SYNOPSIS
#include <pfmt.h>
#include <stdarg.h>
int vlfmt(FILE *stream, long flag, const char *format,
va_list ap);
DESCRIPTION
The vlfmt() function is identical to lfmt(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(3HEAD). The
example in the EXAMPLES section below demonstrates their use
with vlfmt().
RETURN VALUES
Upon successful completion, vlfmt() returns the number of
bytes transmitted. Otherwise, -1 is returned if there was a
write error to stream, or -2 is returned if unable to log
and/or display at console.
EXAMPLES
Example 1: Use of vlfmt() to write an errlog()routine.
The following example demonstrates how vlfmt() could be used
to write an errlog() 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 errlog(). The
remaining errlog() arguments (arg1, arg2, ...) are passed to
vlfmt() in the argument ap.
#include <pfmt.h>
#include <stdarg.h>
/*
* errlog should be called like
* errlog(log_info, format, arg1, ...);
*/
void errlog(long log_info, ...)
{
va_list ap;
char *format;
va_start(ap, );
format = va_arg(ap, char *);
(void) vlfmt(stderr, log_info|MM_ERROR, format, ap);
va_end(ap);
(void) abort();
}
USAGE
Since vlfmt() uses gettxt(3C), it is recommended that
vlfmt() not be used.
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| MT-Level | MT-Safe |
|_____________________________|_____________________________|
SEE ALSO
gettxt(3C), lfmt(3C), attributes(5), stdarg(3HEAD)
Man(1) output converted with
man2html