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

1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
62 #include "un-namespace.h"
79 wchar_t thousands_sep; /* locale-specific thousands separator */
80 const char *grouping; /* locale-specific numeric grouping rules */
96 nconv = mbrtowc(&decpt, localeconv_l(locale)->decimal_point, MB_CUR_MAX, &mbs);
97 if (nconv == (size_t)-1 || nconv == (size_t)-2)
110 nconv = mbrtowc(&thousep, localeconv_l(locale)->thousands_sep,
112 if (nconv == (size_t)-1 || nconv == (size_t)-2)
126 gs->grouping = localeconv_l(locale)->grouping;
127 gs->thousands_sep = get_thousep(locale);
129 gs->nseps = gs->nrepeats = 0;
130 gs->lead = ndigits;
131 while (*gs->grouping != CHAR_MAX) {
132 if (gs->lead <= *gs->grouping)
134 gs->lead -= *gs->grouping;
135 if (*(gs->grouping+1)) {
136 gs->nseps++;
137 gs->grouping++;
139 gs->nrepeats++;
141 return (gs->nseps + gs->nrepeats);
153 if (io_printandpad(iop, cp, ep, gs->lead, zeroes, locale))
154 return (-1);
155 cp += gs->lead;
156 while (gs->nseps > 0 || gs->nrepeats > 0) {
157 if (gs->nrepeats > 0)
158 gs->nrepeats--;
160 gs->grouping--;
161 gs->nseps--;
163 if (io_print(iop, &gs->thousands_sep, 1, locale))
164 return (-1);
165 if (io_printandpad(iop, cp, ep, *gs->grouping, zeroes, locale))
166 return (-1);
167 cp += *gs->grouping;
171 return (cp - cp0);
181 * string eclipses the benefits of buffering.
190 iov = uio->uio_iov;
191 for (; uio->uio_resid != 0; uio->uio_resid -= len, iov++) {
192 p = (wchar_t *)iov->iov_base;
193 len = iov->iov_len;
196 return (-1);
199 uio->uio_iovcnt = 0;
205 * temporary buffer. We only work on write-only files; this avoids
220 fake._flags = fp->_flags & ~__SNBF;
221 fake._file = fp->_file;
222 fake._cookie = fp->_cookie;
223 fake._write = fp->_write;
224 fake._orientation = fp->_orientation;
225 fake._mbstate = fp->_mbstate;
237 fp->_flags |= __SERR;
254 if ((fp->_flags & __SSTR) == 0)
258 if ((len = wcrtomb(buf, wc, &mbs)) == (size_t)-1) {
259 fp->_flags |= __SERR;
293 * String is not guaranteed to be NUL-terminated. Find the
301 if (nconv == 0 || nconv == (size_t)-1 ||
302 nconv == (size_t)-2)
308 if (nconv == (size_t)-1 || nconv == (size_t)-2)
328 if (nconv == 0 || nconv == (size_t)-1 || nconv == (size_t)-2)
332 insize -= nconv;
334 if (nconv == (size_t)-1 || nconv == (size_t)-2) {
344 * MT-safe version
355 if ((fp->_flags & (__SNBF|__SWR|__SRW)) == (__SNBF|__SWR) &&
356 fp->_file >= 0)
377 * Non-MT-safe version
390 wchar_t sign; /* sign prefix (' ', '+', '-', or \0) */
397 * [+|-| ] [0x|0X] MMM . NNN [e|E|p|P] [+|-] ZZ
398 * A B ---C--- D E F
410 double dbl;
411 long double ldbl;
429 struct io_state io; /* I/O buffering state */
431 wchar_t ox[2]; /* space for 0x hex-prefix */
434 int nextarg; /* 1-based argument index */
530 savserr = fp->_flags & __SERR;
531 fp->_flags &= ~__SERR;
550 if ((n = fmt - cp) != 0) {
566 prec = -1;
574 /*-
577 * -- ANSI X3J11
586 /*-
588 * - flag followed by a positive field width.''
589 * -- ANSI X3J11
595 width = -width;
597 case '-':
618 /*-
621 * -- ANSI X3J11
676 * Fixed-width integer types. On all platforms we
712 fmt--;
727 /* leading 0b/B only if non-zero */
752 ujval = -ujval;
753 sign = '-';
758 ulval = -ulval;
759 sign = '-';
779 fparg.ldbl = GETARG(long double);
784 fparg.dbl = GETARG(double);
790 prec = dtoaend - dtoaresult;
795 ndig = dtoaend - dtoaresult;
796 cp = convbuf = __mbsconv(dtoaresult, -1);
813 expchar = ch - ('g' - 'e');
822 fparg.ldbl = GETARG(long double);
827 fparg.dbl = GETARG(double);
834 ndig = dtoaend - dtoaresult;
835 cp = convbuf = __mbsconv(dtoaresult, -1);
839 sign = '-';
852 if (expt > -4 && expt <= prec) {
856 prec -= expt;
858 prec = ndig - expt;
871 expsize = exponent(expstr, expt - 1, expchar);
891 * Assignment-like behavior is specified if the
923 /*-
926 * of printable characters, in an implementation-
928 * -- ANSI X3J11
953 fp->_flags |= __SERR;
983 /* leading 0x/X only if non-zero */
991 /*-
994 * -- ANSI X3J11
999 /*-
1002 * -- ANSI X3J11
1006 * -- Defect Report #151
1020 size = buf + BUF - cp;
1044 * After any left-hand padding and prefixing, emit zeroes
1065 /* right-adjusting blank padding */
1067 PAD(width - realsz, blanks);
1078 /* right-adjusting zero padding */
1080 PAD(width - realsz, zeroes);
1087 PAD(dprec - size, zeroes);
1101 PAD(-expt, zeroes);
1125 PRINT(cp, ndig-1);
1126 PAD(prec - ndig, zeroes);
1133 /* left-adjusting padding (always blank) */
1135 PAD(width - realsz, blanks);
1151 fp->_flags |= savserr;