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(3HEAD).  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(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | MT-Level                    | MT-Safe                     |
    |_____________________________|_____________________________|


SEE ALSO

     gettxt(3C), pfmt(3C), attributes(5), stdarg(3HEAD)


Man(1) output converted with man2html