Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--add-patch.c1
-rw-r--r--builtin/add.c1
-rw-r--r--builtin/am.c1
-rw-r--r--builtin/branch.c1
-rw-r--r--builtin/bugreport.c1
-rw-r--r--builtin/commit.c1
-rw-r--r--builtin/config.c1
-rw-r--r--builtin/merge.c1
-rw-r--r--builtin/notes.c1
-rw-r--r--builtin/replace.c1
-rw-r--r--builtin/tag.c1
-rw-r--r--builtin/var.c1
-rw-r--r--cache.h3
-rw-r--r--color.c1
-rw-r--r--editor.c30
-rw-r--r--editor.h34
-rw-r--r--pager.c1
-rw-r--r--rebase-interactive.c1
-rw-r--r--sideband.c1
-rw-r--r--strbuf.c28
-rw-r--r--strbuf.h24
21 files changed, 80 insertions, 55 deletions
diff --git a/add-patch.c b/add-patch.c
index b01ba8fa81..8d770d203f 100644
--- a/add-patch.c
+++ b/add-patch.c
@@ -2,6 +2,7 @@
#include "add-interactive.h"
#include "advice.h"
#include "alloc.h"
+#include "editor.h"
#include "environment.h"
#include "gettext.h"
#include "object-name.h"
diff --git a/builtin/add.c b/builtin/add.c
index d3c51e2814..76cc026a68 100644
--- a/builtin/add.c
+++ b/builtin/add.c
@@ -9,6 +9,7 @@
#include "config.h"
#include "builtin.h"
#include "lockfile.h"
+#include "editor.h"
#include "dir.h"
#include "gettext.h"
#include "pathspec.h"
diff --git a/builtin/am.c b/builtin/am.c
index 0d7ee28bdd..f7a065e529 100644
--- a/builtin/am.c
+++ b/builtin/am.c
@@ -9,6 +9,7 @@
#include "advice.h"
#include "config.h"
#include "builtin.h"
+#include "editor.h"
#include "environment.h"
#include "exec-cmd.h"
#include "gettext.h"
diff --git a/builtin/branch.c b/builtin/branch.c
index 7c1c872708..1fb11d55e6 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -8,6 +8,7 @@
#include "cache.h"
#include "config.h"
#include "color.h"
+#include "editor.h"
#include "environment.h"
#include "refs.h"
#include "commit.h"
diff --git a/builtin/bugreport.c b/builtin/bugreport.c
index 03fb053691..daf6c23657 100644
--- a/builtin/bugreport.c
+++ b/builtin/bugreport.c
@@ -1,5 +1,6 @@
#include "builtin.h"
#include "abspath.h"
+#include "editor.h"
#include "gettext.h"
#include "parse-options.h"
#include "strbuf.h"
diff --git a/builtin/commit.c b/builtin/commit.c
index 682f47c8d5..e67c4be221 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -13,6 +13,7 @@
#include "cache-tree.h"
#include "color.h"
#include "dir.h"
+#include "editor.h"
#include "environment.h"
#include "builtin.h"
#include "diff.h"
diff --git a/builtin/config.c b/builtin/config.c
index fe79fb60c4..9401f1e5e3 100644
--- a/builtin/config.c
+++ b/builtin/config.c
@@ -3,6 +3,7 @@
#include "alloc.h"
#include "config.h"
#include "color.h"
+#include "editor.h"
#include "environment.h"
#include "gettext.h"
#include "ident.h"
diff --git a/builtin/merge.c b/builtin/merge.c
index 693f185d4d..8da3e46abb 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -12,6 +12,7 @@
#include "advice.h"
#include "alloc.h"
#include "config.h"
+#include "editor.h"
#include "environment.h"
#include "gettext.h"
#include "hex.h"
diff --git a/builtin/notes.c b/builtin/notes.c
index 896140b905..d5788352b6 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c
@@ -10,6 +10,7 @@
#include "cache.h"
#include "config.h"
#include "builtin.h"
+#include "editor.h"
#include "gettext.h"
#include "hex.h"
#include "notes.h"
diff --git a/builtin/replace.c b/builtin/replace.c
index f4b3a8efb2..981f189443 100644
--- a/builtin/replace.c
+++ b/builtin/replace.c
@@ -11,6 +11,7 @@
#include "cache.h"
#include "config.h"
#include "builtin.h"
+#include "editor.h"
#include "environment.h"
#include "gettext.h"
#include "hex.h"
diff --git a/builtin/tag.c b/builtin/tag.c
index 88a2590230..7d189a4a5d 100644
--- a/builtin/tag.c
+++ b/builtin/tag.c
@@ -10,6 +10,7 @@
#include "advice.h"
#include "config.h"
#include "builtin.h"
+#include "editor.h"
#include "environment.h"
#include "gettext.h"
#include "hex.h"
diff --git a/builtin/var.c b/builtin/var.c
index d9943be9af..90616cf65a 100644
--- a/builtin/var.c
+++ b/builtin/var.c
@@ -5,6 +5,7 @@
*/
#include "builtin.h"
#include "config.h"
+#include "editor.h"
#include "ident.h"
#include "refs.h"
diff --git a/cache.h b/cache.h
index 394e8d0125..97ddf4094a 100644
--- a/cache.h
+++ b/cache.h
@@ -621,10 +621,7 @@ int df_name_compare(const char *name1, size_t len1, int mode1,
int name_compare(const char *name1, size_t len1, const char *name2, size_t len2);
int cache_name_stage_compare(const char *name1, int len1, int stage1, const char *name2, int len2, int stage2);
-const char *git_editor(void);
-const char *git_sequence_editor(void);
const char *git_pager(int stdout_is_tty);
-int is_terminal_dumb(void);
struct cache_def {
struct strbuf path;
diff --git a/color.c b/color.c
index 672dcbb73a..a8e8d5202a 100644
--- a/color.c
+++ b/color.c
@@ -1,6 +1,7 @@
#include "cache.h"
#include "config.h"
#include "color.h"
+#include "editor.h"
#include "gettext.h"
#include "hex.h"
diff --git a/editor.c b/editor.c
index 3bea3ef72f..12025dfec3 100644
--- a/editor.c
+++ b/editor.c
@@ -2,12 +2,14 @@
#include "abspath.h"
#include "advice.h"
#include "config.h"
+#include "editor.h"
#include "environment.h"
#include "gettext.h"
#include "strbuf.h"
#include "strvec.h"
#include "run-command.h"
#include "sigchain.h"
+#include "wrapper.h"
#ifndef DEFAULT_EDITOR
#define DEFAULT_EDITOR "vi"
@@ -130,3 +132,31 @@ int launch_sequence_editor(const char *path, struct strbuf *buffer,
{
return launch_specified_editor(git_sequence_editor(), path, buffer, env);
}
+
+int strbuf_edit_interactively(struct strbuf *buffer, const char *path,
+ const char *const *env)
+{
+ char *path2 = NULL;
+ int fd, res = 0;
+
+ if (!is_absolute_path(path))
+ path = path2 = xstrdup(git_path("%s", path));
+
+ fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0666);
+ if (fd < 0)
+ res = error_errno(_("could not open '%s' for writing"), path);
+ else if (write_in_full(fd, buffer->buf, buffer->len) < 0) {
+ res = error_errno(_("could not write to '%s'"), path);
+ close(fd);
+ } else if (close(fd) < 0)
+ res = error_errno(_("could not close '%s'"), path);
+ else {
+ strbuf_reset(buffer);
+ if (launch_editor(path, buffer, env) < 0)
+ res = error_errno(_("could not edit '%s'"), path);
+ unlink(path);
+ }
+
+ free(path2);
+ return res;
+}
diff --git a/editor.h b/editor.h
new file mode 100644
index 0000000000..8016bb5e00
--- /dev/null
+++ b/editor.h
@@ -0,0 +1,34 @@
+#ifndef EDITOR_H
+#define EDITOR_H
+
+struct strbuf;
+
+const char *git_editor(void);
+const char *git_sequence_editor(void);
+int is_terminal_dumb(void);
+
+/**
+ * Launch the user preferred editor to edit a file and fill the buffer
+ * with the file's contents upon the user completing their editing. The
+ * third argument can be used to set the environment which the editor is
+ * run in. If the buffer is NULL the editor is launched as usual but the
+ * file's contents are not read into the buffer upon completion.
+ */
+int launch_editor(const char *path, struct strbuf *buffer,
+ const char *const *env);
+
+int launch_sequence_editor(const char *path, struct strbuf *buffer,
+ const char *const *env);
+
+/*
+ * In contrast to `launch_editor()`, this function writes out the contents
+ * of the specified file first, then clears the `buffer`, then launches
+ * the editor and reads back in the file contents into the `buffer`.
+ * Finally, it deletes the temporary file.
+ *
+ * If `path` is relative, it refers to a file in the `.git` directory.
+ */
+int strbuf_edit_interactively(struct strbuf *buffer, const char *path,
+ const char *const *env);
+
+#endif
diff --git a/pager.c b/pager.c
index b66bbff278..6367e8ef86 100644
--- a/pager.c
+++ b/pager.c
@@ -1,5 +1,6 @@
#include "cache.h"
#include "config.h"
+#include "editor.h"
#include "run-command.h"
#include "sigchain.h"
#include "alias.h"
diff --git a/rebase-interactive.c b/rebase-interactive.c
index 6ff12d7be2..789f407361 100644
--- a/rebase-interactive.c
+++ b/rebase-interactive.c
@@ -1,5 +1,6 @@
#include "git-compat-util.h"
#include "commit.h"
+#include "editor.h"
#include "environment.h"
#include "gettext.h"
#include "sequencer.h"
diff --git a/sideband.c b/sideband.c
index 0af582858b..25e2a18571 100644
--- a/sideband.c
+++ b/sideband.c
@@ -1,6 +1,7 @@
#include "cache.h"
#include "color.h"
#include "config.h"
+#include "editor.h"
#include "gettext.h"
#include "sideband.h"
#include "help.h"
diff --git a/strbuf.c b/strbuf.c
index b2e3735ba8..729378ec82 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -1180,34 +1180,6 @@ int strbuf_normalize_path(struct strbuf *src)
return 0;
}
-int strbuf_edit_interactively(struct strbuf *buffer, const char *path,
- const char *const *env)
-{
- char *path2 = NULL;
- int fd, res = 0;
-
- if (!is_absolute_path(path))
- path = path2 = xstrdup(git_path("%s", path));
-
- fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0666);
- if (fd < 0)
- res = error_errno(_("could not open '%s' for writing"), path);
- else if (write_in_full(fd, buffer->buf, buffer->len) < 0) {
- res = error_errno(_("could not write to '%s'"), path);
- close(fd);
- } else if (close(fd) < 0)
- res = error_errno(_("could not close '%s'"), path);
- else {
- strbuf_reset(buffer);
- if (launch_editor(path, buffer, env) < 0)
- res = error_errno(_("could not edit '%s'"), path);
- unlink(path);
- }
-
- free(path2);
- return res;
-}
-
void strbuf_strip_file_from_path(struct strbuf *sb)
{
char *path_sep = find_last_dir_sep(sb->buf);
diff --git a/strbuf.h b/strbuf.h
index b980f9edc6..3dfeadb44c 100644
--- a/strbuf.h
+++ b/strbuf.h
@@ -640,30 +640,6 @@ void strbuf_repo_add_unique_abbrev(struct strbuf *sb, struct repository *repo,
void strbuf_add_unique_abbrev(struct strbuf *sb, const struct object_id *oid,
int abbrev_len);
-/**
- * Launch the user preferred editor to edit a file and fill the buffer
- * with the file's contents upon the user completing their editing. The
- * third argument can be used to set the environment which the editor is
- * run in. If the buffer is NULL the editor is launched as usual but the
- * file's contents are not read into the buffer upon completion.
- */
-int launch_editor(const char *path, struct strbuf *buffer,
- const char *const *env);
-
-int launch_sequence_editor(const char *path, struct strbuf *buffer,
- const char *const *env);
-
-/*
- * In contrast to `launch_editor()`, this function writes out the contents
- * of the specified file first, then clears the `buffer`, then launches
- * the editor and reads back in the file contents into the `buffer`.
- * Finally, it deletes the temporary file.
- *
- * If `path` is relative, it refers to a file in the `.git` directory.
- */
-int strbuf_edit_interactively(struct strbuf *buffer, const char *path,
- const char *const *env);
-
/*
* Remove the filename from the provided path string. If the path
* contains a trailing separator, then the path is considered a directory