You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by nw...@apache.org on 2016/06/30 16:40:35 UTC

lucy git commit: Regenerate charmonizer.c for Windows fix

Repository: lucy
Updated Branches:
  refs/heads/master 70caaa3d3 -> 6f1efa315


Regenerate charmonizer.c for Windows fix


Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/6f1efa31
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/6f1efa31
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/6f1efa31

Branch: refs/heads/master
Commit: 6f1efa315e36f7814988c7c7a5fa11fb27c433bd
Parents: 70caaa3
Author: Nick Wellnhofer <we...@aevum.de>
Authored: Thu Jun 30 18:39:42 2016 +0200
Committer: Nick Wellnhofer <we...@aevum.de>
Committed: Thu Jun 30 18:40:10 2016 +0200

----------------------------------------------------------------------
 common/charmonizer.c | 37 ++++++++++++++++++-------------------
 1 file changed, 18 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy/blob/6f1efa31/common/charmonizer.c
----------------------------------------------------------------------
diff --git a/common/charmonizer.c b/common/charmonizer.c
index 633ab34..37d0a92 100644
--- a/common/charmonizer.c
+++ b/common/charmonizer.c
@@ -5456,7 +5456,7 @@ static struct {
 } chaz_OS = { "", "", "", "", 0, 0 };
 
 static int
-chaz_OS_run_sh_via_cmd_exe(const char *command);
+chaz_OS_run_sh_via_cmd_exe(const char *command, const char *path);
 
 void
 chaz_OS_init(void) {
@@ -5615,6 +5615,9 @@ int
 chaz_OS_run_redirected(const char *command, const char *path) {
     int retval = 1;
     char *quiet_command = NULL;
+    if (chaz_OS.run_sh_via_cmd_exe) {
+        return chaz_OS_run_sh_via_cmd_exe(command, path);
+    }
     if (chaz_OS.shell_type == CHAZ_OS_POSIX
         || chaz_OS.shell_type == CHAZ_OS_CMD_EXE
         ) {
@@ -5623,27 +5626,23 @@ chaz_OS_run_redirected(const char *command, const char *path) {
     else {
         chaz_Util_die("Don't know the shell type");
     }
-    if (chaz_OS.run_sh_via_cmd_exe) {
-        retval = chaz_OS_run_sh_via_cmd_exe(quiet_command);
-    }
-    else {
-        retval = system(quiet_command);
-    }
+    retval = system(quiet_command);
     free(quiet_command);
     return retval;
 }
 
 static int
-chaz_OS_run_sh_via_cmd_exe(const char *command) {
+chaz_OS_run_sh_via_cmd_exe(const char *command, const char *path) {
     size_t i;
     size_t size;
-    char *sh_command;
+    char *escaped_command;
+    char *wrapped_command;
     char *p;
     int retval;
 
     /* Compute size. */
 
-    size = sizeof("sh -c \"\"");
+    size = 0;
 
     for (i = 0; command[i] != '\0'; i++) {
         char c = command[i];
@@ -5667,10 +5666,8 @@ chaz_OS_run_sh_via_cmd_exe(const char *command) {
 
     /* Build sh command. */
 
-    sh_command = (char*)malloc(size);
-    p = sh_command;
-    memcpy(p, "sh -c \"", 7);
-    p += 7;
+    escaped_command = (char*)malloc(size + 1);
+    p = escaped_command;
 
     /* Escape special characters. */
 
@@ -5700,14 +5697,16 @@ chaz_OS_run_sh_via_cmd_exe(const char *command) {
         }
     }
 
-    /* Finish and run sh command. */
-
-    *p++ = '"';
     *p++ = '\0';
 
-    retval = system(sh_command);
+    /* Run sh command. */
+
+    wrapped_command = chaz_Util_join("", "sh -c \"", escaped_command, "\" > ",
+                                     path, " 2>&1", NULL);
+    retval = system(wrapped_command);
 
-    free(sh_command);
+    free(wrapped_command);
+    free(escaped_command);
     return retval;
 }