Staging
v0.5.1
Revision 4525e8e41a8c0c4246a95097744604ea72198dad authored by Junio C Hamano on 15 July 2009, 22:10:06 UTC, committed by Junio C Hamano on 15 July 2009, 22:10:06 UTC
This reverts commit 650d30d8a120c8982309ccb9ef40432b4ea2eb74.

Some mailing lists are configured add prefix "[listname] " to all their
messages, and also people hand-edit subject lines, be it an output from
format-patch or a patch generated by some other means.

We cannot stop people from mucking with the subject line, and with the
change, there always will be need for hand editing the subject when that
happens.  People have depended on the leading [bracketed string] removal.
1 parent 05c1da2
Raw File
editor.c
#include "cache.h"
#include "strbuf.h"
#include "run-command.h"

int launch_editor(const char *path, struct strbuf *buffer, const char *const *env)
{
	const char *editor, *terminal;

	editor = getenv("GIT_EDITOR");
	if (!editor && editor_program)
		editor = editor_program;
	if (!editor)
		editor = getenv("VISUAL");
	if (!editor)
		editor = getenv("EDITOR");

	terminal = getenv("TERM");
	if (!editor && (!terminal || !strcmp(terminal, "dumb")))
		return error("Terminal is dumb but no VISUAL nor EDITOR defined.");

	if (!editor)
		editor = "vi";

	if (strcmp(editor, ":")) {
		size_t len = strlen(editor);
		int i = 0;
		int failed;
		const char *args[6];
		struct strbuf arg0 = STRBUF_INIT;

		if (strcspn(editor, "$ \t'") != 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)
			return error("There was a problem with the editor '%s'.",
					editor);
	}

	if (!buffer)
		return 0;
	if (strbuf_read_file(buffer, path, 0) < 0)
		return error("could not read file '%s': %s",
				path, strerror(errno));
	return 0;
}
back to top