diff options
-rw-r--r-- | libguile/simpos.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/libguile/simpos.c b/libguile/simpos.c index ff4637d61..d0a5a28f1 100644 --- a/libguile/simpos.c +++ b/libguile/simpos.c @@ -64,8 +64,9 @@ SCM_DEFINE (scm_system, "system", 0, 1, 0, "indicating whether the command processor is available.") #define FUNC_NAME s_scm_system { - int rv; - + int rv, eno; + char *c_cmd; + if (SCM_UNBNDP (cmd)) { rv = system (NULL); @@ -73,7 +74,9 @@ SCM_DEFINE (scm_system, "system", 0, 1, 0, } SCM_VALIDATE_STRING (1, cmd); errno = 0; - rv = system (SCM_STRING_CHARS (cmd)); + c_cmd = scm_to_locale_string (cmd); + rv = system (c_cmd); + eno = errno; free (c_cmd); errno = eno; if (rv == -1 || (rv == 127 && errno != 0)) SCM_SYSERROR; return scm_from_int (rv); |