summaryrefslogtreecommitdiff
path: root/quote.h
diff options
context:
space:
mode:
authorPierre Habouzit <madcoder@debian.org>2007-09-19 22:42:15 (GMT)
committerJunio C Hamano <gitster@pobox.com>2007-09-21 06:45:49 (GMT)
commit663af3422a648e87945e4d8c0cc3e13671f2bbde (patch)
treedf6555db1747ad987ab7bd7c0160e26f49bd1d7c /quote.h
parent7fb1011e610a28518959b1d2d48cea17ecc32048 (diff)
downloadgit-663af3422a648e87945e4d8c0cc3e13671f2bbde.zip
git-663af3422a648e87945e4d8c0cc3e13671f2bbde.tar.gz
git-663af3422a648e87945e4d8c0cc3e13671f2bbde.tar.bz2
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>
Diffstat (limited to 'quote.h')
-rw-r--r--quote.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/quote.h b/quote.h
index f48a3fc..2769f71 100644
--- a/quote.h
+++ b/quote.h
@@ -44,11 +44,11 @@ extern int add_to_string(char **ptrp, int *sizep, const char *str, int quote);
extern char *sq_dequote(char *);
extern int unquote_c_style(struct strbuf *, const char *quoted, const char **endp);
-extern int quote_c_style(const char *name, char *outbuf, FILE *outfp,
- int nodq);
+extern size_t quote_c_style(const char *name, struct strbuf *, FILE *, int no_dq);
-extern void write_name_quoted(const char *prefix, int prefix_len,
- const char *name, int quote, FILE *out);
+extern void write_name_quoted(const char *name, FILE *, int terminator);
+extern void write_name_quotedpfx(const char *pfx, size_t pfxlen,
+ const char *name, FILE *, int terminator);
/* quoting as a string literal for other languages */
extern void perl_quote_print(FILE *stream, const char *src);