filter-branch documentation: non-zero exit status in command abort the filter
[gitweb.git] / builtin-tag.c
index 020ee1cb777d666fc2c70f87f01081355c061424..4a4a88c10b4b2f9e55662bd4c1c17051ae7e6aac 100644 (file)
@@ -47,7 +47,19 @@ void launch_editor(const char *path, struct strbuf *buffer, const char *const *e
                editor = "vi";
 
        if (strcmp(editor, ":")) {
-               const char *args[] = { editor, path, NULL };
+               size_t len = strlen(editor);
+               int i = 0;
+               const char *args[6];
+
+               if (strcspn(editor, "$ \t'") != len) {
+                       /* there are specials */
+                       args[i++] = "sh";
+                       args[i++] = "-c";
+                       args[i++] = "$0 \"$@\"";
+               }
+               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);
@@ -246,7 +258,7 @@ static int git_tag_config(const char *var, const char *value)
 {
        if (!strcmp(var, "user.signingkey")) {
                if (!value)
-                       die("user.signingkey without value");
+                       return config_error_nonbool(value);
                set_signingkey(value);
                return 0;
        }