From d8c3e0af38c0a9645fec2e49ecf32c8170f70e0b Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Mon, 28 Feb 2011 15:49:13 +0100 Subject: [PATCH] ly:spawn: pass utf-8 strings to g_spawn. Fixes #1522. --- lily/general-scheme.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lily/general-scheme.cc b/lily/general-scheme.cc index 59893503f5..ae31e1eb9f 100644 --- a/lily/general-scheme.cc +++ b/lily/general-scheme.cc @@ -689,6 +689,15 @@ ly_run_command (char *argv[], char **standard_output, char **standard_error) return exit_status; } +static char * +ly_scm2utf8 (SCM str) +{ + char *p = ly_scm2str0 (str); + char *g = g_locale_to_utf8 (p, -1, 0, 0, 0); + free (p); + return g; +} + LY_DEFINE (ly_spawn, "ly:spawn", 1, 0, 1, (SCM command, SCM rest), "Simple interface to g_spawn_sync" @@ -702,9 +711,9 @@ LY_DEFINE (ly_spawn, "ly:spawn", char **argv = new char*[argc + 2]; int n = 0; - argv[n++] = ly_scm2str0 (command); + argv[n++] = ly_scm2utf8 (command); for (SCM s = rest; scm_is_pair (s); s = scm_cdr (s)) - argv[n++] = ly_scm2str0 (scm_car (s)); + argv[n++] = ly_scm2utf8 (scm_car (s)); argv[n] = 0; char *standard_output = 0; -- 2.39.2