Mercurial > emacs
annotate src/strftime.c @ 38588:08a4c6c00af0
(init_from_display_pos): If POS is in an overlay string,
deal with the first overlay string having an image `display'
property.
(try_window_reusing_current_matrix, compute_line_metrics): Fix
computation of row's visible height for the case that part of the
row is invisible above and part of the row is at the same time
invisible below the window.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Fri, 27 Jul 2001 15:29:16 +0000 |
parents | 1139c325f625 |
children | e4835ecdffbc |
rev | line source |
---|---|
34302
1139c325f625
Change some #if foo to #ifdef foo.
Dave Love <fx@gnu.org>
parents:
32687
diff
changeset
|
1 /* Copyright (C) 1991,92,93,94,95,96,97,98,99,2000 Free Software Foundation, Inc. |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
2 This file is part of the GNU Emacs. |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
3 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
4 The GNU C Library is free software; you can redistribute it and/or |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
5 modify it under the terms of the GNU Library General Public License as |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
6 published by the Free Software Foundation; either version 2 of the |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
7 License, or (at your option) any later version. |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
8 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
9 The GNU C Library is distributed in the hope that it will be useful, |
19875
278944a16af3
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18782
diff
changeset
|
10 but WITHOUT ANY WARRANTY; without even the implied warranty of |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
12 Library General Public License for more details. |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
13 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
14 You should have received a copy of the GNU Library General Public |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
15 License along with the GNU C Library; see the file COPYING.LIB. If not, |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
16 write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
17 Boston, MA 02111-1307, USA. */ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
18 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
19 #ifdef HAVE_CONFIG_H |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
20 # include <config.h> |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
21 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
22 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
23 #ifdef _LIBC |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
24 # define HAVE_LIMITS_H 1 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
25 # define HAVE_MBLEN 1 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
26 # define HAVE_MBRLEN 1 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
27 # define HAVE_STRUCT_ERA_ENTRY 1 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
28 # define HAVE_TM_GMTOFF 1 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
29 # define HAVE_TM_ZONE 1 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
30 # define HAVE_TZNAME 1 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
31 # define HAVE_TZSET 1 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
32 # define MULTIBYTE_IS_FORMAT_SAFE 1 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
33 # define STDC_HEADERS 1 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
34 # include "../locale/localeinfo.h" |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
35 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
36 |
20010
cb0800f5aa96
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
19875
diff
changeset
|
37 #if defined emacs && !defined HAVE_BCOPY |
cb0800f5aa96
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
19875
diff
changeset
|
38 # define HAVE_MEMCPY 1 |
cb0800f5aa96
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
19875
diff
changeset
|
39 #endif |
cb0800f5aa96
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
19875
diff
changeset
|
40 |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
41 #include <ctype.h> |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
42 #include <sys/types.h> /* Some systems define `time_t' here. */ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
43 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
44 #ifdef TIME_WITH_SYS_TIME |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
45 # include <sys/time.h> |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
46 # include <time.h> |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
47 #else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
48 # ifdef HAVE_SYS_TIME_H |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
49 # include <sys/time.h> |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
50 # else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
51 # include <time.h> |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
52 # endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
53 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
54 #if HAVE_TZNAME |
31100
92f108b8b281
[USE_CRT_DLL]: Remove unnecessary extern, which
Andrew Innes <andrewi@gnu.org>
parents:
28057
diff
changeset
|
55 #ifndef USE_CRT_DLL |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
56 extern char *tzname[]; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
57 #endif |
31100
92f108b8b281
[USE_CRT_DLL]: Remove unnecessary extern, which
Andrew Innes <andrewi@gnu.org>
parents:
28057
diff
changeset
|
58 #endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
59 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
60 /* Do multibyte processing if multibytes are supported, unless |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
61 multibyte sequences are safe in formats. Multibyte sequences are |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
62 safe if they cannot contain byte sequences that look like format |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
63 conversion specifications. The GNU C Library uses UTF8 multibyte |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
64 encoding, which is safe for formats, but strftime.c can be used |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
65 with other C libraries that use unsafe encodings. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
66 #define DO_MULTIBYTE (HAVE_MBLEN && ! MULTIBYTE_IS_FORMAT_SAFE) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
67 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
68 #if DO_MULTIBYTE |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
69 # if HAVE_MBRLEN |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
70 # include <wchar.h> |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
71 # else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
72 /* Simulate mbrlen with mblen as best we can. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
73 # define mbstate_t int |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
74 # define mbrlen(s, n, ps) mblen (s, n) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
75 # define mbsinit(ps) (*(ps) == 0) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
76 # endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
77 static const mbstate_t mbstate_zero; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
78 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
79 |
34302
1139c325f625
Change some #if foo to #ifdef foo.
Dave Love <fx@gnu.org>
parents:
32687
diff
changeset
|
80 #ifdef HAVE_LIMITS_H |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
81 # include <limits.h> |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
82 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
83 |
34302
1139c325f625
Change some #if foo to #ifdef foo.
Dave Love <fx@gnu.org>
parents:
32687
diff
changeset
|
84 #ifdef STDC_HEADERS |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
85 # include <stddef.h> |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
86 # include <stdlib.h> |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
87 #else |
18781
70883b60c7a5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18488
diff
changeset
|
88 # ifndef HAVE_MEMCPY |
70883b60c7a5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18488
diff
changeset
|
89 # define memcpy(d, s, n) bcopy ((s), (d), (n)) |
70883b60c7a5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18488
diff
changeset
|
90 # endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
91 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
92 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
93 #ifdef COMPILE_WIDE |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
94 # include <endian.h> |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
95 # define CHAR_T wchar_t |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
96 # define UCHAR_T unsigned int |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
97 # define L_(Str) L##Str |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
98 # define NLW(Sym) _NL_W##Sym |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
99 |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
100 # define MEMCPY(d, s, n) __wmemcpy (d, s, n) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
101 # define STRLEN(s) __wcslen (s) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
102 |
20212
90f407354bdf
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20211
diff
changeset
|
103 #else |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
104 # define CHAR_T char |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
105 # define UCHAR_T unsigned char |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
106 # define L_(Str) Str |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
107 # define NLW(Sym) Sym |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
108 |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
109 # if !defined STDC_HEADERS && !defined HAVE_MEMCPY |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
110 # define MEMCPY(d, s, n) bcopy ((s), (d), (n)) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
111 # else |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
112 # define MEMCPY(d, s, n) memcpy ((d), (s), (n)) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
113 # endif |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
114 # define STRLEN(s) strlen (s) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
115 |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
116 # ifdef _LIBC |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
117 # define MEMPCPY(d, s, n) __mempcpy (d, s, n) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
118 # else |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
119 # ifndef HAVE_MEMPCPY |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
120 # define MEMPCPY(d, s, n) ((void *) ((char *) memcpy (d, s, n) + (n))) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
121 # endif |
20212
90f407354bdf
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20211
diff
changeset
|
122 # endif |
90f407354bdf
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20211
diff
changeset
|
123 #endif |
90f407354bdf
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20211
diff
changeset
|
124 |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
125 #ifndef __P |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
126 # if defined emacs && defined PROTOTYPES |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
127 # define __P(args) args |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
128 # elif defined __GNUC__ || (defined __STDC__ && __STDC__) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
129 # define __P(args) args |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
130 # else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
131 # define __P(args) () |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
132 # endif /* GCC. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
133 #endif /* Not __P. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
134 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
135 #ifndef PTR |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
136 # ifdef __STDC__ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
137 # define PTR void * |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
138 # else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
139 # define PTR char * |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
140 # endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
141 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
142 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
143 #ifndef CHAR_BIT |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
144 # define CHAR_BIT 8 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
145 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
146 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
147 #ifndef NULL |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
148 # define NULL 0 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
149 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
150 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
151 #define TYPE_SIGNED(t) ((t) -1 < 0) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
152 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
153 /* Bound on length of the string representing an integer value of type t. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
154 Subtract one for the sign bit if t is signed; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
155 302 / 1000 is log10 (2) rounded up; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
156 add one for integer division truncation; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
157 add one more for a minus sign if t is signed. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
158 #define INT_STRLEN_BOUND(t) \ |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
159 ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 + 1 + TYPE_SIGNED (t)) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
160 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
161 #define TM_YEAR_BASE 1900 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
162 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
163 #ifndef __isleap |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
164 /* Nonzero if YEAR is a leap year (every 4 years, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
165 except every 100th isn't, and every 400th is). */ |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
166 # define __isleap(year) \ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
167 ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
168 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
169 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
170 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
171 #ifdef _LIBC |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
172 # define my_strftime_gmtime_r __gmtime_r |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
173 # define my_strftime_localtime_r __localtime_r |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
174 # define tzname __tzname |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
175 # define tzset __tzset |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
176 #else |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
177 |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
178 /* If we're a strftime substitute in a GNU program, then prefer gmtime |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
179 to gmtime_r, since many gmtime_r implementations are buggy. |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
180 Similarly for localtime_r. */ |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
181 |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
182 # if ! HAVE_TM_GMTOFF |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
183 static struct tm *my_strftime_gmtime_r __P ((const time_t *, struct tm *)); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
184 static struct tm * |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
185 my_strftime_gmtime_r (t, tp) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
186 const time_t *t; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
187 struct tm *tp; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
188 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
189 struct tm *l = gmtime (t); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
190 if (! l) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
191 return 0; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
192 *tp = *l; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
193 return tp; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
194 } |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
195 # endif /* ! HAVE_TM_GMTOFF */ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
196 |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
197 static struct tm *my_strftime_localtime_r __P ((const time_t *, struct tm *)); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
198 static struct tm * |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
199 my_strftime_localtime_r (t, tp) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
200 const time_t *t; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
201 struct tm *tp; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
202 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
203 struct tm *l = localtime (t); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
204 if (! l) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
205 return 0; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
206 *tp = *l; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
207 return tp; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
208 } |
20253
a7d1d668f57f
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20252
diff
changeset
|
209 #endif /* ! defined _LIBC */ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
210 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
211 |
18781
70883b60c7a5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18488
diff
changeset
|
212 #if !defined memset && !defined HAVE_MEMSET && !defined _LIBC |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
213 /* Some systems lack the `memset' function and we don't want to |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
214 introduce additional dependencies. */ |
18487
47be751da08b
automatically generated from GPLed version
Richard M. Stallman <rms@gnu.org>
parents:
17965
diff
changeset
|
215 /* The SGI compiler reportedly barfs on the trailing null |
47be751da08b
automatically generated from GPLed version
Richard M. Stallman <rms@gnu.org>
parents:
17965
diff
changeset
|
216 if we use a string constant as the initializer. 28 June 1997, rms. */ |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
217 static const CHAR_T spaces[16] = /* " " */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
218 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
219 L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '), |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
220 L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' ') |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
221 }; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
222 static const CHAR_T zeroes[16] = /* "0000000000000000" */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
223 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
224 L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'), |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
225 L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0') |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
226 }; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
227 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
228 # define memset_space(P, Len) \ |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
229 do { \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
230 int _len = (Len); \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
231 \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
232 do \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
233 { \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
234 int _this = _len > 16 ? 16 : _len; \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
235 (P) = MEMPCPY ((P), spaces, _this * sizeof (CHAR_T)); \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
236 _len -= _this; \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
237 } \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
238 while (_len > 0); \ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
239 } while (0) |
17965
2ef01cc793bf
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
17502
diff
changeset
|
240 |
2ef01cc793bf
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
17502
diff
changeset
|
241 # define memset_zero(P, Len) \ |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
242 do { \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
243 int _len = (Len); \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
244 \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
245 do \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
246 { \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
247 int _this = _len > 16 ? 16 : _len; \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
248 (P) = MEMPCPY ((P), zeroes, _this * sizeof (CHAR_T)); \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
249 _len -= _this; \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
250 } \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
251 while (_len > 0); \ |
17965
2ef01cc793bf
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
17502
diff
changeset
|
252 } while (0) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
253 #else |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
254 # ifdef COMPILE_WIDE |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
255 # define memset_space(P, Len) (wmemset ((P), L' ', (Len)), (P) += (Len)) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
256 # define memset_zero(P, Len) (wmemset ((P), L'0', (Len)), (P) += (Len)) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
257 # else |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
258 # define memset_space(P, Len) (memset ((P), ' ', (Len)), (P) += (Len)) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
259 # define memset_zero(P, Len) (memset ((P), '0', (Len)), (P) += (Len)) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
260 # endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
261 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
262 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
263 #define add(n, f) \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
264 do \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
265 { \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
266 int _n = (n); \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
267 int _delta = width - _n; \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
268 int _incr = _n + (_delta > 0 ? _delta : 0); \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
269 if (i + _incr >= maxsize) \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
270 return 0; \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
271 if (p) \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
272 { \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
273 if (_delta > 0) \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
274 { \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
275 if (pad == L_('0')) \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
276 memset_zero (p, _delta); \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
277 else \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
278 memset_space (p, _delta); \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
279 } \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
280 f; \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
281 p += _n; \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
282 } \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
283 i += _incr; \ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
284 } while (0) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
285 |
18781
70883b60c7a5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18488
diff
changeset
|
286 #define cpy(n, s) \ |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
287 add ((n), \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
288 if (to_lowcase) \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
289 memcpy_lowcase (p, (s), _n); \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
290 else if (to_uppcase) \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
291 memcpy_uppcase (p, (s), _n); \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
292 else \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
293 MEMCPY ((PTR) p, (PTR) (s), _n)) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
294 |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
295 #ifdef COMPILE_WIDE |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
296 # define widen(os, ws, l) \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
297 { \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
298 mbstate_t __st; \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
299 const char *__s = os; \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
300 memset (&__st, '\0', sizeof (__st)); \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
301 l = __mbsrtowcs (NULL, &__s, 0, &__st); \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
302 ws = alloca ((l + 1) * sizeof (wchar_t)); \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
303 (void) __mbsrtowcs (ws, &__s, l, &__st); \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
304 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
305 #endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
306 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
307 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
308 #ifdef COMPILE_WIDE |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
309 # define TOUPPER(Ch) towupper (Ch) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
310 # define TOLOWER(Ch) towlower (Ch) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
311 #else |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
312 # ifdef _LIBC |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
313 # define TOUPPER(Ch) toupper (Ch) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
314 # define TOLOWER(Ch) tolower (Ch) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
315 # else |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
316 # define TOUPPER(Ch) (islower (Ch) ? toupper (Ch) : (Ch)) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
317 # define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch)) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
318 # endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
319 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
320 /* We don't use `isdigit' here since the locale dependent |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
321 interpretation is not what we want here. We only need to accept |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
322 the arabic digits in the ASCII range. One day there is perhaps a |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
323 more reliable way to accept other sets of digits. */ |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
324 #define ISDIGIT(Ch) ((unsigned int) (Ch) - L_('0') <= 9) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
325 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
326 static CHAR_T *memcpy_lowcase __P ((CHAR_T *dest, const CHAR_T *src, |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
327 size_t len)); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
328 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
329 static CHAR_T * |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
330 memcpy_lowcase (dest, src, len) |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
331 CHAR_T *dest; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
332 const CHAR_T *src; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
333 size_t len; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
334 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
335 while (len-- > 0) |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
336 dest[len] = TOLOWER ((UCHAR_T) src[len]); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
337 return dest; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
338 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
339 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
340 static CHAR_T *memcpy_uppcase __P ((CHAR_T *dest, const CHAR_T *src, |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
341 size_t len)); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
342 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
343 static CHAR_T * |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
344 memcpy_uppcase (dest, src, len) |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
345 CHAR_T *dest; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
346 const CHAR_T *src; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
347 size_t len; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
348 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
349 while (len-- > 0) |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
350 dest[len] = TOUPPER ((UCHAR_T) src[len]); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
351 return dest; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
352 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
353 |
18781
70883b60c7a5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18488
diff
changeset
|
354 |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
355 #if ! HAVE_TM_GMTOFF |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
356 /* Yield the difference between *A and *B, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
357 measured in seconds, ignoring leap seconds. */ |
18781
70883b60c7a5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18488
diff
changeset
|
358 # define tm_diff ftime_tm_diff |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
359 static int tm_diff __P ((const struct tm *, const struct tm *)); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
360 static int |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
361 tm_diff (a, b) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
362 const struct tm *a; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
363 const struct tm *b; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
364 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
365 /* Compute intervening leap days correctly even if year is negative. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
366 Take care to avoid int overflow in leap day calculations, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
367 but it's OK to assume that A and B are close to each other. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
368 int a4 = (a->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (a->tm_year & 3); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
369 int b4 = (b->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (b->tm_year & 3); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
370 int a100 = a4 / 25 - (a4 % 25 < 0); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
371 int b100 = b4 / 25 - (b4 % 25 < 0); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
372 int a400 = a100 >> 2; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
373 int b400 = b100 >> 2; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
374 int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
375 int years = a->tm_year - b->tm_year; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
376 int days = (365 * years + intervening_leap_days |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
377 + (a->tm_yday - b->tm_yday)); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
378 return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour)) |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
379 + (a->tm_min - b->tm_min)) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
380 + (a->tm_sec - b->tm_sec)); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
381 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
382 #endif /* ! HAVE_TM_GMTOFF */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
383 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
384 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
385 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
386 /* The number of days from the first day of the first ISO week of this |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
387 year to the year day YDAY with week day WDAY. ISO weeks start on |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
388 Monday; the first ISO week has the year's first Thursday. YDAY may |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
389 be as small as YDAY_MINIMUM. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
390 #define ISO_WEEK_START_WDAY 1 /* Monday */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
391 #define ISO_WEEK1_WDAY 4 /* Thursday */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
392 #define YDAY_MINIMUM (-366) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
393 static int iso_week_days __P ((int, int)); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
394 #ifdef __GNUC__ |
20010
cb0800f5aa96
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
19875
diff
changeset
|
395 __inline__ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
396 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
397 static int |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
398 iso_week_days (yday, wday) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
399 int yday; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
400 int wday; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
401 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
402 /* Add enough to the first operand of % to make it nonnegative. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
403 int big_enough_multiple_of_7 = (-YDAY_MINIMUM / 7 + 2) * 7; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
404 return (yday |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
405 - (yday - wday + ISO_WEEK1_WDAY + big_enough_multiple_of_7) % 7 |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
406 + ISO_WEEK1_WDAY - ISO_WEEK_START_WDAY); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
407 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
408 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
409 |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
410 #if !(defined _NL_CURRENT || HAVE_STRFTIME) |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
411 static CHAR_T const weekday_name[][10] = |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
412 { |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
413 L_("Sunday"), L_("Monday"), L_("Tuesday"), L_("Wednesday"), |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
414 L_("Thursday"), L_("Friday"), L_("Saturday") |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
415 }; |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
416 static CHAR_T const month_name[][10] = |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
417 { |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
418 L_("January"), L_("February"), L_("March"), L_("April"), L_("May"), |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
419 L_("June"), L_("July"), L_("August"), L_("September"), L_("October"), |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
420 L_("November"), L_("December") |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
421 }; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
422 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
423 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
424 |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
425 #ifdef emacs |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
426 # define my_strftime emacs_strftimeu |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
427 # define ut_argument , ut |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
428 # define ut_argument_spec int ut; |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
429 # define ut_argument_spec_iso , int ut |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
430 #else |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
431 # ifdef COMPILE_WIDE |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
432 # define my_strftime wcsftime |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
433 # else |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
434 # define my_strftime strftime |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
435 # endif |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
436 # define ut_argument |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
437 # define ut_argument_spec |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
438 # define ut_argument_spec_iso |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
439 /* We don't have this information in general. */ |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
440 # define ut 0 |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
441 #endif |
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
442 |
32687
52117f9867f2
[!WINDOWSNT]: Don't apply Solaris 2.5 work-around on
Andrew Innes <andrewi@gnu.org>
parents:
32629
diff
changeset
|
443 #if !defined _LIBC && !defined(WINDOWSNT) && HAVE_TZNAME && HAVE_TZSET |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
444 /* Solaris 2.5 tzset sometimes modifies the storage returned by localtime. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
445 Work around this bug by copying *tp before it might be munged. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
446 size_t _strftime_copytm __P ((char *, size_t, const char *, |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
447 const struct tm * ut_argument_spec_iso)); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
448 size_t |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
449 my_strftime (s, maxsize, format, tp ut_argument) |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
450 CHAR_T *s; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
451 size_t maxsize; |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
452 const CHAR_T *format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
453 const struct tm *tp; |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
454 ut_argument_spec |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
455 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
456 struct tm tmcopy; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
457 tmcopy = *tp; |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
458 return _strftime_copytm (s, maxsize, format, &tmcopy ut_argument); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
459 } |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
460 # undef my_strftime |
32687
52117f9867f2
[!WINDOWSNT]: Don't apply Solaris 2.5 work-around on
Andrew Innes <andrewi@gnu.org>
parents:
32629
diff
changeset
|
461 # define my_strftime _strftime_copytm |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
462 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
463 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
464 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
465 /* Write information from TP into S according to the format |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
466 string FORMAT, writing no more that MAXSIZE characters |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
467 (including the terminating '\0') and returning number of |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
468 characters written. If S is NULL, nothing will be written |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
469 anywhere, so to determine how many characters would be |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
470 written, use NULL for S and (size_t) UINT_MAX for MAXSIZE. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
471 size_t |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
472 my_strftime (s, maxsize, format, tp ut_argument) |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
473 CHAR_T *s; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
474 size_t maxsize; |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
475 const CHAR_T *format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
476 const struct tm *tp; |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
477 ut_argument_spec |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
478 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
479 int hour12 = tp->tm_hour; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
480 #ifdef _NL_CURRENT |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
481 /* We cannot make the following values variables since we must delay |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
482 the evaluation of these values until really needed since some |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
483 expressions might not be valid in every situation. The `struct tm' |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
484 might be generated by a strptime() call that initialized |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
485 only a few elements. Dereference the pointers only if the format |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
486 requires this. Then it is ok to fail if the pointers are invalid. */ |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
487 # define a_wkday \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
488 ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ABDAY_1) + tp->tm_wday)) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
489 # define f_wkday \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
490 ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(DAY_1) + tp->tm_wday)) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
491 # define a_month \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
492 ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ABMON_1) + tp->tm_mon)) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
493 # define f_month \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
494 ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(MON_1) + tp->tm_mon)) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
495 # define ampm \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
496 ((const CHAR_T *) _NL_CURRENT (LC_TIME, tp->tm_hour > 11 \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
497 ? NLW(PM_STR) : NLW(AM_STR))) |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
498 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
499 # define aw_len STRLEN (a_wkday) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
500 # define am_len STRLEN (a_month) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
501 # define ap_len STRLEN (ampm) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
502 #else |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
503 # if !HAVE_STRFTIME |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
504 # define f_wkday (weekday_name[tp->tm_wday]) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
505 # define f_month (month_name[tp->tm_mon]) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
506 # define a_wkday f_wkday |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
507 # define a_month f_month |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
508 # define ampm (L_("AMPM") + 2 * (tp->tm_hour > 11)) |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
509 |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
510 size_t aw_len = 3; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
511 size_t am_len = 3; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
512 size_t ap_len = 2; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
513 # endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
514 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
515 const char *zone; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
516 size_t i = 0; |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
517 CHAR_T *p = s; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
518 const CHAR_T *f; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
519 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
520 zone = NULL; |
18781
70883b60c7a5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18488
diff
changeset
|
521 #if HAVE_TM_ZONE |
70883b60c7a5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18488
diff
changeset
|
522 /* The POSIX test suite assumes that setting |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
523 the environment variable TZ to a new value before calling strftime() |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
524 will influence the result (the %Z format) even if the information in |
18781
70883b60c7a5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18488
diff
changeset
|
525 TP is computed with a totally different time zone. |
70883b60c7a5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18488
diff
changeset
|
526 This is bogus: though POSIX allows bad behavior like this, |
70883b60c7a5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18488
diff
changeset
|
527 POSIX does not require it. Do the right thing instead. */ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
528 zone = (const char *) tp->tm_zone; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
529 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
530 #if HAVE_TZNAME |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
531 if (ut) |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
532 { |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
533 if (! (zone && *zone)) |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
534 zone = "UTC"; |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
535 } |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
536 else |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
537 { |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
538 /* POSIX.1 8.1.1 requires that whenever strftime() is called, the |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
539 time zone names contained in the external variable `tzname' shall |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
540 be set as if the tzset() function had been called. */ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
541 # if HAVE_TZSET |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
542 tzset (); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
543 # endif |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
544 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
545 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
546 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
547 if (hour12 > 12) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
548 hour12 -= 12; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
549 else |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
550 if (hour12 == 0) |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
551 hour12 = 12; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
552 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
553 for (f = format; *f != '\0'; ++f) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
554 { |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
555 int pad = 0; /* Padding for number ('-', '_', or 0). */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
556 int modifier; /* Field modifier ('E', 'O', or 0). */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
557 int digits; /* Max digits for numeric format. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
558 int number_value; /* Numeric value to be printed. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
559 int negative_number; /* 1 if the number is negative. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
560 const CHAR_T *subfmt; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
561 CHAR_T *bufp; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
562 CHAR_T buf[1 + (sizeof (int) < sizeof (time_t) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
563 ? INT_STRLEN_BOUND (time_t) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
564 : INT_STRLEN_BOUND (int))]; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
565 int width = -1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
566 int to_lowcase = 0; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
567 int to_uppcase = 0; |
18781
70883b60c7a5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18488
diff
changeset
|
568 int change_case = 0; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
569 int format_char; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
570 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
571 #if DO_MULTIBYTE && !defined COMPILE_WIDE |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
572 switch (*f) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
573 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
574 case L_('%'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
575 break; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
576 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
577 case L_('\b'): case L_('\t'): case L_('\n'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
578 case L_('\v'): case L_('\f'): case L_('\r'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
579 case L_(' '): case L_('!'): case L_('"'): case L_('#'): case L_('&'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
580 case L_('\''): case L_('('): case L_(')'): case L_('*'): case L_('+'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
581 case L_(','): case L_('-'): case L_('.'): case L_('/'): case L_('0'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
582 case L_('1'): case L_('2'): case L_('3'): case L_('4'): case L_('5'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
583 case L_('6'): case L_('7'): case L_('8'): case L_('9'): case L_(':'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
584 case L_(';'): case L_('<'): case L_('='): case L_('>'): case L_('?'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
585 case L_('A'): case L_('B'): case L_('C'): case L_('D'): case L_('E'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
586 case L_('F'): case L_('G'): case L_('H'): case L_('I'): case L_('J'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
587 case L_('K'): case L_('L'): case L_('M'): case L_('N'): case L_('O'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
588 case L_('P'): case L_('Q'): case L_('R'): case L_('S'): case L_('T'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
589 case L_('U'): case L_('V'): case L_('W'): case L_('X'): case L_('Y'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
590 case L_('Z'): case L_('['): case L_('\\'): case L_(']'): case L_('^'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
591 case L_('_'): case L_('a'): case L_('b'): case L_('c'): case L_('d'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
592 case L_('e'): case L_('f'): case L_('g'): case L_('h'): case L_('i'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
593 case L_('j'): case L_('k'): case L_('l'): case L_('m'): case L_('n'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
594 case L_('o'): case L_('p'): case L_('q'): case L_('r'): case L_('s'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
595 case L_('t'): case L_('u'): case L_('v'): case L_('w'): case L_('x'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
596 case L_('y'): case L_('z'): case L_('{'): case L_('|'): case L_('}'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
597 case L_('~'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
598 /* The C Standard requires these 97 characters (plus '%', `\a') to |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
599 be in the basic execution character set. None of these |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
600 characters can start a multibyte sequence, so they need |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
601 not be analyzed further. Some old compilers object to |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
602 `\a', so don't bother optimizing for it. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
603 add (1, *p = *f); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
604 continue; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
605 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
606 default: |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
607 /* Copy this multibyte sequence until we reach its end, find |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
608 an error, or come back to the initial shift state. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
609 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
610 mbstate_t mbstate = mbstate_zero; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
611 size_t len = 0; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
612 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
613 do |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
614 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
615 size_t bytes = mbrlen (f + len, (size_t) -1, &mbstate); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
616 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
617 if (bytes == 0) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
618 break; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
619 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
620 if (bytes == (size_t) -2) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
621 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
622 len += strlen (f + len); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
623 break; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
624 } |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
625 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
626 if (bytes == (size_t) -1) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
627 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
628 len++; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
629 break; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
630 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
631 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
632 len += bytes; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
633 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
634 while (! mbsinit (&mbstate)); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
635 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
636 cpy (len, f); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
637 f += len - 1; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
638 continue; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
639 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
640 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
641 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
642 #else /* ! DO_MULTIBYTE */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
643 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
644 /* Either multibyte encodings are not supported, they are |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
645 safe for formats, so any non-'%' byte can be copied through, |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
646 or this is the wide character version. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
647 if (*f != L_('%')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
648 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
649 add (1, *p = *f); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
650 continue; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
651 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
652 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
653 #endif /* ! DO_MULTIBYTE */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
654 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
655 /* Check for flags that can modify a format. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
656 while (1) |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
657 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
658 switch (*++f) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
659 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
660 /* This influences the number formats. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
661 case L_('_'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
662 case L_('-'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
663 case L_('0'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
664 pad = *f; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
665 continue; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
666 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
667 /* This changes textual output. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
668 case L_('^'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
669 to_uppcase = 1; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
670 continue; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
671 case L_('#'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
672 change_case = 1; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
673 continue; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
674 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
675 default: |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
676 break; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
677 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
678 break; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
679 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
680 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
681 /* As a GNU extension we allow to specify the field width. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
682 if (ISDIGIT (*f)) |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
683 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
684 width = 0; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
685 do |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
686 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
687 width *= 10; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
688 width += *f - L_('0'); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
689 ++f; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
690 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
691 while (ISDIGIT (*f)); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
692 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
693 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
694 /* Check for modifiers. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
695 switch (*f) |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
696 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
697 case L_('E'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
698 case L_('O'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
699 modifier = *f++; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
700 break; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
701 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
702 default: |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
703 modifier = 0; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
704 break; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
705 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
706 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
707 /* Now do the specified format. */ |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
708 format_char = *f; |
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
709 switch (format_char) |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
710 { |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
711 #define DO_NUMBER(d, v) \ |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
712 digits = width == -1 ? d : width; \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
713 number_value = v; goto do_number |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
714 #define DO_NUMBER_SPACEPAD(d, v) \ |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
715 digits = width == -1 ? d : width; \ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
716 number_value = v; goto do_number_spacepad |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
717 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
718 case L_('%'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
719 if (modifier != 0) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
720 goto bad_format; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
721 add (1, *p = *f); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
722 break; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
723 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
724 case L_('a'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
725 if (modifier != 0) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
726 goto bad_format; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
727 if (change_case) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
728 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
729 to_uppcase = 1; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
730 to_lowcase = 0; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
731 } |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
732 #if defined _NL_CURRENT || !HAVE_STRFTIME |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
733 cpy (aw_len, a_wkday); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
734 break; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
735 #else |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
736 goto underlying_strftime; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
737 #endif |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
738 |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
739 case 'A': |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
740 if (modifier != 0) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
741 goto bad_format; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
742 if (change_case) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
743 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
744 to_uppcase = 1; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
745 to_lowcase = 0; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
746 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
747 #if defined _NL_CURRENT || !HAVE_STRFTIME |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
748 cpy (STRLEN (f_wkday), f_wkday); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
749 break; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
750 #else |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
751 goto underlying_strftime; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
752 #endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
753 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
754 case L_('b'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
755 case L_('h'): /* POSIX.2 extension. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
756 if (change_case) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
757 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
758 to_uppcase = 1; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
759 to_lowcase = 0; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
760 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
761 if (modifier != 0) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
762 goto bad_format; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
763 #if defined _NL_CURRENT || !HAVE_STRFTIME |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
764 cpy (am_len, a_month); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
765 break; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
766 #else |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
767 goto underlying_strftime; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
768 #endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
769 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
770 case L_('B'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
771 if (modifier != 0) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
772 goto bad_format; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
773 if (change_case) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
774 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
775 to_uppcase = 1; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
776 to_lowcase = 0; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
777 } |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
778 #if defined _NL_CURRENT || !HAVE_STRFTIME |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
779 cpy (STRLEN (f_month), f_month); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
780 break; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
781 #else |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
782 goto underlying_strftime; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
783 #endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
784 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
785 case L_('c'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
786 if (modifier == L_('O')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
787 goto bad_format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
788 #ifdef _NL_CURRENT |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
789 if (! (modifier == 'E' |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
790 && (*(subfmt = (CHAR_T *) _NL_CURRENT (LC_TIME, |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
791 NLW(ERA_D_T_FMT))) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
792 != '\0'))) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
793 subfmt = (CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_T_FMT)); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
794 #else |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
795 # if HAVE_STRFTIME |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
796 goto underlying_strftime; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
797 # else |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
798 subfmt = L_("%a %b %e %H:%M:%S %Y"); |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
799 # endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
800 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
801 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
802 subformat: |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
803 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
804 CHAR_T *old_start = p; |
32687
52117f9867f2
[!WINDOWSNT]: Don't apply Solaris 2.5 work-around on
Andrew Innes <andrewi@gnu.org>
parents:
32629
diff
changeset
|
805 size_t len = my_strftime (NULL, (size_t) -1, subfmt, tp, 0); |
52117f9867f2
[!WINDOWSNT]: Don't apply Solaris 2.5 work-around on
Andrew Innes <andrewi@gnu.org>
parents:
32629
diff
changeset
|
806 add (len, my_strftime (p, maxsize - i, subfmt, tp, 0)); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
807 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
808 if (to_uppcase) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
809 while (old_start < p) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
810 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
811 *old_start = TOUPPER ((UCHAR_T) *old_start); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
812 ++old_start; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
813 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
814 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
815 break; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
816 |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
817 #if HAVE_STRFTIME && ! (defined _NL_CURRENT && HAVE_STRUCT_ERA_ENTRY) |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
818 underlying_strftime: |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
819 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
820 /* The relevant information is available only via the |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
821 underlying strftime implementation, so use that. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
822 char ufmt[4]; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
823 char *u = ufmt; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
824 char ubuf[1024]; /* enough for any single format in practice */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
825 size_t len; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
826 /* Make sure we're calling the actual underlying strftime. |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
827 In some cases, config.h contains something like |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
828 "#define strftime rpl_strftime". */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
829 # ifdef strftime |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
830 # undef strftime |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
831 size_t strftime (); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
832 # endif |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
833 |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
834 *u++ = '%'; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
835 if (modifier != 0) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
836 *u++ = modifier; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
837 *u++ = format_char; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
838 *u = '\0'; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
839 len = strftime (ubuf, sizeof ubuf, ufmt, tp); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
840 if (len == 0 && ubuf[0] != '\0') |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
841 return 0; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
842 cpy (len, ubuf); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
843 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
844 break; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
845 #endif |
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
846 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
847 case L_('C'): /* POSIX.2 extension. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
848 if (modifier == L_('O')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
849 goto bad_format; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
850 if (modifier == L_('E')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
851 { |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
852 #if HAVE_STRUCT_ERA_ENTRY |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
853 struct era_entry *era = _nl_get_era_entry (tp); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
854 if (era) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
855 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
856 # ifdef COMPILE_WIDE |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
857 size_t len = __wcslen (era->era_wname); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
858 cpy (len, era->era_wname); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
859 # else |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
860 size_t len = strlen (era->era_name); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
861 cpy (len, era->era_name); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
862 # endif |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
863 break; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
864 } |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
865 #else |
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
866 # if HAVE_STRFTIME |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
867 goto underlying_strftime; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
868 # endif |
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
869 #endif |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
870 } |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
871 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
872 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
873 int year = tp->tm_year + TM_YEAR_BASE; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
874 DO_NUMBER (1, year / 100 - (year % 100 < 0)); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
875 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
876 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
877 case L_('x'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
878 if (modifier == L_('O')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
879 goto bad_format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
880 #ifdef _NL_CURRENT |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
881 if (! (modifier == L_('E') |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
882 && (*(subfmt = (CHAR_T *)_NL_CURRENT (LC_TIME, |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
883 NLW(ERA_D_FMT))) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
884 != L_('\0')))) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
885 subfmt = (CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_FMT)); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
886 goto subformat; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
887 #else |
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
888 # if HAVE_STRFTIME |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
889 goto underlying_strftime; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
890 # else |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
891 /* Fall through. */ |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
892 # endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
893 #endif |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
894 case L_('D'): /* POSIX.2 extension. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
895 if (modifier != 0) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
896 goto bad_format; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
897 subfmt = L_("%m/%d/%y"); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
898 goto subformat; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
899 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
900 case L_('d'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
901 if (modifier == L_('E')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
902 goto bad_format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
903 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
904 DO_NUMBER (2, tp->tm_mday); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
905 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
906 case L_('e'): /* POSIX.2 extension. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
907 if (modifier == L_('E')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
908 goto bad_format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
909 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
910 DO_NUMBER_SPACEPAD (2, tp->tm_mday); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
911 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
912 /* All numeric formats set DIGITS and NUMBER_VALUE and then |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
913 jump to one of these two labels. */ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
914 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
915 do_number_spacepad: |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
916 /* Force `_' flag unless overwritten by `0' flag. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
917 if (pad != L_('0')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
918 pad = L_('_'); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
919 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
920 do_number: |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
921 /* Format the number according to the MODIFIER flag. */ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
922 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
923 if (modifier == L_('O') && 0 <= number_value) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
924 { |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
925 #ifdef _NL_CURRENT |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
926 /* Get the locale specific alternate representation of |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
927 the number NUMBER_VALUE. If none exist NULL is returned. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
928 # ifdef COMPILE_WIDE |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
929 const wchar_t *cp = _nl_get_walt_digit (number_value); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
930 # else |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
931 const char *cp = _nl_get_alt_digit (number_value); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
932 # endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
933 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
934 if (cp != NULL) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
935 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
936 size_t digitlen = STRLEN (cp); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
937 if (digitlen != 0) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
938 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
939 cpy (digitlen, cp); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
940 break; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
941 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
942 } |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
943 #else |
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
944 # if HAVE_STRFTIME |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
945 goto underlying_strftime; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
946 # endif |
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
947 #endif |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
948 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
949 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
950 unsigned int u = number_value; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
951 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
952 bufp = buf + sizeof (buf) / sizeof (buf[0]); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
953 negative_number = number_value < 0; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
954 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
955 if (negative_number) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
956 u = -u; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
957 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
958 do |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
959 *--bufp = u % 10 + L_('0'); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
960 while ((u /= 10) != 0); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
961 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
962 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
963 do_number_sign_and_padding: |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
964 if (negative_number) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
965 *--bufp = L_('-'); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
966 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
967 if (pad != L_('-')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
968 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
969 int padding = digits - (buf + (sizeof (buf) / sizeof (buf[0])) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
970 - bufp); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
971 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
972 if (pad == L_('_')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
973 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
974 while (0 < padding--) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
975 *--bufp = L_(' '); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
976 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
977 else |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
978 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
979 bufp += negative_number; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
980 while (0 < padding--) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
981 *--bufp = L_('0'); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
982 if (negative_number) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
983 *--bufp = L_('-'); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
984 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
985 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
986 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
987 cpy (buf + sizeof (buf) / sizeof (buf[0]) - bufp, bufp); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
988 break; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
989 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
990 case L_('F'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
991 if (modifier != 0) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
992 goto bad_format; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
993 subfmt = L_("%Y-%m-%d"); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
994 goto subformat; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
995 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
996 case L_('H'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
997 if (modifier == L_('E')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
998 goto bad_format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
999 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1000 DO_NUMBER (2, tp->tm_hour); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1001 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1002 case L_('I'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1003 if (modifier == L_('E')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1004 goto bad_format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1005 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1006 DO_NUMBER (2, hour12); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1007 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1008 case L_('k'): /* GNU extension. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1009 if (modifier == L_('E')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1010 goto bad_format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1011 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1012 DO_NUMBER_SPACEPAD (2, tp->tm_hour); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1013 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1014 case L_('l'): /* GNU extension. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1015 if (modifier == L_('E')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1016 goto bad_format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1017 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1018 DO_NUMBER_SPACEPAD (2, hour12); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1019 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1020 case L_('j'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1021 if (modifier == L_('E')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1022 goto bad_format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1023 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1024 DO_NUMBER (3, 1 + tp->tm_yday); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1025 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1026 case L_('M'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1027 if (modifier == L_('E')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1028 goto bad_format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1029 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1030 DO_NUMBER (2, tp->tm_min); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1031 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1032 case L_('m'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1033 if (modifier == L_('E')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1034 goto bad_format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1035 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1036 DO_NUMBER (2, tp->tm_mon + 1); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1037 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1038 case L_('n'): /* POSIX.2 extension. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1039 add (1, *p = L_('\n')); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1040 break; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1041 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1042 case L_('P'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1043 to_lowcase = 1; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1044 #if !defined _NL_CURRENT && HAVE_STRFTIME |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1045 format_char = L_('p'); |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1046 #endif |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1047 /* FALLTHROUGH */ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1048 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1049 case L_('p'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1050 if (change_case) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1051 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1052 to_uppcase = 0; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1053 to_lowcase = 1; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1054 } |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1055 #if defined _NL_CURRENT || !HAVE_STRFTIME |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1056 cpy (ap_len, ampm); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1057 break; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1058 #else |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1059 goto underlying_strftime; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1060 #endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1061 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1062 case L_('R'): /* GNU extension. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1063 subfmt = L_("%H:%M"); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1064 goto subformat; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1065 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1066 case L_('r'): /* POSIX.2 extension. */ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1067 #ifdef _NL_CURRENT |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1068 if (*(subfmt = (CHAR_T *) _NL_CURRENT (LC_TIME, |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1069 NLW(T_FMT_AMPM))) == L_('\0')) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1070 #endif |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1071 subfmt = L_("%I:%M:%S %p"); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1072 goto subformat; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1073 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1074 case L_('S'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1075 if (modifier == L_('E')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1076 goto bad_format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1077 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1078 DO_NUMBER (2, tp->tm_sec); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1079 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1080 case L_('s'): /* GNU extension. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1081 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1082 struct tm ltm; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1083 time_t t; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1084 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1085 ltm = *tp; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1086 t = mktime (<m); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1087 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1088 /* Generate string value for T using time_t arithmetic; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1089 this works even if sizeof (long) < sizeof (time_t). */ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1090 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1091 bufp = buf + sizeof (buf) / sizeof (buf[0]); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1092 negative_number = t < 0; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1093 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1094 do |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1095 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1096 int d = t % 10; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1097 t /= 10; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1098 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1099 if (negative_number) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1100 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1101 d = -d; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1102 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1103 /* Adjust if division truncates to minus infinity. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1104 if (0 < -1 % 10 && d < 0) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1105 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1106 t++; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1107 d += 10; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1108 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1109 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1110 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1111 *--bufp = d + L_('0'); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1112 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1113 while (t != 0); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1114 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1115 digits = 1; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1116 goto do_number_sign_and_padding; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1117 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1118 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1119 case L_('X'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1120 if (modifier == L_('O')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1121 goto bad_format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1122 #ifdef _NL_CURRENT |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1123 if (! (modifier == L_('E') |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1124 && (*(subfmt = (CHAR_T *) _NL_CURRENT (LC_TIME, |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1125 NLW(ERA_T_FMT))) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1126 != L_('\0')))) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1127 subfmt = (CHAR_T *) _NL_CURRENT (LC_TIME, NLW(T_FMT)); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1128 goto subformat; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1129 #else |
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1130 # if HAVE_STRFTIME |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1131 goto underlying_strftime; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1132 # else |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1133 /* Fall through. */ |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1134 # endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1135 #endif |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1136 case L_('T'): /* POSIX.2 extension. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1137 subfmt = L_("%H:%M:%S"); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1138 goto subformat; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1139 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1140 case L_('t'): /* POSIX.2 extension. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1141 add (1, *p = L_('\t')); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1142 break; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1143 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1144 case L_('u'): /* POSIX.2 extension. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1145 DO_NUMBER (1, (tp->tm_wday - 1 + 7) % 7 + 1); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1146 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1147 case L_('U'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1148 if (modifier == L_('E')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1149 goto bad_format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1150 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1151 DO_NUMBER (2, (tp->tm_yday - tp->tm_wday + 7) / 7); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1152 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1153 case L_('V'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1154 case L_('g'): /* GNU extension. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1155 case L_('G'): /* GNU extension. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1156 if (modifier == L_('E')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1157 goto bad_format; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1158 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1159 int year = tp->tm_year + TM_YEAR_BASE; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1160 int days = iso_week_days (tp->tm_yday, tp->tm_wday); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1161 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1162 if (days < 0) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1163 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1164 /* This ISO week belongs to the previous year. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1165 year--; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1166 days = iso_week_days (tp->tm_yday + (365 + __isleap (year)), |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1167 tp->tm_wday); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1168 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1169 else |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1170 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1171 int d = iso_week_days (tp->tm_yday - (365 + __isleap (year)), |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1172 tp->tm_wday); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1173 if (0 <= d) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1174 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1175 /* This ISO week belongs to the next year. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1176 year++; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1177 days = d; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1178 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1179 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1180 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1181 switch (*f) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1182 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1183 case L_('g'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1184 DO_NUMBER (2, (year % 100 + 100) % 100); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1185 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1186 case L_('G'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1187 DO_NUMBER (1, year); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1188 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1189 default: |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1190 DO_NUMBER (2, days / 7 + 1); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1191 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1192 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1193 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1194 case L_('W'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1195 if (modifier == L_('E')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1196 goto bad_format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1197 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1198 DO_NUMBER (2, (tp->tm_yday - (tp->tm_wday - 1 + 7) % 7 + 7) / 7); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1199 |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1200 case L_('w'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1201 if (modifier == L_('E')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1202 goto bad_format; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1203 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1204 DO_NUMBER (1, tp->tm_wday); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1205 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1206 case L_('Y'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1207 if (modifier == 'E') |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1208 { |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1209 #if HAVE_STRUCT_ERA_ENTRY |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1210 struct era_entry *era = _nl_get_era_entry (tp); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1211 if (era) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1212 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1213 # ifdef COMPILE_WIDE |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1214 subfmt = era->era_wformat; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1215 # else |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1216 subfmt = era->era_format; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1217 # endif |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1218 goto subformat; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1219 } |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1220 #else |
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1221 # if HAVE_STRFTIME |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1222 goto underlying_strftime; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1223 # endif |
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1224 #endif |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1225 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1226 if (modifier == L_('O')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1227 goto bad_format; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1228 else |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1229 DO_NUMBER (1, tp->tm_year + TM_YEAR_BASE); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1230 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1231 case L_('y'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1232 if (modifier == L_('E')) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1233 { |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1234 #if HAVE_STRUCT_ERA_ENTRY |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1235 struct era_entry *era = _nl_get_era_entry (tp); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1236 if (era) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1237 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1238 int delta = tp->tm_year - era->start_date[0]; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1239 DO_NUMBER (1, (era->offset |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1240 + delta * era->absolute_direction)); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1241 } |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1242 #else |
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1243 # if HAVE_STRFTIME |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1244 goto underlying_strftime; |
20211
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1245 # endif |
f722b33c682d
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20010
diff
changeset
|
1246 #endif |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1247 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1248 DO_NUMBER (2, (tp->tm_year % 100 + 100) % 100); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1249 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1250 case L_('Z'): |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1251 if (change_case) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1252 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1253 to_uppcase = 0; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1254 to_lowcase = 1; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1255 } |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
1256 |
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
1257 #if HAVE_TZNAME |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1258 /* The tzset() call might have changed the value. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1259 if (!(zone && *zone) && tp->tm_isdst >= 0) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1260 zone = tzname[tp->tm_isdst]; |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
1261 #endif |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1262 if (! zone) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1263 zone = ""; /* POSIX.2 requires the empty string here. */ |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
1264 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1265 #ifdef COMPILE_WIDE |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1266 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1267 /* The zone string is always given in multibyte form. We have |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1268 to transform it first. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1269 wchar_t *wczone; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1270 size_t len; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1271 widen (zone, wczone, len); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1272 cpy (len, wczone); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1273 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1274 #else |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1275 cpy (strlen (zone), zone); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1276 #endif |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1277 break; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1278 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1279 case L_('z'): /* GNU extension. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1280 if (tp->tm_isdst < 0) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1281 break; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1282 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1283 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1284 int diff; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1285 #if HAVE_TM_GMTOFF |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1286 diff = tp->tm_gmtoff; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1287 #else |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1288 if (ut) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1289 diff = 0; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1290 else |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1291 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1292 struct tm gtm; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1293 struct tm ltm; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1294 time_t lt; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1295 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1296 ltm = *tp; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1297 lt = mktime (<m); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1298 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1299 if (lt == (time_t) -1) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1300 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1301 /* mktime returns -1 for errors, but -1 is also a |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1302 valid time_t value. Check whether an error really |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1303 occurred. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1304 struct tm tm; |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
1305 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1306 if (! my_strftime_localtime_r (<, &tm) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1307 || ((ltm.tm_sec ^ tm.tm_sec) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1308 | (ltm.tm_min ^ tm.tm_min) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1309 | (ltm.tm_hour ^ tm.tm_hour) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1310 | (ltm.tm_mday ^ tm.tm_mday) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1311 | (ltm.tm_mon ^ tm.tm_mon) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1312 | (ltm.tm_year ^ tm.tm_year))) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1313 break; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1314 } |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
1315 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1316 if (! my_strftime_gmtime_r (<, >m)) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1317 break; |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
1318 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1319 diff = tm_diff (<m, >m); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1320 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1321 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1322 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1323 if (diff < 0) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1324 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1325 add (1, *p = L_('-')); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1326 diff = -diff; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1327 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1328 else |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1329 add (1, *p = L_('+')); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1330 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1331 diff /= 60; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1332 DO_NUMBER (4, (diff / 60) * 100 + diff % 60); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1333 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1334 |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1335 case L_('\0'): /* GNU extension: % at end of format. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1336 --f; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1337 /* Fall through. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1338 default: |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1339 /* Unknown format; output the format, including the '%', |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1340 since this is most likely the right thing to do if a |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1341 multibyte string has been misparsed. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1342 bad_format: |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1343 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1344 int flen; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1345 for (flen = 1; f[1 - flen] != L_('%'); flen++) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1346 continue; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1347 cpy (flen, &f[1 - flen]); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1348 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1349 break; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1350 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1351 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1352 |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
23323
diff
changeset
|
1353 if (p && maxsize != 0) |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1354 *p = L_('\0'); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1355 return i; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1356 } |
32629
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1357 |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1358 |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1359 #ifdef emacs |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1360 /* For Emacs we have a separate interface which corresponds to the normal |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1361 strftime function and does not have the extra information whether the |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1362 TP arguments comes from a `gmtime' call or not. */ |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1363 size_t |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1364 emacs_strftime (s, maxsize, format, tp) |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1365 char *s; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1366 size_t maxsize; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1367 const char *format; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1368 const struct tm *tp; |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1369 { |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1370 return my_strftime (s, maxsize, format, tp, 0); |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1371 } |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1372 #endif |
2683108cd13f
Sync with glibc, file version 1.78.
Gerd Moellmann <gerd@gnu.org>
parents:
31100
diff
changeset
|
1373 |