summaryrefslogtreecommitdiff
path: root/extra/locale/gen_wc8bit.c
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2009-06-28 14:43:01 -0400
committerMike Frysinger <vapier@gentoo.org>2009-06-28 14:43:01 -0400
commit0e14b8f425c562749d3821a42414b1ce6b3b0923 (patch)
treee580a0c6dbc4779b47b4968a5610f8cb23d47dc1 /extra/locale/gen_wc8bit.c
parent8d005aa103606748e113d1a7a09cfb2aeb6f7140 (diff)
locale: gen_wc8bit: try to find UTF8 locale automatically
Rather than require everyone to have en_US.UTF-8 when we really need any UTF8 locale, do a scan for possible UTF8 locales if the default en_US does not exist. Hopefully this should make the utility "just work" for most people. Reported-by: Daniel Cordero <theappleman@gmail.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'extra/locale/gen_wc8bit.c')
-rw-r--r--extra/locale/gen_wc8bit.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/extra/locale/gen_wc8bit.c b/extra/locale/gen_wc8bit.c
index 418a1ac9d..126cd1ace 100644
--- a/extra/locale/gen_wc8bit.c
+++ b/extra/locale/gen_wc8bit.c
@@ -98,8 +98,31 @@ int main(int argc, char **argv)
int total_size = 0;
if (!setlocale(LC_CTYPE, "en_US.UTF-8")) {
- printf("setlocale(LC_CTYPE,\"en_US.UTF-8\") failed!\n");
+ /* Silly foreigners disabling en_US locales */
+ FILE *fp = popen("locale -a", "r");
+ if (!fp)
+ goto locale_failure;
+
+ while (!feof(fp)) {
+ char buf[256];
+ size_t len;
+
+ if (fgets(buf, sizeof(buf) - 10, fp) == NULL)
+ goto locale_failure;
+
+ len = strlen(buf);
+ if (buf[len - 1] == '\n')
+ buf[--len] = '\0';
+ strcat(buf, ".UTF8");
+ if (setlocale(LC_CTYPE, buf))
+ goto locale_success;
+ }
+
+ locale_failure:
+ printf("could not find a UTF8 locale ... please enable en_US.UTF-8\n");
return EXIT_FAILURE;
+ locale_success:
+ pclose(fp);
}
if (!(out = fopen("c8tables.h","w"))) {