ref-filter: --format=%(raw) support --perl
Because the perl language can handle binary data correctly, add the function perl_quote_buf_with_len(), which can specify the length of the data and prevent the data from being truncated at '\0' to help `--format="%(raw)"` support `--perl`. Reviewed-by: Jacob Keller <jacob.keller@gmail.com> Helped-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: ZheNing Hu <adlternative@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
bd0708c7eb
commit
7121c4d4e2
15
ref-filter.c
15
ref-filter.c
@ -746,7 +746,10 @@ static void quote_formatting(struct strbuf *s, const char *str, ssize_t len, int
|
||||
sq_quote_buf(s, str);
|
||||
break;
|
||||
case QUOTE_PERL:
|
||||
perl_quote_buf(s, str);
|
||||
if (len < 0)
|
||||
perl_quote_buf(s, str);
|
||||
else
|
||||
perl_quote_buf_with_len(s, str, len);
|
||||
break;
|
||||
case QUOTE_PYTHON:
|
||||
python_quote_buf(s, str);
|
||||
@ -1009,10 +1012,14 @@ int verify_ref_format(struct ref_format *format)
|
||||
at = parse_ref_filter_atom(format, sp + 2, ep, &err);
|
||||
if (at < 0)
|
||||
die("%s", err.buf);
|
||||
if (format->quote_style && used_atom[at].atom_type == ATOM_RAW &&
|
||||
used_atom[at].u.raw_data.option == RAW_BARE)
|
||||
|
||||
if ((format->quote_style == QUOTE_PYTHON ||
|
||||
format->quote_style == QUOTE_SHELL ||
|
||||
format->quote_style == QUOTE_TCL) &&
|
||||
used_atom[at].atom_type == ATOM_RAW &&
|
||||
used_atom[at].u.raw_data.option == RAW_BARE)
|
||||
die(_("--format=%.*s cannot be used with"
|
||||
"--python, --shell, --tcl, --perl"), (int)(ep - sp - 2), sp + 2);
|
||||
"--python, --shell, --tcl"), (int)(ep - sp - 2), sp + 2);
|
||||
cp = ep + 1;
|
||||
|
||||
if (skip_prefix(used_atom[at].name, "color:", &color))
|
||||
|
Reference in New Issue
Block a user