annotate src/strftime.c @ 99492:ee792794d888

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