]> git.ipfire.org Git - thirdparty/git.git/commitdiff
quote: turn 'nodq' parameter into a set of flags
authorJunio C Hamano <gitster@pobox.com>
Thu, 10 Sep 2020 17:01:59 +0000 (10:01 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 10 Sep 2020 20:08:07 +0000 (13:08 -0700)
quote_c_style() and its friend quote_two_c_style() both take an
optional "please omit the double quotes around the quoted body"
parameter.  Turn it into a flag word, assign one bit out of it,
and call it CQUOTE_NODQ bit.

No behaviour change intended.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff.c
quote.c
quote.h

diff --git a/diff.c b/diff.c
index 0299a730795185db71341f5d7b277205604cac59..e7d6e60b23e832aecd6d0b144bf0116e1a575bcd 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -482,14 +482,14 @@ int git_diff_basic_config(const char *var, const char *value, void *cb)
 
 static char *quote_two(const char *one, const char *two)
 {
-       int need_one = quote_c_style(one, NULL, NULL, 1);
-       int need_two = quote_c_style(two, NULL, NULL, 1);
+       int need_one = quote_c_style(one, NULL, NULL, CQUOTE_NODQ);
+       int need_two = quote_c_style(two, NULL, NULL, CQUOTE_NODQ);
        struct strbuf res = STRBUF_INIT;
 
        if (need_one + need_two) {
                strbuf_addch(&res, '"');
-               quote_c_style(one, &res, NULL, 1);
-               quote_c_style(two, &res, NULL, 1);
+               quote_c_style(one, &res, NULL, CQUOTE_NODQ);
+               quote_c_style(two, &res, NULL, CQUOTE_NODQ);
                strbuf_addch(&res, '"');
        } else {
                strbuf_addstr(&res, one);
diff --git a/quote.c b/quote.c
index 192e2ee9bae3a6e7b0d8a92b1fed2ee08ac69a9b..69f4ca45da2040fd64bf060d574a474359d9b98c 100644 (file)
--- a/quote.c
+++ b/quote.c
@@ -256,7 +256,7 @@ static size_t next_quote_pos(const char *s, ssize_t maxlen)
  *     Return value is the same as in (1).
  */
 static size_t quote_c_style_counted(const char *name, ssize_t maxlen,
-                                   struct strbuf *sb, FILE *fp, int no_dq)
+                                   struct strbuf *sb, FILE *fp, unsigned flags)
 {
 #undef EMIT
 #define EMIT(c)                                 \
@@ -272,6 +272,7 @@ static size_t quote_c_style_counted(const char *name, ssize_t maxlen,
                count += (l);                           \
        } while (0)
 
+       int no_dq = !!(flags & CQUOTE_NODQ);
        size_t len, count = 0;
        const char *p = name;
 
@@ -309,19 +310,21 @@ static size_t quote_c_style_counted(const char *name, ssize_t maxlen,
        return count;
 }
 
-size_t quote_c_style(const char *name, struct strbuf *sb, FILE *fp, int nodq)
+size_t quote_c_style(const char *name, struct strbuf *sb, FILE *fp, unsigned flags)
 {
-       return quote_c_style_counted(name, -1, sb, fp, nodq);
+       return quote_c_style_counted(name, -1, sb, fp, flags);
 }
 
-void quote_two_c_style(struct strbuf *sb, const char *prefix, const char *path, int nodq)
+void quote_two_c_style(struct strbuf *sb, const char *prefix, const char *path,
+                      unsigned flags)
 {
+       int nodq = !!(flags & CQUOTE_NODQ);
        if (quote_c_style(prefix, NULL, NULL, 0) ||
            quote_c_style(path, NULL, NULL, 0)) {
                if (!nodq)
                        strbuf_addch(sb, '"');
-               quote_c_style(prefix, sb, NULL, 1);
-               quote_c_style(path, sb, NULL, 1);
+               quote_c_style(prefix, sb, NULL, CQUOTE_NODQ);
+               quote_c_style(path, sb, NULL, CQUOTE_NODQ);
                if (!nodq)
                        strbuf_addch(sb, '"');
        } else {
@@ -367,7 +370,8 @@ char *quote_path(const char *in, const char *prefix, struct strbuf *out, unsigne
         */
        if (force_dq)
                strbuf_addch(out, '"');
-       quote_c_style_counted(rel, strlen(rel), out, NULL, force_dq);
+       quote_c_style_counted(rel, strlen(rel), out, NULL,
+                             force_dq ? CQUOTE_NODQ : 0);
        if (force_dq)
                strbuf_addch(out, '"');
        strbuf_release(&sb);
diff --git a/quote.h b/quote.h
index 1918d1e00ec7d595082b5c9cda2640257c2b7ba2..4b72a583cfdadd05d2892e1e4c712cd00a52bd31 100644 (file)
--- a/quote.h
+++ b/quote.h
@@ -64,8 +64,11 @@ struct strvec;
 int sq_dequote_to_strvec(char *arg, struct strvec *);
 
 int unquote_c_style(struct strbuf *, const char *quoted, const char **endp);
-size_t quote_c_style(const char *name, struct strbuf *, FILE *, int no_dq);
-void quote_two_c_style(struct strbuf *, const char *, const char *, int);
+
+/* Bits in the flags parameter to quote_c_style() */
+#define CQUOTE_NODQ 01
+size_t quote_c_style(const char *name, struct strbuf *, FILE *, unsigned);
+void quote_two_c_style(struct strbuf *, const char *, const char *, unsigned);
 
 void write_name_quoted(const char *name, FILE *, int terminator);
 void write_name_quoted_relative(const char *name, const char *prefix,