static gint editor_command_one(const gchar *template, GList *list, EditorData *ed)
{
gchar *command;
- gchar *working_directory;
FileData *fd = list->data;
- gchar *args[4];
GPid pid;
gint standard_output;
gint standard_error;
gboolean ok;
-
ed->pid = -1;
-
- working_directory = remove_level_from_path(fd->path);
-
ed->flags = editor_command_parse(template, list, &command);
ok = !(ed->flags & EDITOR_ERROR_MASK);
-
- args[0] = COMMAND_SHELL;
- args[1] = COMMAND_OPT;
- args[2] = command;
- args[3] = NULL;
-
if (ok)
{
+ gchar *working_directory;
+ gchar *args[4];
+
+ working_directory = remove_level_from_path(fd->path);
+ args[0] = COMMAND_SHELL;
+ args[1] = COMMAND_OPT;
+ args[2] = command;
+ args[3] = NULL;
+
ok = g_spawn_async_with_pipes(working_directory, args, NULL,
G_SPAWN_DO_NOT_REAP_CHILD, /* GSpawnFlags */
NULL, NULL,
ed->vd ? &standard_output : NULL,
ed->vd ? &standard_error : NULL,
NULL);
+
+ g_free(working_directory);
if (!ok) ed->flags |= EDITOR_ERROR_CANT_EXEC;
}
ed->pid = pid;
}
-
if (ed->vd)
{
}
}
-
-
g_free(command);
- g_free(working_directory);
return ed->flags & EDITOR_ERROR_MASK;
}
{
editor_command_next_start(ed);
}
+
void editor_skip(gpointer ed)
{
editor_command_done(ed);
if ((flags & EDITOR_VERBOSE_MULTI) && list && list->next)
flags |= EDITOR_VERBOSE;
-
if (flags & EDITOR_VERBOSE)
editor_verbose_window(ed, text);