]> git.ipfire.org Git - thirdparty/git.git/commitdiff
quote_path: give flags parameter to quote_path()
authorJunio C Hamano <gitster@pobox.com>
Thu, 10 Sep 2020 17:01:54 +0000 (10:01 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 10 Sep 2020 17:49:19 +0000 (10:49 -0700)
The quote_path() function computes a path (relative to its base
directory) and c-quotes the result if necessary.  Teach it to take a
flags parameter to allow its behaviour to be enriched later.

No behaviour change intended.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/clean.c
builtin/grep.c
quote.c
quote.h
wt-status.c

index dee44fff6e7035ca0151163061983b02e4ee55c4..687ab473c20c6bee7d578a8650cc906fa3e70184 100644 (file)
@@ -162,7 +162,7 @@ static int remove_dirs(struct strbuf *path, const char *prefix, int force_flag,
        if ((force_flag & REMOVE_DIR_KEEP_NESTED_GIT) &&
            is_nonbare_repository_dir(path)) {
                if (!quiet) {
-                       quote_path(path->buf, prefix, &quoted);
+                       quote_path(path->buf, prefix, &quoted, 0);
                        printf(dry_run ?  _(msg_would_skip_git_dir) : _(msg_skip_git_dir),
                                        quoted.buf);
                }
@@ -177,7 +177,7 @@ static int remove_dirs(struct strbuf *path, const char *prefix, int force_flag,
                res = dry_run ? 0 : rmdir(path->buf);
                if (res) {
                        int saved_errno = errno;
-                       quote_path(path->buf, prefix, &quoted);
+                       quote_path(path->buf, prefix, &quoted, 0);
                        errno = saved_errno;
                        warning_errno(_(msg_warn_remove_failed), quoted.buf);
                        *dir_gone = 0;
@@ -202,7 +202,7 @@ static int remove_dirs(struct strbuf *path, const char *prefix, int force_flag,
                        if (remove_dirs(path, prefix, force_flag, dry_run, quiet, &gone))
                                ret = 1;
                        if (gone) {
-                               quote_path(path->buf, prefix, &quoted);
+                               quote_path(path->buf, prefix, &quoted, 0);
                                string_list_append(&dels, quoted.buf);
                        } else
                                *dir_gone = 0;
@@ -210,11 +210,11 @@ static int remove_dirs(struct strbuf *path, const char *prefix, int force_flag,
                } else {
                        res = dry_run ? 0 : unlink(path->buf);
                        if (!res) {
-                               quote_path(path->buf, prefix, &quoted);
+                               quote_path(path->buf, prefix, &quoted, 0);
                                string_list_append(&dels, quoted.buf);
                        } else {
                                int saved_errno = errno;
-                               quote_path(path->buf, prefix, &quoted);
+                               quote_path(path->buf, prefix, &quoted, 0);
                                errno = saved_errno;
                                warning_errno(_(msg_warn_remove_failed), quoted.buf);
                                *dir_gone = 0;
@@ -238,7 +238,7 @@ static int remove_dirs(struct strbuf *path, const char *prefix, int force_flag,
                        *dir_gone = 1;
                else {
                        int saved_errno = errno;
-                       quote_path(path->buf, prefix, &quoted);
+                       quote_path(path->buf, prefix, &quoted, 0);
                        errno = saved_errno;
                        warning_errno(_(msg_warn_remove_failed), quoted.buf);
                        *dir_gone = 0;
@@ -266,7 +266,7 @@ static void pretty_print_dels(void)
        struct column_options copts;
 
        for_each_string_list_item(item, &del_list) {
-               qname = quote_path(item->string, NULL, &buf);
+               qname = quote_path(item->string, NULL, &buf, 0);
                string_list_append(&list, qname);
        }
 
@@ -753,7 +753,7 @@ static int ask_each_cmd(void)
        for_each_string_list_item(item, &del_list) {
                /* Ctrl-D should stop removing files */
                if (!eof) {
-                       qname = quote_path(item->string, NULL, &buf);
+                       qname = quote_path(item->string, NULL, &buf, 0);
                        /* TRANSLATORS: Make sure to keep [y/N] as is */
                        printf(_("Remove %s [y/N]? "), qname);
                        if (git_read_line_interactively(&confirm) == EOF) {
@@ -1047,19 +1047,19 @@ int cmd_clean(int argc, const char **argv, const char *prefix)
                        if (remove_dirs(&abs_path, prefix, rm_flags, dry_run, quiet, &gone))
                                errors++;
                        if (gone && !quiet) {
-                               qname = quote_path(item->string, NULL, &buf);
+                               qname = quote_path(item->string, NULL, &buf, 0);
                                printf(dry_run ? _(msg_would_remove) : _(msg_remove), qname);
                        }
                } else {
                        res = dry_run ? 0 : unlink(abs_path.buf);
                        if (res) {
                                int saved_errno = errno;
-                               qname = quote_path(item->string, NULL, &buf);
+                               qname = quote_path(item->string, NULL, &buf, 0);
                                errno = saved_errno;
                                warning_errno(_(msg_warn_remove_failed), qname);
                                errors++;
                        } else if (!quiet) {
-                               qname = quote_path(item->string, NULL, &buf);
+                               qname = quote_path(item->string, NULL, &buf, 0);
                                printf(dry_run ? _(msg_would_remove) : _(msg_remove), qname);
                        }
                }
index 9a91ad643a2174961cab8639841a2996a13b764d..c8037388c6e7fd4c62d1a019b1c7b17f020370df 100644 (file)
@@ -319,7 +319,7 @@ static void grep_source_name(struct grep_opt *opt, const char *filename,
        }
 
        if (opt->relative && opt->prefix_length)
-               quote_path(filename + tree_name_len, opt->prefix, out);
+               quote_path(filename + tree_name_len, opt->prefix, out, 0);
        else
                quote_c_style(filename + tree_name_len, out, NULL, 0);
 
diff --git a/quote.c b/quote.c
index 7bb519c1a7d0c23a8d84f0670f8b9ec33fadb554..a86f9f22a2407c4d9e66a65905f2803436eeb4ea 100644 (file)
--- a/quote.c
+++ b/quote.c
@@ -352,7 +352,7 @@ void write_name_quoted_relative(const char *name, const char *prefix,
 }
 
 /* quote path as relative to the given prefix */
-char *quote_path(const char *in, const char *prefix, struct strbuf *out)
+char *quote_path(const char *in, const char *prefix, struct strbuf *out, unsigned flags)
 {
        struct strbuf sb = STRBUF_INIT;
        const char *rel = relative_path(in, prefix, &sb);
diff --git a/quote.h b/quote.h
index 837cb42a71d31cdbf4cd1b4da34e50108c99040e..4687b5daf491e47945d8eb627952aa79ef0803ec 100644 (file)
--- a/quote.h
+++ b/quote.h
@@ -72,7 +72,7 @@ void write_name_quoted_relative(const char *name, const char *prefix,
                                FILE *fp, int terminator);
 
 /* quote path as relative to the given prefix */
-char *quote_path(const char *in, const char *prefix, struct strbuf *out);
+char *quote_path(const char *in, const char *prefix, struct strbuf *out, unsigned flags);
 
 /* quoting as a string literal for other languages */
 void perl_quote_buf(struct strbuf *sb, const char *src);
index 6b875928564fcaf2736e8c9d3aa8ebd1cdcddef0..d6ca7bd52c03b0ee696b8832f6a292d771b77f5d 100644 (file)
@@ -336,7 +336,7 @@ static void wt_longstatus_print_unmerged_data(struct wt_status *s,
                memset(padding, ' ', label_width);
        }
 
-       one = quote_path(it->string, s->prefix, &onebuf);
+       one = quote_path(it->string, s->prefix, &onebuf, 0);
        status_printf(s, color(WT_STATUS_HEADER, s), "\t");
 
        how = wt_status_unmerged_status_string(d->stagemask);
@@ -402,8 +402,8 @@ static void wt_longstatus_print_change_data(struct wt_status *s,
        if (d->rename_status == status)
                one_name = d->rename_source;
 
-       one = quote_path(one_name, s->prefix, &onebuf);
-       two = quote_path(two_name, s->prefix, &twobuf);
+       one = quote_path(one_name, s->prefix, &onebuf, 0);
+       two = quote_path(two_name, s->prefix, &twobuf, 0);
 
        status_printf(s, color(WT_STATUS_HEADER, s), "\t");
        what = wt_status_diff_status_string(status);
@@ -964,7 +964,7 @@ static void wt_longstatus_print_other(struct wt_status *s,
                struct string_list_item *it;
                const char *path;
                it = &(l->items[i]);
-               path = quote_path(it->string, s->prefix, &buf);
+               path = quote_path(it->string, s->prefix, &buf, 0);
                if (column_active(s->colopts)) {
                        string_list_append(&output, path);
                        continue;
@@ -1848,7 +1848,7 @@ static void wt_shortstatus_unmerged(struct string_list_item *it,
        } else {
                struct strbuf onebuf = STRBUF_INIT;
                const char *one;
-               one = quote_path(it->string, s->prefix, &onebuf);
+               one = quote_path(it->string, s->prefix, &onebuf, 0);
                printf(" %s\n", one);
                strbuf_release(&onebuf);
        }
@@ -1877,7 +1877,7 @@ static void wt_shortstatus_status(struct string_list_item *it,
                const char *one;
 
                if (d->rename_source) {
-                       one = quote_path(d->rename_source, s->prefix, &onebuf);
+                       one = quote_path(d->rename_source, s->prefix, &onebuf, 0);
                        if (*one != '"' && strchr(one, ' ') != NULL) {
                                putchar('"');
                                strbuf_addch(&onebuf, '"');
@@ -1886,7 +1886,7 @@ static void wt_shortstatus_status(struct string_list_item *it,
                        printf("%s -> ", one);
                        strbuf_release(&onebuf);
                }
-               one = quote_path(it->string, s->prefix, &onebuf);
+               one = quote_path(it->string, s->prefix, &onebuf, 0);
                if (*one != '"' && strchr(one, ' ') != NULL) {
                        putchar('"');
                        strbuf_addch(&onebuf, '"');
@@ -1905,7 +1905,7 @@ static void wt_shortstatus_other(struct string_list_item *it,
        } else {
                struct strbuf onebuf = STRBUF_INIT;
                const char *one;
-               one = quote_path(it->string, s->prefix, &onebuf);
+               one = quote_path(it->string, s->prefix, &onebuf, 0);
                color_fprintf(s->fp, color(WT_STATUS_UNTRACKED, s), "%s", sign);
                printf(" %s\n", one);
                strbuf_release(&onebuf);
@@ -2222,9 +2222,9 @@ static void wt_porcelain_v2_print_changed_entry(
                 */
                sep_char = '\t';
                eol_char = '\n';
-               path = quote_path(it->string, s->prefix, &buf);
+               path = quote_path(it->string, s->prefix, &buf, 0);
                if (d->rename_source)
-                       path_from = quote_path(d->rename_source, s->prefix, &buf_from);
+                       path_from = quote_path(d->rename_source, s->prefix, &buf_from, 0);
        }
 
        if (path_from)
@@ -2310,7 +2310,7 @@ static void wt_porcelain_v2_print_unmerged_entry(
        if (s->null_termination)
                path_index = it->string;
        else
-               path_index = quote_path(it->string, s->prefix, &buf_index);
+               path_index = quote_path(it->string, s->prefix, &buf_index, 0);
 
        fprintf(s->fp, "%c %s %s %06o %06o %06o %06o %s %s %s %s%c",
                        unmerged_prefix, key, submodule_token,
@@ -2343,7 +2343,7 @@ static void wt_porcelain_v2_print_other(
                path = it->string;
                eol_char = '\0';
        } else {
-               path = quote_path(it->string, s->prefix, &buf);
+               path = quote_path(it->string, s->prefix, &buf, 0);
                eol_char = '\n';
        }