| https://bugs.gentoo.org/650332 |
| Do not set locale in the library. |
| Patch from upstream. |
| |
| --- a/fc-cache/fc-cache.c |
| +++ b/fc-cache/fc-cache.c |
| @@ -41,6 +41,7 @@ |
| #include <fcntl.h> |
| #include <dirent.h> |
| #include <string.h> |
| +#include <locale.h> |
| |
| #if defined (_WIN32) |
| #define STRICT |
| @@ -302,6 +303,7 @@ |
| #if HAVE_GETOPT_LONG || HAVE_GETOPT |
| int c; |
| |
| + setlocale (LC_ALL, ""); |
| #if HAVE_GETOPT_LONG |
| while ((c = getopt_long (argc, argv, "Efrsy:Vvh", longopts, NULL)) != -1) |
| #else |
| --- a/fc-cat/fc-cat.c |
| +++ b/fc-cat/fc-cat.c |
| @@ -40,6 +40,7 @@ |
| #include <sys/types.h> |
| #include <sys/stat.h> |
| #include <errno.h> |
| +#include <locale.h> |
| |
| #ifdef ENABLE_NLS |
| #include <libintl.h> |
| @@ -271,6 +272,7 @@ |
| #if HAVE_GETOPT_LONG || HAVE_GETOPT |
| int c; |
| |
| + setlocale (LC_ALL, ""); |
| #if HAVE_GETOPT_LONG |
| while ((c = getopt_long (argc, argv, "Vvrh", longopts, NULL)) != -1) |
| #else |
| --- a/fc-conflist/fc-conflist.c |
| +++ b/fc-conflist/fc-conflist.c |
| @@ -38,6 +38,7 @@ |
| #include <unistd.h> |
| #include <stdlib.h> |
| #include <string.h> |
| +#include <locale.h> |
| |
| #ifdef ENABLE_NLS |
| #include <libintl.h> |
| @@ -102,6 +103,7 @@ |
| #if HAVE_GETOPT_LONG || HAVE_GETOPT |
| int c; |
| |
| + setlocale (LC_ALL, ""); |
| #if HAVE_GETOPT_LONG |
| while ((c = getopt_long (argc, argv, "Vh", longopts, NULL)) != -1) |
| #else |
| --- a/fc-list/fc-list.c |
| +++ b/fc-list/fc-list.c |
| @@ -27,6 +27,7 @@ |
| #include <unistd.h> |
| #include <stdlib.h> |
| #include <string.h> |
| +#include <locale.h> |
| #ifdef HAVE_CONFIG_H |
| #include <config.h> |
| #else |
| @@ -117,6 +118,7 @@ |
| #if HAVE_GETOPT_LONG || HAVE_GETOPT |
| int c; |
| |
| + setlocale (LC_ALL, ""); |
| #if HAVE_GETOPT_LONG |
| while ((c = getopt_long (argc, argv, "vbf:qVh", longopts, NULL)) != -1) |
| #else |
| --- a/fc-match/fc-match.c |
| +++ b/fc-match/fc-match.c |
| @@ -36,6 +36,7 @@ |
| #include <unistd.h> |
| #include <stdlib.h> |
| #include <string.h> |
| +#include <locale.h> |
| |
| #ifdef ENABLE_NLS |
| #include <libintl.h> |
| @@ -121,6 +122,7 @@ |
| #if HAVE_GETOPT_LONG || HAVE_GETOPT |
| int c; |
| |
| + setlocale (LC_ALL, ""); |
| #if HAVE_GETOPT_LONG |
| while ((c = getopt_long (argc, argv, "asvbf:Vh", longopts, NULL)) != -1) |
| #else |
| --- a/fc-pattern/fc-pattern.c |
| +++ b/fc-pattern/fc-pattern.c |
| @@ -36,6 +36,7 @@ |
| #include <unistd.h> |
| #include <stdlib.h> |
| #include <string.h> |
| +#include <locale.h> |
| |
| #ifdef ENABLE_NLS |
| #include <libintl.h> |
| @@ -111,6 +112,7 @@ |
| #if HAVE_GETOPT_LONG || HAVE_GETOPT |
| int c; |
| |
| + setlocale (LC_ALL, ""); |
| #if HAVE_GETOPT_LONG |
| while ((c = getopt_long (argc, argv, "cdf:Vh", longopts, NULL)) != -1) |
| #else |
| --- a/fc-query/fc-query.c |
| +++ b/fc-query/fc-query.c |
| @@ -39,6 +39,7 @@ |
| #include <unistd.h> |
| #include <stdlib.h> |
| #include <string.h> |
| +#include <locale.h> |
| |
| #ifdef ENABLE_NLS |
| #include <libintl.h> |
| @@ -115,6 +116,7 @@ |
| #if HAVE_GETOPT_LONG || HAVE_GETOPT |
| int c; |
| |
| + setlocale (LC_ALL, ""); |
| #if HAVE_GETOPT_LONG |
| while ((c = getopt_long (argc, argv, "i:bf:Vh", longopts, NULL)) != -1) |
| #else |
| --- a/fc-scan/fc-scan.c |
| +++ b/fc-scan/fc-scan.c |
| @@ -39,6 +39,7 @@ |
| #include <unistd.h> |
| #include <stdlib.h> |
| #include <string.h> |
| +#include <locale.h> |
| |
| #ifdef ENABLE_NLS |
| #include <libintl.h> |
| @@ -110,6 +111,7 @@ |
| #if HAVE_GETOPT_LONG || HAVE_GETOPT |
| int c; |
| |
| + setlocale (LC_ALL, ""); |
| #if HAVE_GETOPT_LONG |
| while ((c = getopt_long (argc, argv, "bf:Vh", longopts, NULL)) != -1) |
| #else |
| --- a/src/fccfg.c |
| +++ b/src/fccfg.c |
| @@ -26,7 +26,6 @@ |
| |
| #include "fcint.h" |
| #include <dirent.h> |
| -#include <locale.h> |
| #include <sys/types.h> |
| |
| #if defined (_WIN32) && !defined (R_OK) |
| @@ -39,18 +38,6 @@ |
| FcConfigEnsure (void) |
| { |
| FcConfig *config; |
| - FcBool is_locale_initialized; |
| - static void *static_is_locale_initialized; |
| -retry_locale: |
| - is_locale_initialized = (intptr_t) fc_atomic_ptr_get (&static_is_locale_initialized); |
| - if (!is_locale_initialized) |
| - { |
| - is_locale_initialized = FcTrue; |
| - if (!fc_atomic_ptr_cmpexch (&static_is_locale_initialized, NULL, |
| - (void *)(intptr_t) is_locale_initialized)) |
| - goto retry_locale; |
| - setlocale (LC_ALL, ""); |
| - } |
| retry_config: |
| config = fc_atomic_ptr_get (&_fcConfig); |
| if (!config) |