Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

pfmt(3C)

stdarg(5)



vpfmt(3C)                      DG/UX R4.11MU05                     vpfmt(3C)


NAME
       vpfmt - display error message in standard format and pass to monitor
       and logger

SYNOPSIS
       #include <stdarg.h>
       #include <pfmt.h>

       int vpfmt(FILE *stream, long flags, char *format, va_list ap);

DESCRIPTION
       Vpfmt() is the same as pfmt() except that instead of being called
       with a variable number of arguments, it is called with an argument
       list as defined by the <stdarg.h> header file.

       The <stdarg.h> header file 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 vpfmt() is of type va_list.  This
       argument is used with the <stdarg.h> header file macros va_start(),
       va_arg() and va_end() [see va_start(), va_arg(), and va_end() in
       stdarg(5)].  The EXAMPLE section below shows their use with vpfmt().

       The macro va_list 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, ), where ap is of type va_list, must be called
       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 argument atype 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 given to vpfmt() in the argument ap.

RETURN VALUE
       Upon success, vpfmt() returns the number of bytes transmitted.  Upon
       failure, it returns a negative value:

       -1     write error to stream.

EXAMPLE
       The following demonstrates how vpfmt() could be used to write an
       error() routine:

              #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();
              }

SEE ALSO
       pfmt(3C), stdarg(5).


Licensed material--property of copyright holder(s)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026