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