Make private quote_path() in wt-status.c available as quote_path_relative()

Move quote_path() from wt-status.c to quote.c and rename it as
quote_path_relative(), because it is a better name for a public function.

Also, instead of handcrafted quoting, quote_c_style_counted() is now used,
to make its quoting more consistent with the rest of the system, also
honoring core.quotepath specified in configuration.

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Dmitry Potapov
2008-03-07 05:30:58 +03:00
committed by Junio C Hamano
parent 79418599e7
commit a734d0b10b
3 changed files with 48 additions and 45 deletions

View File

@ -7,6 +7,7 @@
#include "diff.h"
#include "revision.h"
#include "diffcore.h"
#include "quote.h"
int wt_status_relative_paths = 1;
int wt_status_use_color = -1;
@ -82,51 +83,7 @@ static void wt_status_print_trailer(struct wt_status *s)
color_fprintf_ln(s->fp, color(WT_STATUS_HEADER), "#");
}
static char *quote_path(const char *in, int len,
struct strbuf *out, const char *prefix)
{
if (len < 0)
len = strlen(in);
strbuf_grow(out, len);
strbuf_setlen(out, 0);
if (prefix) {
int off = 0;
while (prefix[off] && off < len && prefix[off] == in[off])
if (prefix[off] == '/') {
prefix += off + 1;
in += off + 1;
len -= off + 1;
off = 0;
} else
off++;
for (; *prefix; prefix++)
if (*prefix == '/')
strbuf_addstr(out, "../");
}
for ( ; len > 0; in++, len--) {
int ch = *in;
switch (ch) {
case '\n':
strbuf_addstr(out, "\\n");
break;
case '\r':
strbuf_addstr(out, "\\r");
break;
default:
strbuf_addch(out, ch);
continue;
}
}
if (!out->len)
strbuf_addstr(out, "./");
return out->buf;
}
#define quote_path quote_path_relative
static void wt_status_print_filepair(struct wt_status *s,
int t, struct diff_filepair *p)