Lines Matching +full:double +full:- +full:buffering

1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
63 #include "un-namespace.h"
80 char *thousands_sep; /* locale-specific thousands separator */
82 const char *grouping; /* locale-specific numeric grouping rules */
99 gs->grouping = locale->grouping; in grouping_init()
100 gs->thousands_sep = locale->thousands_sep; in grouping_init()
101 gs->thousep_len = strlen(gs->thousands_sep); in grouping_init()
103 gs->nseps = gs->nrepeats = 0; in grouping_init()
104 gs->lead = ndigits; in grouping_init()
105 while (*gs->grouping != CHAR_MAX) { in grouping_init()
106 if (gs->lead <= *gs->grouping) in grouping_init()
108 gs->lead -= *gs->grouping; in grouping_init()
109 if (*(gs->grouping+1)) { in grouping_init()
110 gs->nseps++; in grouping_init()
111 gs->grouping++; in grouping_init()
113 gs->nrepeats++; in grouping_init()
115 return ((gs->nseps + gs->nrepeats) * gs->thousep_len); in grouping_init()
127 if (io_printandpad(iop, cp, ep, gs->lead, zeroes, locale)) in grouping_print()
128 return (-1); in grouping_print()
129 cp += gs->lead; in grouping_print()
130 while (gs->nseps > 0 || gs->nrepeats > 0) { in grouping_print()
131 if (gs->nrepeats > 0) in grouping_print()
132 gs->nrepeats--; in grouping_print()
134 gs->grouping--; in grouping_print()
135 gs->nseps--; in grouping_print()
137 if (io_print(iop, gs->thousands_sep, gs->thousep_len, locale)) in grouping_print()
138 return (-1); in grouping_print()
139 if (io_printandpad(iop, cp, ep, *gs->grouping, zeroes, locale)) in grouping_print()
140 return (-1); in grouping_print()
141 cp += *gs->grouping; in grouping_print()
145 return (cp - cp0); in grouping_print()
157 if (uio->uio_resid == 0) { in __sprint()
158 uio->uio_iovcnt = 0; in __sprint()
162 uio->uio_resid = 0; in __sprint()
163 uio->uio_iovcnt = 0; in __sprint()
169 * temporary buffer. We only work on write-only files; this avoids
184 fake._flags = fp->_flags & ~__SNBF; in __sbprintf()
185 fake._file = fp->_file; in __sbprintf()
186 fake._cookie = fp->_cookie; in __sbprintf()
187 fake._write = fp->_write; in __sbprintf()
188 fake._orientation = fp->_orientation; in __sbprintf()
189 fake._mbstate = fp->_mbstate; in __sbprintf()
201 fp->_flags |= __SERR; in __sbprintf()
207 * string representation. If not -1, prec specifies the maximum number of
209 * string ends is null-terminated.
226 if (nbytes == (size_t)-1) in __wcsconv()
242 if (clen == 0 || clen == (size_t)-1 || in __wcsconv()
256 nbytes, &mbs)) == (size_t)-1) { in __wcsconv()
265 * MT-safe version
277 if ((fp->_flags & (__SNBF|__SWR|__SRW)) == (__SNBF|__SWR) && in vfprintf_l()
278 fp->_file >= 0) in vfprintf_l()
299 * Non-MT-safe version
314 char sign; /* sign prefix (' ', '+', '-', or \0) */ in __vfprintf()
322 * [+|-| ] [0x|0X] MMM . NNN [e|E|p|P] [+|-] ZZ in __vfprintf()
323 * A B ---C--- D E F in __vfprintf()
336 double dbl; in __vfprintf()
337 long double ldbl; in __vfprintf()
355 struct io_state io; /* I/O buffering state */ in __vfprintf()
360 int nextarg; /* 1-based argument index */ in __vfprintf()
458 savserr = fp->_flags & __SERR; in __vfprintf()
459 fp->_flags &= ~__SERR; in __vfprintf()
470 decimal_point = localeconv_l(locale)->decimal_point; in __vfprintf()
481 if ((n = fmt - cp) != 0) { in __vfprintf()
497 prec = -1; in __vfprintf()
505 /*- in __vfprintf()
508 * -- ANSI X3J11 in __vfprintf()
517 /*- in __vfprintf()
519 * - flag followed by a positive field width.'' in __vfprintf()
520 * -- ANSI X3J11 in __vfprintf()
526 width = -width; in __vfprintf()
528 case '-': in __vfprintf()
549 /*- in __vfprintf()
552 * -- ANSI X3J11 in __vfprintf()
607 * Fixed-width integer types. On all platforms we in __vfprintf()
643 fmt--; in __vfprintf()
658 /* leading 0b/B only if non-zero */ in __vfprintf()
676 if (mbseqlen == (size_t)-1) { in __vfprintf()
677 fp->_flags |= __SERR; in __vfprintf()
695 ujval = -ujval; in __vfprintf()
696 sign = '-'; in __vfprintf()
701 ulval = -ulval; in __vfprintf()
702 sign = '-'; in __vfprintf()
724 fparg.ldbl = GETARG(long double); in __vfprintf()
729 fparg.dbl = GETARG(double); in __vfprintf()
735 prec = dtoaend - cp; in __vfprintf()
753 expchar = ch - ('g' - 'e'); in __vfprintf()
762 fparg.ldbl = GETARG(long double); in __vfprintf()
767 fparg.dbl = GETARG(double); in __vfprintf()
776 sign = '-'; in __vfprintf()
788 ndig = dtoaend - cp; in __vfprintf()
790 if (expt > -4 && expt <= prec) { in __vfprintf()
794 prec -= expt; in __vfprintf()
796 prec = ndig - expt; in __vfprintf()
809 expsize = exponent(expstr, expt - 1, expchar); in __vfprintf()
836 * Assignment-like behavior is specified if the in __vfprintf()
868 /*- in __vfprintf()
871 * of printable characters, in an implementation- in __vfprintf()
873 * -- ANSI X3J11 in __vfprintf()
895 fp->_flags |= __SERR; in __vfprintf()
926 /* leading 0x/X only if non-zero */ in __vfprintf()
934 /*- in __vfprintf()
937 * -- ANSI X3J11 in __vfprintf()
942 /*- in __vfprintf()
945 * -- ANSI X3J11 in __vfprintf()
949 * -- Defect Report #151 in __vfprintf()
963 size = buf + BUF - cp; in __vfprintf()
987 * After any left-hand padding and prefixing, emit zeroes in __vfprintf()
1008 /* right-adjusting blank padding */ in __vfprintf()
1010 PAD(width - realsz, blanks); in __vfprintf()
1021 /* right-adjusting zero padding */ in __vfprintf()
1023 PAD(width - realsz, zeroes); in __vfprintf()
1030 PAD(dprec - size, zeroes); in __vfprintf()
1044 PAD(-expt, zeroes); in __vfprintf()
1067 PRINT(cp, ndig-1); in __vfprintf()
1068 PAD(prec - ndig, zeroes); in __vfprintf()
1075 /* left-adjusting padding (always blank) */ in __vfprintf()
1077 PAD(width - realsz, blanks); in __vfprintf()
1097 fp->_flags |= savserr; in __vfprintf()