Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ vlfmt(3C) — DG/UX 5.4.2A

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

lfmt(3C)

stdarg(5)



vlfmt(3C)                        DG/UX 5.4.2                       vlfmt(3C)


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

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

       int vlfmt(FILE *stream, long flags, char *format, valist ap);

DESCRIPTION
       vlfmt() is the same as lfmt() 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 valist and a set of
       macros for advancing through a list of arguments whose number and
       types may vary.  The argument ap to vlfmt() is of type valist.  This
       argument is used with the <stdarg.h> header file macros vastart(),
       vaarg() and vaend() [see vastart(), vaarg(), and vaend() in
       stdarg(5)].  The EXAMPLE section below shows their use with vlfmt().

       The macro valist is used as the parameter list in a function
       definition as in the function called errlog() in the example below.
       The macro vastart(ap, ), where ap is of type valist, must be called
       before any attempt to traverse and access unnamed arguments.  Calls
       to vaarg(ap, atype) traverse the argument list.  Each execution of
       vaarg() expands to an expression with the value and type of the next
       argument in the list ap, which is the same object initialized by
       vastart.  The argument atype is the type that the returned argument
       is expected to be.  The vaend(ap) macro must be invoked when all
       desired arguments have been accessed.  (The argument list in ap can
       be traversed again if vastart() is called again after vaend().)  In
       the example below, vaarg() is executed first to retrieve the format
       string passed to errlog().  The remaining errlog() arguments, arg1,
       arg2, ..., are given to vlfmt() in the argument ap.

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

       -1     write error to stream.

       -2     cannot log and/or display at console.

EXAMPLE
       The following demonstrates how vlfmt() could be used to write an
       errlog() routine:

              ft 4
              #include <pfmt.h>
              #include <stdarg.h>
              /*



Licensed material--property of copyright holder(s)                         1




vlfmt(3C)                        DG/UX 5.4.2                       vlfmt(3C)


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

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









































Licensed material--property of copyright holder(s)                         2


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