]> git.donarmstrong.com Git - lilypond.git/commitdiff
Issue 4125: Disable character set recognition
authorDavid Kastrup <dak@gnu.org>
Mon, 22 Sep 2014 13:53:56 +0000 (15:53 +0200)
committerDavid Kastrup <dak@gnu.org>
Wed, 24 Sep 2014 19:19:22 +0000 (21:19 +0200)
GUILE 1.8 presumably does not make use of the LC_CTYPE information and
just does its input/output/string processing in 8bit chunks.  For the
sake of getting comparable results at first when working on GUILE 2.0,
we switch off character set recognition here.

At a later point of time, integration with the character processing of
GUILEĀ 2.0 may be attempted but since this is an entirely new can of
worms with its own performance pitfalls, we put this aside for now.

lily/main.cc

index 7fb2f324572db0b434fae0155103ab3d7fe611ee..bae977603c4c42a7fd18fd05339f8d5d4e5b8d3a 100644 (file)
@@ -18,6 +18,7 @@
 */
 
 #include "main.hh"
+#include "lily-guile.hh"
 
 #include <cassert>
 #include <clocale>
@@ -553,6 +554,20 @@ setup_localisation ()
      Disable localisation of float values. */
   setlocale (LC_NUMERIC, "C");
 
+#if GUILEV2
+  // In order not to have this porting aid backfire to GUILE1 usage,
+  // this is only compiled in the GUILEV2 version.  It should
+  // eventually be replaced with proper multibyte communication with
+  // GUILE2, but in the mean time it seems that this is the least
+  // invasive path to get comparable results between the
+  // not-really-multibyte-supporting GUILE1 and GUILE2
+
+  /* Disable character sets */
+  setlocale (LC_CTYPE, "C");
+  /* But our text domain is in UTF-8 */
+  bind_textdomain_codeset ("lilypond", "UTF-8");
+#endif
+
   string localedir = LOCALEDIR;
   if (char const *env = getenv ("LILYPOND_LOCALEDIR"))
     localedir = env;