| Line 6... | 
        Line 6... | 
      
      
                vprintf
  | 
                vprintf
  | 
      
      
        INDEX
  | 
        INDEX
  | 
      
      
                vfprintf
  | 
                vfprintf
  | 
      
      
        INDEX
  | 
        INDEX
  | 
      
      
                vsprintf
  | 
                vsprintf
  | 
      
      
           | 
        INDEX
  | 
      
      
           | 
                vsnprintf
  | 
      
      
         
  | 
         
  | 
      
      
        ANSI_SYNOPSIS
  | 
        ANSI_SYNOPSIS
  | 
      
      
                #include <stdio.h>
  | 
                #include <stdio.h>
  | 
      
      
                #include <stdarg.h>
  | 
                #include <stdarg.h>
  | 
      
      
                int vprintf(const char *<[fmt]>, va_list <[list]>);
  | 
                int vprintf(const char *<[fmt]>, va_list <[list]>);
  | 
      
      
                int vfprintf(FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>);
  | 
                int vfprintf(FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>);
  | 
      
      
                int vsprintf(char *<[str]>, const char *<[fmt]>, va_list <[list]>);
  | 
                int vsprintf(char *<[str]>, const char *<[fmt]>, va_list <[list]>);
  | 
      
      
           | 
                int vsnprintf(char *<[str]>, size_t <[size]>, const char *<[fmt]>, va_list <[list]>);
  | 
      
      
         
  | 
         
  | 
      
      
                int _vprintf_r(void *<[reent]>, const char *<[fmt]>,
  | 
                int _vprintf_r(void *<[reent]>, const char *<[fmt]>,
  | 
      
      
                                va_list <[list]>);
  | 
                                va_list <[list]>);
  | 
      
      
                int _vfprintf_r(void *<[reent]>, FILE *<[fp]>, const char *<[fmt]>,
  | 
                int _vfprintf_r(void *<[reent]>, FILE *<[fp]>, const char *<[fmt]>,
  | 
      
      
                                va_list <[list]>);
  | 
                                va_list <[list]>);
  | 
      
      
                int _vsprintf_r(void *<[reent]>, char *<[str]>, const char *<[fmt]>,
  | 
                int _vsprintf_r(void *<[reent]>, char *<[str]>, const char *<[fmt]>,
  | 
      
      
                                va_list <[list]>);
  | 
                                va_list <[list]>);
  | 
      
      
           | 
                int _vsnprintf_r(void *<[reent]>, char *<[str]>, size_t <[size]>, const char *<[fmt]>,
  | 
      
      
           | 
                                va_list <[list]>);
  | 
      
      
         
  | 
         
  | 
      
      
        TRAD_SYNOPSIS
  | 
        TRAD_SYNOPSIS
  | 
      
      
                #include <stdio.h>
  | 
                #include <stdio.h>
  | 
      
      
                #include <varargs.h>
  | 
                #include <varargs.h>
  | 
      
      
                int vprintf( <[fmt]>, <[list]>)
  | 
                int vprintf( <[fmt]>, <[list]>)
  | 
      
      
        | Line 38... | 
        Line 43... | 
      
      
                int vsprintf(<[str]>, <[fmt]>, <[list]>)
  | 
                int vsprintf(<[str]>, <[fmt]>, <[list]>)
  | 
      
      
                char *<[str]>;
  | 
                char *<[str]>;
  | 
      
      
                char *<[fmt]>;
  | 
                char *<[fmt]>;
  | 
      
      
                va_list <[list]>;
  | 
                va_list <[list]>;
  | 
      
      
         
  | 
         
  | 
      
      
           | 
                int vsnprintf(<[str]>, <[size]>, <[fmt]>, <[list]>)
  | 
      
      
           | 
                char *<[str]>;
  | 
      
      
           | 
                size_t <[size]>;
  | 
      
      
           | 
                char *<[fmt]>;
  | 
      
      
           | 
                va_list <[list]>;
  | 
      
      
           | 
         
  | 
      
      
                int _vprintf_r(<[reent]>, <[fmt]>, <[list]>)
  | 
                int _vprintf_r(<[reent]>, <[fmt]>, <[list]>)
  | 
      
      
                char *<[reent]>;
  | 
                char *<[reent]>;
  | 
      
      
                char *<[fmt]>;
  | 
                char *<[fmt]>;
  | 
      
      
                va_list <[list]>;
  | 
                va_list <[list]>;
  | 
      
      
         
  | 
         
  | 
      
      
        | Line 55... | 
        Line 66... | 
      
      
                char *<[reent]>;
  | 
                char *<[reent]>;
  | 
      
      
                char *<[str]>;
  | 
                char *<[str]>;
  | 
      
      
                char *<[fmt]>;
  | 
                char *<[fmt]>;
  | 
      
      
                va_list <[list]>;
  | 
                va_list <[list]>;
  | 
      
      
         
  | 
         
  | 
      
      
           | 
                int _vsnprintf_r(<[reent]>, <[str]>, <[size]>, <[fmt]>, <[list]>)
  | 
      
      
           | 
                char *<[reent]>;
  | 
      
      
           | 
                char *<[str]>;
  | 
      
      
           | 
                size_t <[size]>;
  | 
      
      
           | 
                char *<[fmt]>;
  | 
      
      
           | 
                va_list <[list]>;
  | 
      
      
           | 
         
  | 
      
      
        DESCRIPTION
  | 
        DESCRIPTION
  | 
      
      
        <<vprintf>>, <<vfprintf>>, and <<vsprintf>> are (respectively)
  | 
        <<vprintf>>, <<vfprintf>>, <<vsprintf>> and <<vsnprintf>> are (respectively)
  | 
      
      
        variants of <<printf>>, <<fprintf>>, and <<sprintf>>.  They differ
  | 
        variants of <<printf>>, <<fprintf>>, <<sprintf>> and <<snprintf>>.  They differ
  | 
      
      
        only in allowing their caller to pass the variable argument list as a
  | 
        only in allowing their caller to pass the variable argument list as a
  | 
      
      
        <<va_list>> object (initialized by <<va_start>>) rather than directly
  | 
        <<va_list>> object (initialized by <<va_start>>) rather than directly
  | 
      
      
        accepting a variable number of arguments.
  | 
        accepting a variable number of arguments.
  | 
      
      
         
  | 
         
  | 
      
      
        RETURNS
  | 
        RETURNS
  | 
      
      
        | Line 115... | 
        Line 133... | 
      
      
         * SUCH DAMAGE.
  | 
         * SUCH DAMAGE.
  | 
      
      
         */
  | 
         */
  | 
      
      
         
  | 
         
  | 
      
      
        #if defined(LIBC_SCCS) && !defined(lint)
  | 
        #if defined(LIBC_SCCS) && !defined(lint)
  | 
      
      
        /*static char *sccsid = "from: @(#)vfprintf.c   5.50 (Berkeley) 12/16/92";*/
  | 
        /*static char *sccsid = "from: @(#)vfprintf.c   5.50 (Berkeley) 12/16/92";*/
  | 
      
      
        static char *rcsid = "$Id: vfprintf.c,v 1.1.1.1 2000-06-10 01:18:26 lampret Exp $";
  | 
        static char *rcsid = "$Id: vfprintf.c,v 1.1.1.2 2000-08-30 19:01:48 joel Exp $";
  | 
      
      
        #endif /* LIBC_SCCS and not lint */
  | 
        #endif /* LIBC_SCCS and not lint */
  | 
      
      
         
  | 
         
  | 
      
      
        /*
  | 
        /*
  | 
      
      
         * Actual printf innards.
  | 
         * Actual printf innards.
  | 
      
      
         *
  | 
         *
  | 
      
      
        | Line 133... | 
        Line 151... | 
      
      
        #define VFPRINTF vfprintf
  | 
        #define VFPRINTF vfprintf
  | 
      
      
        #define _VFPRINTF_R _vfprintf_r
  | 
        #define _VFPRINTF_R _vfprintf_r
  | 
      
      
        #define FLOATING_POINT
  | 
        #define FLOATING_POINT
  | 
      
      
        #endif
  | 
        #endif
  | 
      
      
         
  | 
         
  | 
      
      
        #if 1
  | 
           | 
      
      
        #define _NO_LONGLONG
  | 
        #define _NO_LONGLONG
  | 
      
      
           | 
        #if defined WANT_PRINTF_LONG_LONG && defined __GNUC__
  | 
      
      
           | 
        # undef _NO_LONGLONG
  | 
      
      
        #endif
  | 
        #endif
  | 
      
      
         
  | 
         
  | 
      
      
        #include <_ansi.h>
  | 
        #include <_ansi.h>
  | 
      
      
        #include <stdio.h>
  | 
        #include <stdio.h>
  | 
      
      
        #include <stdlib.h>
  | 
        #include <stdlib.h>
  | 
      
      
        | Line 151... | 
        Line 170... | 
      
      
        #include <varargs.h>
  | 
        #include <varargs.h>
  | 
      
      
        #endif
  | 
        #endif
  | 
      
      
         
  | 
         
  | 
      
      
        #include "local.h"
  | 
        #include "local.h"
  | 
      
      
        #include "fvwrite.h"
  | 
        #include "fvwrite.h"
  | 
      
      
           | 
        #include "vfieeefp.h"
  | 
      
      
         
  | 
         
  | 
      
      
        /*
  | 
        /*
  | 
      
      
         * Flush out all the vectors defined by the given uio,
  | 
         * Flush out all the vectors defined by the given uio,
  | 
      
      
         * then reset it so that it can be reused.
  | 
         * then reset it so that it can be reused.
  | 
      
      
         */
  | 
         */
  | 
      
      
        | Line 313... | 
        Line 333... | 
      
      
                 * Choose PADSIZE to trade efficiency vs. size.  If larger printf
  | 
                 * Choose PADSIZE to trade efficiency vs. size.  If larger printf
  | 
      
      
                 * fields occur frequently, increase PADSIZE and make the initialisers
  | 
                 * fields occur frequently, increase PADSIZE and make the initialisers
  | 
      
      
                 * below longer.
  | 
                 * below longer.
  | 
      
      
                 */
  | 
                 */
  | 
      
      
        #define PADSIZE 16              /* pad chunk size */
  | 
        #define PADSIZE 16              /* pad chunk size */
  | 
      
      
                static char blanks[PADSIZE] =
  | 
                static _CONST char blanks[PADSIZE] =
  | 
      
      
                 {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
  | 
                 {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
  | 
      
      
                static char zeroes[PADSIZE] =
  | 
                static _CONST char zeroes[PADSIZE] =
  | 
      
      
                 {'0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'};
  | 
                 {'0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'};
  | 
      
      
         
  | 
         
  | 
      
      
                /*
  | 
                /*
  | 
      
      
                 * BEWARE, these `goto error' on error, and PAD uses `n'.
  | 
                 * BEWARE, these `goto error' on error, and PAD uses `n'.
  | 
      
      
                 */
  | 
                 */
  | 
      
      
        | Line 846... | 
        Line 866... | 
      
      
                int ndigits, flags, *decpt, ch, *length;
  | 
                int ndigits, flags, *decpt, ch, *length;
  | 
      
      
                char *sign;
  | 
                char *sign;
  | 
      
      
        {
  | 
        {
  | 
      
      
                int mode, dsgn;
  | 
                int mode, dsgn;
  | 
      
      
                char *digits, *bp, *rve;
  | 
                char *digits, *bp, *rve;
  | 
      
      
           | 
                union double_union tmp;
  | 
      
      
         
  | 
         
  | 
      
      
                if (ch == 'f') {
  | 
                if (ch == 'f') {
  | 
      
      
                        mode = 3;               /* ndigits after the decimal point */
  | 
                        mode = 3;               /* ndigits after the decimal point */
  | 
      
      
                } else {
  | 
                } else {
  | 
      
      
                        /* To obtain ndigits after the decimal point for the 'e'
  | 
                        /* To obtain ndigits after the decimal point for the 'e'
  | 
      
      
        | Line 860... | 
        Line 881... | 
      
      
                                ndigits++;
  | 
                                ndigits++;
  | 
      
      
                        }
  | 
                        }
  | 
      
      
                        mode = 2;               /* ndigits significant digits */
  | 
                        mode = 2;               /* ndigits significant digits */
  | 
      
      
                }
  | 
                }
  | 
      
      
         
  | 
         
  | 
      
      
                if (value < 0) {
  | 
                tmp.d = value;
  | 
      
      
           | 
                if (word0(tmp) & Sign_bit) { /* this will check for < 0 and -0.0 */
  | 
      
      
                        value = -value;
  | 
                        value = -value;
  | 
      
      
                        *sign = '-';
  | 
                        *sign = '-';
  | 
      
      
                } else
  | 
                } else
  | 
      
      
                        *sign = '\000';
  | 
                        *sign = '\000';
  | 
      
      
                digits = _dtoa_r(data, value, mode, ndigits, decpt, &dsgn, &rve);
  | 
                digits = _dtoa_r(data, value, mode, ndigits, decpt, &dsgn, &rve);
  |