diff options
| author | Jakob Kaivo <jkk@ung.org> | 2024-01-30 15:45:38 -0500 |
|---|---|---|
| committer | Jakob Kaivo <jkk@ung.org> | 2024-01-30 15:45:38 -0500 |
| commit | bafccb2f57ac1a1852be2d6aafe33cf02d1630c1 (patch) | |
| tree | a6164b42b37b941cb64bbc3db8af7a1daf381ace /src/monetary | |
| parent | 910a86c095b6d7311d73fa88a632aa9b673243b2 (diff) | |
update dependencies
Diffstat (limited to 'src/monetary')
| -rw-r--r-- | src/monetary/size_t.ref | 3 | ||||
| -rw-r--r-- | src/monetary/ssize_t.ref | 3 | ||||
| -rw-r--r-- | src/monetary/strfmon.c | 151 |
3 files changed, 0 insertions, 157 deletions
diff --git a/src/monetary/size_t.ref b/src/monetary/size_t.ref deleted file mode 100644 index f1340027..00000000 --- a/src/monetary/size_t.ref +++ /dev/null @@ -1,3 +0,0 @@ -#include <monetary.h> -REFERENCE(stddef/size_t.c) -XOPEN(4) diff --git a/src/monetary/ssize_t.ref b/src/monetary/ssize_t.ref deleted file mode 100644 index 446f4d3e..00000000 --- a/src/monetary/ssize_t.ref +++ /dev/null @@ -1,3 +0,0 @@ -#include <monetary.h> -REFERENCE(sys/types/ssize_t.c) -XOPEN(4) diff --git a/src/monetary/strfmon.c b/src/monetary/strfmon.c deleted file mode 100644 index 829d8ffc..00000000 --- a/src/monetary/strfmon.c +++ /dev/null @@ -1,151 +0,0 @@ -#if 0 - -#include <monetary.h> -#include <ctype.h> -#include <locale.h> -#include <stdarg.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -ssize_t strfmon(char * restrict s, size_t maxsize, const char * restrict format, ...) -{ - size_t i = 0; - va_list ap; - va_start(ap, format); - - struct lconv *lc = localeconv(); - - while (*format && i < maxsize) { - if (*format != '%') { - s[i++] = *format++; - continue; - } - - format++; - - if (*format == '%') { - s[i++] = '%'; - format++; - continue; - } - - char fill = ' '; - char positive_negative_style = '+'; - char *positive_sign = lc->positive_sign; - char *negative_sign = lc->negative_sign; - char *negative_end = ""; - char *symbol = lc->currency_symbol; - int grouping = 1; - - enum { left, right } align = right; - - while (strchr("=^+(!-", *format)) { - switch (*format) { - case '=': - fill = format[1]; - format++; - break; - - case '^': - grouping = 0; - break; - - case '+': - /* is default */ - break; - - case '(': - positive_sign = ""; - negative_sign = "("; - negative_end = ")"; - break; - - case '!': - symbol = ""; - break; - - case '-': - align = left; - break; - } - format++; - } - - int width = 0; - if (isdigit(*format)) { - char *end = NULL; - width = (int)strtol(format, &end, 10); - format = end; - } - - int lprecision = 0; - if (*format == '#') { - if (!isdigit(format[1])) { - va_end(ap); - return -1; - } - char *end = NULL; - lprecision = (int)strtol(format + 1, &end, 10); - format = end; - } - - int rprecision = lc->frac_digits; - if (*format == '.') { - if (!isdigit(format[1])) { - va_end(ap); - return -1; - } - char *end = NULL; - rprecision = (int)strtol(format + 1, &end, 10); - format = end; - } - - if (*format != 'i' && *format != 'n') { - va_end(ap); - return -1; - } - - /* i == international format */ - /* n == national format */ - - double value = va_arg(ap, double); - int negative = 0; - if (value < 0) { - negative = 1; - value = value * -1; - } - - char *currency = lc->currency_symbol; - - char *sign = negative ? negative_sign : positive_sign; - - i += snprintf(s + i, maxsize - i, "%s", sign); - i += snprintf(s + i, maxsize - i, "%s", symbol); - - char valuebuf[64]; - snprintf(valuebuf, sizeof(valuebuf), "%'*.2f", width, value); - for (char *s = valuebuf; *s == ' '; s++) { - *s = fill; - } - - i += snprintf(s + i, maxsize - i, "%s", valuebuf); - - if (negative) { - i += snprintf(s + i, maxsize - i, "%s", negative_end); - } - - format++; - } - - va_end(ap); - return i; -} - -/* -XOPEN(4) -POSIX(200809) -*/ - - -#endif |
