[geany/geany] 05415e: Unify the build command spawning

Dimitar Zhekov git-noreply at xxxxx
Fri May 15 17:07:22 UTC 2015


Branch:      refs/heads/master
Author:      Dimitar Zhekov <dimitar.zhekov at gmail.com>
Committer:   Dimitar Zhekov <dimitar.zhekov at gmail.com>
Date:        Mon, 16 Mar 2015 20:10:30 UTC
Commit:      05415e53b63c89e104e93bc729bb8b3344d61525
             https://github.com/geany/geany/commit/05415e53b63c89e104e93bc729bb8b3344d61525

Log Message:
-----------
Unify the build command spawning

Also, don't check build_spawn_cmd() cmd argument under Unix, since it
may be valid shell command rejected by glib g_shell_parse_argv().


Modified Paths:
--------------
    src/build.c

Modified: src/build.c
21 lines changed, 9 insertions(+), 12 deletions(-)
===================================================================
@@ -731,10 +731,7 @@ static gchar *build_replace_placeholder(const GeanyDocument *doc, const gchar *s
 static void build_spawn_cmd(GeanyDocument *doc, const gchar *cmd, const gchar *dir)
 {
 	GError *error = NULL;
-#ifdef G_OS_UNIX
-	/* under Unix, start cmd via sh for compatibility */
 	gchar *argv[] = { "/bin/sh", "-c", (gchar *) cmd, NULL };
-#endif
 	gchar *working_dir;
 	gchar *utf8_working_dir;
 	gchar *utf8_cmd_string;
@@ -761,21 +758,21 @@ static void build_spawn_cmd(GeanyDocument *doc, const gchar *cmd, const gchar *d
 	g_free(utf8_working_dir);
 	g_free(utf8_cmd_string);
 
+#ifdef G_OS_UNIX
+	cmd = NULL;  /* under Unix, use argv to start cmd via sh for compatibility */
+#else
+	argv[0] = NULL;  /* under Windows, run cmd directly */
+#endif
+
 	/* set the build info for the message window */
 	g_free(build_info.dir);
 	build_info.dir = g_strdup(working_dir);
 	build_info.file_type_id = (doc == NULL) ? GEANY_FILETYPES_NONE : doc->file_type->id;
 	build_info.message_count = 0;
 
-#ifdef G_OS_WIN32
-	if (!spawn_with_callbacks(working_dir, cmd, NULL, NULL, 0, NULL, NULL, build_iofunc,
-#else
-	/* cmd is passed via argv, so check it explicitly */
-	if (!spawn_check_command(cmd, FALSE, &error) ||
-		!spawn_with_callbacks(working_dir, NULL, argv, NULL, 0, NULL, NULL, build_iofunc,
-#endif
-			GINT_TO_POINTER(0), 0, build_iofunc, GINT_TO_POINTER(1), 0, build_exit_cb,
-			NULL, &build_info.pid, &error))
+	if (!spawn_with_callbacks(working_dir, cmd, argv, NULL, 0, NULL, NULL, build_iofunc,
+		GINT_TO_POINTER(0), 0, build_iofunc, GINT_TO_POINTER(1), 0, build_exit_cb, NULL,
+		&build_info.pid, &error))
 	{
 		geany_debug("build command spawning failed: %s", error->message);
 		ui_set_statusbar(TRUE, _("Process failed (%s)"), error->message);



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Commits mailing list