]> git.ipfire.org Git - thirdparty/git.git/commitdiff
environment: store comment_line_char as a string
authorJeff King <peff@peff.net>
Tue, 12 Mar 2024 09:17:24 +0000 (05:17 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 12 Mar 2024 20:28:10 +0000 (13:28 -0700)
We'd like to eventually support multi-byte comment prefixes, but the
comment_line_char variable is referenced in many spots, making the
transition difficult.

Let's start by storing the character in a NUL-terminated string. That
will let us switch code over incrementally to the string format, and we
can easily support the existing code with a macro wrapper (since we'll
continue to allow only a single-byte prefix, this will behave
identically).

Once all references to the "char" variable have been converted, we can
drop it and enable longer strings.

We'll still have to touch all of the spots that create or set the
variable in this patch, but there are only a few (reading the config,
and the "auto" character selector).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/commit.c
config.c
environment.c
environment.h

index d496980421eefd0fef098375b3e47cc44eed4797..d8abbe48b17b9b63f47b59013ed61bcfcde4ddd4 100644 (file)
@@ -685,7 +685,7 @@ static void adjust_comment_line_char(const struct strbuf *sb)
        const char *p;
 
        if (!memchr(sb->buf, candidates[0], sb->len)) {
-               comment_line_char = candidates[0];
+               comment_line_str = xstrfmt("%c", candidates[0]);
                return;
        }
 
@@ -706,7 +706,7 @@ static void adjust_comment_line_char(const struct strbuf *sb)
        if (!*p)
                die(_("unable to select a comment character that is not used\n"
                      "in the current commit message"));
-       comment_line_char = *p;
+       comment_line_str = xstrfmt("%c", *p);
 }
 
 static void prepare_amend_commit(struct commit *commit, struct strbuf *sb,
index f56163137446887f90a07aba8310e82b174d403d..7e5dbca4bdb792a9f4ead8223a76f6db704509ae 100644 (file)
--- a/config.c
+++ b/config.c
@@ -1568,7 +1568,7 @@ static int git_default_core_config(const char *var, const char *value,
                else if (value[0] && !value[1]) {
                        if (value[0] == '\n')
                                return error(_("core.commentChar cannot be newline"));
-                       comment_line_char = value[0];
+                       comment_line_str = xstrfmt("%c", value[0]);
                        auto_comment_line_char = 0;
                } else
                        return error(_("core.commentChar should only be one ASCII character"));
index 90632a39bc995af8bf56166b4d89bba5d6dd5272..0a9f5db407d19a8f7ded4b464bc1e47482d119de 100644 (file)
@@ -110,7 +110,7 @@ int protect_ntfs = PROTECT_NTFS_DEFAULT;
  * The character that begins a commented line in user-editable file
  * that is subject to stripspace.
  */
-char comment_line_char = '#';
+const char *comment_line_str = "#";
 int auto_comment_line_char;
 
 /* Parallel index stat data preload? */
index e5351c9dd95ea6e7afe77b1db466d6ab30310491..3496474cce99f45febb51be7a58e8b65636c1017 100644 (file)
@@ -8,7 +8,8 @@ struct strvec;
  * The character that begins a commented line in user-editable file
  * that is subject to stripspace.
  */
-extern char comment_line_char;
+#define comment_line_char (comment_line_str[0])
+extern const char *comment_line_str;
 extern int auto_comment_line_char;
 
 /*