man pages section 3: Basic Library Functions
  Искать только в названиях книг
Просмотреть эту книгу в:
Загрузить это руководство в формате PDF (3779 КБ)

vlfmt(3C)

Name | Synopsis | Description | Return Values | Examples | Usage | Attributes | See Also

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 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 attributes:

    ATTRIBUTE TYPE 

    ATTRIBUTE VALUE 

    MT-Level 

    MT-Safe 

See Also

SunOS 5.10  Last Revised 29 Dec 1996

Name | Synopsis | Description | Return Values | Examples | Usage | Attributes | See Also