summaryrefslogtreecommitdiffstats
path: root/gl/nl_langinfo.c
diff options
context:
space:
mode:
Diffstat (limited to 'gl/nl_langinfo.c')
-rw-r--r--gl/nl_langinfo.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/gl/nl_langinfo.c b/gl/nl_langinfo.c
index 131166fd..64ff93b0 100644
--- a/gl/nl_langinfo.c
+++ b/gl/nl_langinfo.c
@@ -1,6 +1,6 @@
1/* nl_langinfo() replacement: query locale dependent information. 1/* nl_langinfo() replacement: query locale dependent information.
2 2
3 Copyright (C) 2007-2023 Free Software Foundation, Inc. 3 Copyright (C) 2007-2024 Free Software Foundation, Inc.
4 4
5 This file is free software: you can redistribute it and/or modify 5 This file is free software: you can redistribute it and/or modify
6 it under the terms of the GNU Lesser General Public License as 6 it under the terms of the GNU Lesser General Public License as
@@ -30,7 +30,12 @@
30#endif 30#endif
31 31
32#if REPLACE_NL_LANGINFO && !NL_LANGINFO_MTSAFE 32#if REPLACE_NL_LANGINFO && !NL_LANGINFO_MTSAFE
33# if defined _WIN32 && !defined __CYGWIN__ 33
34# if AVOID_ANY_THREADS
35
36/* The option '--disable-threads' explicitly requests no locking. */
37
38# elif defined _WIN32 && !defined __CYGWIN__
34 39
35# define WIN32_LEAN_AND_MEAN /* avoid including junk */ 40# define WIN32_LEAN_AND_MEAN /* avoid including junk */
36# include <windows.h> 41# include <windows.h>
@@ -51,6 +56,7 @@
51# include <threads.h> 56# include <threads.h>
52 57
53# endif 58# endif
59
54#endif 60#endif
55 61
56/* nl_langinfo() must be multithread-safe. To achieve this without using 62/* nl_langinfo() must be multithread-safe. To achieve this without using
@@ -70,6 +76,8 @@
70static char * 76static char *
71ctype_codeset (void) 77ctype_codeset (void)
72{ 78{
79 /* This function is only used on platforms which don't have uselocale().
80 Therefore we don't need to look at the per-thread locale first, here. */
73 static char result[2 + 10 + 1]; 81 static char result[2 + 10 + 1];
74 char buf[2 + 10 + 1]; 82 char buf[2 + 10 + 1];
75 char locale[SETLOCALE_NULL_MAX]; 83 char locale[SETLOCALE_NULL_MAX];
@@ -184,7 +192,12 @@ nl_langinfo_unlocked (nl_item item)
184/* Prohibit renaming this symbol. */ 192/* Prohibit renaming this symbol. */
185# undef gl_get_nl_langinfo_lock 193# undef gl_get_nl_langinfo_lock
186 194
187# if defined _WIN32 && !defined __CYGWIN__ 195# if AVOID_ANY_THREADS
196
197/* The option '--disable-threads' explicitly requests no locking. */
198# define nl_langinfo_with_lock nl_langinfo_unlocked
199
200# elif defined _WIN32 && !defined __CYGWIN__
188 201
189extern __declspec(dllimport) CRITICAL_SECTION *gl_get_nl_langinfo_lock (void); 202extern __declspec(dllimport) CRITICAL_SECTION *gl_get_nl_langinfo_lock (void);
190 203
@@ -449,7 +462,7 @@ nl_langinfo (nl_item item)
449 { 462 {
450 static char const months[][sizeof "September"] = { 463 static char const months[][sizeof "September"] = {
451 "January", "February", "March", "April", "May", "June", "July", 464 "January", "February", "March", "April", "May", "June", "July",
452 "September", "October", "November", "December" 465 "August", "September", "October", "November", "December"
453 }; 466 };
454 case MON_1: 467 case MON_1:
455 case MON_2: 468 case MON_2:
@@ -513,7 +526,7 @@ nl_langinfo (nl_item item)
513 static char result[12][30]; 526 static char result[12][30];
514 static char const abmonths[][sizeof "Jan"] = { 527 static char const abmonths[][sizeof "Jan"] = {
515 "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", 528 "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
516 "Sep", "Oct", "Nov", "Dec" 529 "Aug", "Sep", "Oct", "Nov", "Dec"
517 }; 530 };
518 tmm.tm_mon = item - ABMON_1; 531 tmm.tm_mon = item - ABMON_1;
519 if (!strftime (buf, sizeof result[0], "%b", &tmm)) 532 if (!strftime (buf, sizeof result[0], "%b", &tmm))