diff options
Diffstat (limited to 'editor.c')
| -rw-r--r-- | editor.c | 21 | 
1 files changed, 2 insertions, 19 deletions
| @@ -36,26 +36,9 @@ int launch_editor(const char *path, struct strbuf *buffer, const char *const *en  		return error("Terminal is dumb, but EDITOR unset");  	if (strcmp(editor, ":")) { -		size_t len = strlen(editor); -		int i = 0; -		int failed; -		const char *args[6]; -		struct strbuf arg0 = STRBUF_INIT; +		const char *args[] = { editor, path, NULL }; -		if (strcspn(editor, "|&;<>()$`\\\"' \t\n*?[#~=%") != len) { -			/* there are specials */ -			strbuf_addf(&arg0, "%s \"$@\"", editor); -			args[i++] = "sh"; -			args[i++] = "-c"; -			args[i++] = arg0.buf; -		} -		args[i++] = editor; -		args[i++] = path; -		args[i] = NULL; - -		failed = run_command_v_opt_cd_env(args, 0, NULL, env); -		strbuf_release(&arg0); -		if (failed) +		if (run_command_v_opt_cd_env(args, RUN_USING_SHELL, NULL, env))  			return error("There was a problem with the editor '%s'.",  					editor);  	} | 
