Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ vlfmt(3C) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

lfmt(3C)

vpfmt(3C)

stdarg(5)

vlfmt(3C)     11 Mar 1992 (C Programming Language Utilities)      vlfmt(3C)

NAME
     vlfmt - display error message in standard format and pass to logging
     and monitoring services

SYNOPSIS
     #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 va_list and a set of mac-
     ros for advancing through a list of arguments whose number and types
     may vary. The argument ap to vlfmt() 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 vlfmt().

     The macro va_alist is used as the parameter list in a function defini-
     tion as in the function called errlog() 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 should 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 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 err-
     log() routine:

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




Page 1                       Reliant UNIX 5.44                      3, 1911

vlfmt(3C)     11 Mar 1992 (C Programming Language Utilities)      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, log_info);
              format = va_arg(ap, char *);
              (void) vlfmt(stderr, log_info|MM_ERROR, format, ap);
              va_end(ap);
              (void) abort();
          }

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




































Page 2                       Reliant UNIX 5.44                      3, 1911

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