Full rework of quote_c_style and write_name_quoted.
authorPierre Habouzit <madcoder@debian.org>
Wed, 19 Sep 2007 22:42:15 +0000 (00:42 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 21 Sep 2007 06:45:49 +0000 (23:45 -0700)
commit663af3422a648e87945e4d8c0cc3e13671f2bbde
treedf6555db1747ad987ab7bd7c0160e26f49bd1d7c
parent7fb1011e610a28518959b1d2d48cea17ecc32048
Full rework of quote_c_style and write_name_quoted.

* quote_c_style works on a strbuf instead of a wild buffer.
* quote_c_style is now clever enough to not add double quotes if not needed.

* write_name_quoted inherits those advantages, but also take a different
  set of arguments. Now instead of asking for quotes or not, you pass a
  "terminator". If it's \0 then we assume you don't want to escape, else C
  escaping is performed. In any case, the terminator is also appended to the
  stream. It also no longer takes the prefix/prefix_len arguments, as it's
  seldomly used, and makes some optimizations harder.

* write_name_quotedpfx is created to work like write_name_quoted and take
  the prefix/prefix_len arguments.

Thanks to those API changes, diff.c has somehow lost weight, thanks to the
removal of functions that were wrappers around the old write_name_quoted
trying to give it a semantics like the new one, but performing a lot of
allocations for this goal. Now we always write directly to the stream, no
intermediate allocation is performed.

As a side effect of the refactor in builtin-apply.c, the length of the bar
graphs in diffstats are not affected anymore by the fact that the path was
clipped.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
builtin-apply.c
builtin-blame.c
builtin-check-attr.c
builtin-checkout-index.c
builtin-ls-files.c
builtin-ls-tree.c
combine-diff.c
diff.c
quote.c
quote.h