Browse Source

Move launch_editor() from builtin-tag.c to editor.c

launch_editor() is declared in strbuf.h but defined in builtin-tag.c.
This patch moves launch_editor() into a new source file editor.c,
but keeps the declaration in strbuf.h.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Stephan Beyer 17 years ago committed by Junio C Hamano
parent
commit
d82f33e20d
  1. 1
      Makefile
  2. 53
      builtin-tag.c
  3. 56
      editor.c

1
Makefile

@ -410,6 +410,7 @@ LIB_OBJS += diff-no-index.o @@ -410,6 +410,7 @@ LIB_OBJS += diff-no-index.o
LIB_OBJS += diff-lib.o
LIB_OBJS += diff.o
LIB_OBJS += dir.o
LIB_OBJS += editor.o
LIB_OBJS += entry.o
LIB_OBJS += environment.o
LIB_OBJS += exec_cmd.o

53
builtin-tag.c

@ -23,59 +23,6 @@ static const char * const git_tag_usage[] = { @@ -23,59 +23,6 @@ static const char * const git_tag_usage[] = {

static char signingkey[1000];

void 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"))) {
fprintf(stderr,
"Terminal is dumb but no VISUAL nor EDITOR defined.\n"
"Please supply the message using either -m or -F option.\n");
exit(1);
}

if (!editor)
editor = "vi";

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

strbuf_init(&arg0, 0);
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;

if (run_command_v_opt_cd_env(args, 0, NULL, env))
die("There was a problem with the editor %s.", editor);
strbuf_release(&arg0);
}

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

struct tag_filter {
const char *pattern;
int lines;

56
editor.c

@ -0,0 +1,56 @@ @@ -0,0 +1,56 @@
#include "cache.h"
#include "strbuf.h"
#include "run-command.h"

void 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"))) {
fprintf(stderr,
"Terminal is dumb but no VISUAL nor EDITOR defined.\n"
"Please supply the message using either -m or -F option.\n");
exit(1);
}

if (!editor)
editor = "vi";

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

strbuf_init(&arg0, 0);
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;

if (run_command_v_opt_cd_env(args, 0, NULL, env))
die("There was a problem with the editor %s.", editor);
strbuf_release(&arg0);
}

if (!buffer)
return;
if (strbuf_read_file(buffer, path, 0) < 0)
die("could not read message file '%s': %s",
path, strerror(errno));
}
Loading…
Cancel
Save