From 5c0abe47a800dca3faf97b7ec608d86fddab25b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Courr=C3=A8ges-Anglas?= Date: Mon, 21 Jan 2013 02:33:13 +0100 Subject: introduce defaults.utf8_locale * use nl_langinfo() to detect if locale codeset is UTF-8 --- src/data.h | 1 + src/main.c | 23 ++++++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/data.h b/src/data.h index 541ca9e..2be9a98 100644 --- a/src/data.h +++ b/src/data.h @@ -235,6 +235,7 @@ struct rp_defaults XFontSet font; char *font_string; + int utf8_locale; char *fgcolor_string; char *bgcolor_string; diff --git a/src/main.c b/src/main.c index 417fc1a..bbd0e12 100644 --- a/src/main.c +++ b/src/main.c @@ -38,6 +38,10 @@ #include "ratpoison.h" +#ifdef HAVE_LANGINFO_CODESET +# include +#endif + /* Several systems seem not to have WAIT_ANY defined, so define it if it isn't. */ #ifndef WAIT_ANY @@ -169,7 +173,7 @@ strtok_ws (char *s) if (s) pointer = s; - + /* skip to first non-whitespace char. */ while (*pointer && isspace (*pointer)) pointer++; @@ -546,6 +550,12 @@ init_defaults (void) set_extents_of_fontset (defaults.font); #endif +#ifdef HAVE_LANGINFO_CODESET + defaults.utf8_locale = !strcmp (nl_langinfo (CODESET), "UTF-8"); +#endif + PRINT_DEBUG (("UTF-8 locale detected: %s\n", + defaults.utf8_locale ? "yes" : "no")); + defaults.fgcolor_string = xstrdup ("black"); defaults.bgcolor_string = xstrdup ("white"); defaults.fwcolor_string = xstrdup ("black"); @@ -582,10 +592,17 @@ main (int argc, char *argv[]) unsigned char interactive = 0; char *alt_rcfile = NULL; - myargv = argv; - setlocale(LC_CTYPE, ""); + setlocale (LC_CTYPE, ""); + if (XSupportsLocale ()) + { + if (!XSetLocaleModifiers ("")) + PRINT_ERROR (("Couldn't set X locale modifiers.\n")); + } + else + PRINT_ERROR (("X doesn't seem to support your locale.\n")); /* Parse the arguments */ + myargv = argv; while (1) { int option_index = 0; -- cgit v1.2.3