diff options
Diffstat (limited to 'gl/nl_langinfo.c')
| -rw-r--r-- | gl/nl_langinfo.c | 23 |
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 @@ | |||
| 70 | static char * | 76 | static char * |
| 71 | ctype_codeset (void) | 77 | ctype_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 | ||
| 189 | extern __declspec(dllimport) CRITICAL_SECTION *gl_get_nl_langinfo_lock (void); | 202 | extern __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)) |
