Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

vlfmt(3c) [opensolaris man page]

vlfmt(3C)						   Standard C Library Functions 						 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(3EXT). 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 argu- ment 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 attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |MT-Level |MT-Safe | +-----------------------------+-----------------------------+ SEE ALSO
gettxt(3C), lfmt(3C), attributes(5), stdarg(3EXT) SunOS 5.11 29 Dec 1996 vlfmt(3C)

Check Out this Related Man Page

vprintf(3C)						   Standard C Library Functions 					       vprintf(3C)

NAME
vprintf, vfprintf, vsprintf, vsnprintf - print formatted output of a variable argument list SYNOPSIS
#include <stdio.h> #include <stdarg.h> int vprintf(const char *format, va_list ap); int vfprintf(FILE *stream, const char *format, va_list ap); int vsprintf(char *s, const char *format, va_list ap); int vsnprintf(char *s, size_t n, const char *format, va_list ap); DESCRIPTION
The vprintf(), vfprintf(), vsprintf() and vsnprintf() functions are the same as printf(), fprintf(), sprintf(), and snprintf(), respec- tively, except that instead of being called with a variable number of arguments, they are called with an argument list as defined in the <stdarg.h> header. See printf(3C). 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 argument ap to the vprint family of functions is of type va_list. This argument is used with the <stdarg.h> header file macros va_start(), va_arg(), and va_end() (see stdarg(3EXT)). The EXAMPLES section below demonstrates the use of va_start() and va_end() with vprintf(). The macro va_alist() is used as the parameter list in a function definition, as in the function called error() in the example below. The macro va_start(ap, parmN), where ap is of type va_list and parmN is the rightmost parameter (just before ...), must be called before any attempt to traverse and access unnamed arguments is made. 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, the error() arguments (arg1, arg2, ...) are passed to vfprintf() in the argument ap. RETURN VALUES
Refer to printf(3C). ERRORS
The vprintf() and vfprintf() functions will fail if either the stream is unbuffered or the stream's buffer needed to be flushed and: EFBIG The file is a regular file and an attempt was made to write at or beyond the offset maximum. EXAMPLES
Example 1: Using vprintf() to write an error routine. The following demonstrates how vfprintf() could be used to write an error routine: #include <stdio.h> #include <stdarg.h> . . . /* * error should be called like * error(function_name, format, arg1, ...); */ void error(char *function_name, char *format, ...) { va_list ap; va_start(ap, format); /* print out name of function causing error */ (void) fprintf(stderr, "ERR in %s: ", function_name); /* print out remainder of message */ (void) vfprintf(stderr, format, ap); va_end(ap); (void) abort(); } ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Standard | +-----------------------------+-----------------------------+ |MT-Level |See below. | +-----------------------------+-----------------------------+ The vprintf() and vfprintf() functions are MT-Safe. The vsprintf() and vsnprintf() functions are Async-Signal-Safe. SEE ALSO
printf(3C), attributes(5), stdarg(3EXT), attributes(5), standards(5) NOTES
The vsnprintf() return value when n = 0 was changed in the Solaris 10 release. The change was based on the SUSv3 specification. The previ- ous behavior was based on the initial SUSv2 specification, where vsnprintf() when n = 0 returns an unspecified value less than 1. SunOS 5.10 29 Mar 2004 vprintf(3C)
Man Page