#include <config.h>
#include "strftime.h"
#include <ctype.h>
#include <time.h>
#include <limits.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
Defines | |
#define | MULTIBYTE_IS_FORMAT_SAFE 1 |
#define | DO_MULTIBYTE (! MULTIBYTE_IS_FORMAT_SAFE) |
#define | CHAR_T char |
#define | UCHAR_T unsigned char |
#define | L_(Str) Str |
#define | NLW(Sym) Sym |
#define | MEMCPY(d, s, n) memcpy (d, s, n) |
#define | STRLEN(s) strlen (s) |
#define | SHR(a, b) |
#define | INT_STRLEN_BOUND(t) ((sizeof (t) * CHAR_BIT - 1) * 146 / 485 + 2) |
#define | TM_YEAR_BASE 1900 |
#define | __isleap(year) ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) |
#define | FPRINTFTIME 0 |
#define | STREAM_OR_CHAR_T CHAR_T |
#define | STRFTIME_ARG(x) x, |
#define | memset_space(P, Len) (memset (P, ' ', Len), (P) += (Len)) |
#define | memset_zero(P, Len) (memset (P, '0', Len), (P) += (Len)) |
#define | advance(P, N) ((P) += (N)) |
#define | add(n, f) |
#define | add1(C) add (1, *p = C) |
#define | cpy(n, s) |
#define | LOCALE_PARAM_PROTO |
#define | LOCALE_ARG |
#define | HELPER_LOCALE_ARG |
#define | TOUPPER(Ch, L) toupper (Ch) |
#define | TOLOWER(Ch, L) tolower (Ch) |
#define | ISDIGIT(Ch) ((unsigned int) (Ch) - L_('0') <= 9) |
#define | ISO_WEEK_START_WDAY 1 |
#define | ISO_WEEK1_WDAY 4 |
#define | YDAY_MINIMUM (-366) |
#define | extra_args , ut, ns |
#define | extra_args_spec , int ut, int ns |
#define | DO_NUMBER(d, v) |
#define | DO_SIGNED_NUMBER(d, negative, v) |
#define | DO_TZ_OFFSET(d, negative, mask, v) |
#define | DO_NUMBER_SPACEPAD(d, v) |
Functions | |
size_t | my_strftime (STREAM_OR_CHAR_T *s, STRFTIME_ARG(size_t maxsize) const CHAR_T *format, const struct tm *tp extra_args_spec LOCALE_PARAM_PROTO) |
#define __isleap | ( | year | ) | ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) |
#define add | ( | n, | ||
f | ||||
) |
do \ { \ int _n = (n); \ int _delta = width - _n; \ int _incr = _n + (_delta > 0 ? _delta : 0); \ if ((size_t) _incr >= maxsize - i) \ return 0; \ if (p) \ { \ if (digits == 0 && _delta > 0) \ { \ if (pad == L_('0')) \ memset_zero (p, _delta); \ else \ memset_space (p, _delta); \ } \ f; \ advance (p, _n); \ } \ i += _incr; \ } while (0)
#define add1 | ( | C | ) | add (1, *p = C) |
#define CHAR_T char |
#define cpy | ( | n, | ||
s | ||||
) |
add ((n), \ if (to_lowcase) \ memcpy_lowcase (p, (s), _n LOCALE_ARG); \ else if (to_uppcase) \ memcpy_uppcase (p, (s), _n LOCALE_ARG); \ else \ MEMCPY ((void *) p, (void const *) (s), _n))
#define DO_MULTIBYTE (! MULTIBYTE_IS_FORMAT_SAFE) |
#define DO_SIGNED_NUMBER | ( | d, | ||
negative, | ||||
v | ||||
) |
digits = d; \ negative_number = negative; \ u_number_value = v; goto do_signed_number
#define DO_TZ_OFFSET | ( | d, | ||
negative, | ||||
mask, | ||||
v | ||||
) |
digits = d; \ negative_number = negative; \ tz_colon_mask = mask; \ u_number_value = v; goto do_tz_offset
#define extra_args , ut, ns |
#define extra_args_spec , int ut, int ns |
#define FPRINTFTIME 0 |
#define HELPER_LOCALE_ARG |
#define INT_STRLEN_BOUND | ( | t | ) | ((sizeof (t) * CHAR_BIT - 1) * 146 / 485 + 2) |
#define ISDIGIT | ( | Ch | ) | ((unsigned int) (Ch) - L_('0') <= 9) |
#define ISO_WEEK1_WDAY 4 |
#define ISO_WEEK_START_WDAY 1 |
#define L_ | ( | Str | ) | Str |
#define LOCALE_ARG |
#define LOCALE_PARAM_PROTO |
#define memset_space | ( | P, | ||
Len | ||||
) | (memset (P, ' ', Len), (P) += (Len)) |
#define memset_zero | ( | P, | ||
Len | ||||
) | (memset (P, '0', Len), (P) += (Len)) |
#define MULTIBYTE_IS_FORMAT_SAFE 1 |
#define NLW | ( | Sym | ) | Sym |
#define SHR | ( | a, | ||
b | ||||
) |
(-1 >> 1 == -1 \ ? (a) >> (b) \ : (a) / (1 << (b)) - ((a) % (1 << (b)) < 0))
#define STREAM_OR_CHAR_T CHAR_T |
#define STRLEN | ( | s | ) | strlen (s) |
#define TM_YEAR_BASE 1900 |
#define TOLOWER | ( | Ch, | ||
L | ||||
) | tolower (Ch) |
#define TOUPPER | ( | Ch, | ||
L | ||||
) | toupper (Ch) |
#define UCHAR_T unsigned char |
#define YDAY_MINIMUM (-366) |
size_t my_strftime | ( | STREAM_OR_CHAR_T * | s, | |
STRFTIME_ARG(size_t maxsize) const CHAR_T * | format, | |||
const struct tm *tp extra_args_spec | LOCALE_PARAM_PROTO | |||
) |