Lines Matching +full:- +full:c

1 /* Copyright (c) 2002, Alexander Popov (sasho@vip.bg)
2 Copyright (c) 2002,2004,2005 Joerg Wunsch
3 Copyright (c) 2005, Helmut Wallner
4 Copyright (c) 2007, Dmitry Xmelkov
33 /* From: Id: printf_p_new.c,v 1.1.1.9 2002/10/15 20:10:28 joerg_wunsch Exp */
34 /* $Id: vfprintf.c 2191 2010-11-05 13:45:57Z arcanum $ */
52 * PRINTF_MIN: limited integer-only support with option for long long
139 /* Figure out which multi-byte char support we need */
142 /* need to convert multi-byte chars to wide chars */
228 #include "ultoa_invert.c"
262 #define CHECK_INT_SIZE(c, flags, letter, type) \ argument
263 if (c == letter) { \
275 #define CHECK_C99_INT_SIZES(c, flags) \ argument
276 CHECK_INT_SIZE(c, flags, 'j', intmax_t); \
277 CHECK_INT_SIZE(c, flags, 'z', size_t); \
278 CHECK_INT_SIZE(c, flags, 't', ptrdiff_t);
281 #define CHECK_C99_INT_SIZES(c, flags) argument
284 #define CHECK_INT_SIZES(c, flags) { \ argument
285 if (c == 'l') { \
292 if (c == 'h') { \
300 if (c == 'L') { \
305 CHECK_C99_INT_SIZES(c, flags); \
322 unsigned c; /* holds a char from the format string */ in skip_to_arg() local
331 c = *fmt++; in skip_to_arg()
332 if (!c) return; in skip_to_arg()
333 if (c == '%') { in skip_to_arg()
334 c = *fmt++; in skip_to_arg()
335 if (c != '%') break; in skip_to_arg()
348 switch (c) { in skip_to_arg()
354 case '-': in skip_to_arg()
364 if (c >= '0' && c <= '9') { in skip_to_arg()
365 c -= '0'; in skip_to_arg()
366 width = 10 * width + c; in skip_to_arg()
370 if (c == '$') { in skip_to_arg()
379 c = 'c'; in skip_to_arg()
390 if (c == '*') { in skip_to_arg()
395 if (c == '.') { in skip_to_arg()
401 CHECK_INT_SIZES(c, flags); in skip_to_arg()
404 } while ( (c = *fmt++) != 0); in skip_to_arg()
408 if ((TOLOWER(c) >= 'e' && TOLOWER(c) <= 'g') in skip_to_arg()
410 || TOLOWER(c) == 'a' in skip_to_arg()
413 SKIP_FLOAT_ARG(flags, ap->ap); in skip_to_arg()
414 } else if (c == 'c') { in skip_to_arg()
415 (void) va_arg (ap->ap, int); in skip_to_arg()
416 } else if (c == 's') { in skip_to_arg()
417 (void) va_arg (ap->ap, char *); in skip_to_arg()
418 } else if (c == 'd' || c == 'i') { in skip_to_arg()
420 arg_to_signed(ap->ap, flags, x_s); in skip_to_arg()
423 arg_to_unsigned(ap->ap, flags, x); in skip_to_arg()
441 wchar_t c; in _mbslen() local
444 while (len < maxlen && (c = *s++) != L'\0') { in _mbslen()
446 clen = wcrtomb(tmp, c, &ps); in _mbslen()
447 if (clen == (size_t) -1) in _mbslen()
458 * Compute the number of wide chars to encode a multi-byte string
465 wchar_t c; in _wcslen() local
468 size_t clen = mbrtowc(&c, s, MB_LEN_MAX, &ps); in _wcslen()
469 if (c == L'\0') in _wcslen()
471 if (clen == (size_t) -1) in _wcslen()
482 unsigned c; /* holds a char from the format string */ in vfprintf() local
495 char __buf[PRINTF_BUF_SIZE]; /* size for -1 in smallest base, without '\0' */ in vfprintf()
516 #define my_putc(c, stream) do { ++stream_len; if (putwc(c, stream) == WEOF) goto fail; } while(0) in vfprintf() argument
518 int (*put)(char, FILE *) = stream->put; in vfprintf()
519 #define my_putc(c, stream) do { ++stream_len; if (put(c, stream) < 0) goto fail; } while(0) in vfprintf() argument
523 if ((stream->flags & __SWR) == 0) in vfprintf()
533 c = *fmt++; in vfprintf()
534 if (!c) goto ret; in vfprintf()
535 if (c == '%') { in vfprintf()
536 c = *fmt++; in vfprintf()
537 if (c != '%') break; in vfprintf()
539 my_putc (c, stream); in vfprintf()
551 switch (c) { in vfprintf()
561 case '-': in vfprintf()
569 * C/POSIX locale has an empty thousands_sep in vfprintf()
577 if (c >= '0' && c <= '9') { in vfprintf()
579 c -= '0'; in vfprintf()
581 prec = 10*prec + c; in vfprintf()
584 width = 10*width + c; in vfprintf()
589 if (c == '*') { in vfprintf()
611 width = -width; in vfprintf()
618 if (c == '.') { in vfprintf()
626 if (c == '$') { in vfprintf()
649 CHECK_INT_SIZES(c, flags); in vfprintf()
652 } while ( (c = *fmt++) != 0); in vfprintf()
677 #define TOCASE(c) ((c) - case_convert) in vfprintf() argument
680 if ((TOLOWER(c) >= 'e' && TOLOWER(c) <= 'g') in vfprintf()
682 || TOLOWER(c) == 'a' in vfprintf()
695 case_convert = TOLOWER(c) - c; in vfprintf()
696 c = TOLOWER(c); in vfprintf()
707 if (c == 'a') { in vfprintf()
709 c = 'p'; in vfprintf()
713 prec = -1; in vfprintf()
726 if (c == 'e') { in vfprintf()
729 } else if (c == 'f') { in vfprintf()
735 c += 'e' - 'g'; in vfprintf()
758 if (c == 'a') { in vfprintf()
760 c = 'p'; in vfprintf()
764 prec = -1; in vfprintf()
768 prec = ndigs - 1; in vfprintf()
779 if (c == 'e') { in vfprintf()
782 } else if (c == 'f') { in vfprintf()
788 c += 'e' - 'g'; in vfprintf()
801 if (exp < -9 || 9 < exp) in vfprintf()
803 if (exp < -99 || 99 < exp) in vfprintf()
806 if (exp < -999 || 999 < exp) in vfprintf()
809 if (exp < -9999 || 9999 < exp) in vfprintf()
816 sign = '-'; in vfprintf()
826 width -= ndigs; in vfprintf()
830 } while (--width); in vfprintf()
840 while ( (c = *pnt++) ) in vfprintf()
841 my_putc (TOCASE(c), stream); in vfprintf()
867 while (ndigs > 0 && dtoa.digits[ndigs-1] == '0') in vfprintf()
868 ndigs--; in vfprintf()
879 * says to use 'f' if the exponent is >= -4 and < requested in vfprintf()
882 if (-4 <= exp && exp < req_prec) in vfprintf()
903 prec = prec - (exp + 1); in vfprintf()
908 prec = prec - 1; in vfprintf()
930 width = width > n ? width - n : 0; in vfprintf()
936 width--; in vfprintf()
952 width--; in vfprintf()
971 if (n == -1) in vfprintf()
974 /* Pull digits from buffer when in-range, in vfprintf()
977 if (0 <= exp - n && exp - n < ndigs) in vfprintf()
978 out = dtoa.digits[exp - n]; in vfprintf()
981 if (--n < -prec) { in vfprintf()
987 if ((flags & FL_ALT) && n == -1) in vfprintf()
1002 my_putc (TOCASE(c), stream); in vfprintf()
1005 exp = -exp; in vfprintf()
1006 sign = '-'; in vfprintf()
1035 size = sizeof ("*float*") - 1; in vfprintf()
1047 if (c == 'c') { in vfprintf()
1064 } else if (c == 's') { in vfprintf()
1073 if (size == (size_t) -1) in vfprintf()
1086 char c; in vfprintf() local
1087 while ( (c = *pnt++) ) in vfprintf()
1088 my_putc(c, stream); in vfprintf()
1100 width--; in vfprintf()
1103 width -= size; in vfprintf()
1109 wchar_t c = *wstr++; in vfprintf() local
1111 size_t mb_len = wcrtomb(mb, c, &ps); in vfprintf()
1115 size--; in vfprintf()
1116 mb_len--; in vfprintf()
1120 while(size--) in vfprintf()
1128 while (size--) { in vfprintf()
1129 wchar_t c; in vfprintf() local
1130 size_t mb_len = mbrtowc(&c, pnt, MB_LEN_MAX, &ps); in vfprintf()
1131 my_putc(c, stream); in vfprintf()
1135 while (size--) in vfprintf()
1141 } else if (c == 'n') { in vfprintf()
1157 if (c == 'd' || c == 'i') { in vfprintf()
1163 x_s = -x_s; in vfprintf()
1174 buf_len = __ultoa_invert (x_s, buf, 10) - buf; in vfprintf()
1179 if (c == 'u') { in vfprintf()
1182 } else if (c == 'o') { in vfprintf()
1184 c = '\0'; in vfprintf()
1185 } else if (c == 'p') { in vfprintf()
1188 c = 'x'; in vfprintf()
1191 } else if (TOLOWER(c) == 'x') { in vfprintf()
1192 base = ('x' - c) | 16; in vfprintf()
1194 } else if (TOLOWER(c) == 'b') { in vfprintf()
1199 my_putc(c, stream); in vfprintf()
1216 buf_len = __ultoa_invert (x, buf, base) - buf; in vfprintf()
1234 if (c == '\0') in vfprintf()
1243 if (c != '\0') in vfprintf()
1258 prec += width - len; in vfprintf()
1269 width -= len; in vfprintf()
1274 if (c != '\0') in vfprintf()
1275 my_putc (c, stream); in vfprintf()
1279 if (flags & FL_NEGATIVE) z = '-'; in vfprintf()
1286 prec--; in vfprintf()
1291 if (c != '\0') in vfprintf()
1292 my_putc (c, stream); in vfprintf()
1294 my_putc('-', stream); in vfprintf()
1299 my_putc (buf[--buf_len], stream); in vfprintf()
1305 while (width-- > 0) { in vfprintf()
1319 stream->flags |= __SERR; in vfprintf()
1320 stream_len = -1; in vfprintf()