diff options
author | Pierre Habouzit <madcoder@debian.org> | 2007-09-20 00:42:13 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-09-21 03:31:18 -0700 |
commit | 7a33bcbe802080f3a926e93d66b65ff7c5e8c5ed (patch) | |
tree | ed4a77eef3125b2b9bceb5adb63d8df51fcacc9f /git.c | |
parent | 663af3422a648e87945e4d8c0cc3e13671f2bbde (diff) | |
download | git-7a33bcbe802080f3a926e93d66b65ff7c5e8c5ed.tar.gz |
sq_quote_argv and add_to_string rework with strbuf's.
* sq_quote_buf is made public, and works on a strbuf.
* sq_quote_argv also works on a strbuf.
* make sq_quote_argv take a "maxlen" argument to check the buffer won't grow
too big.
Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git.c')
-rw-r--r-- | git.c | 16 |
1 files changed, 5 insertions, 11 deletions
@@ -187,19 +187,13 @@ static int handle_alias(int *argcp, const char ***argv) if (alias_string) { if (alias_string[0] == '!') { if (*argcp > 1) { - int i, sz = PATH_MAX; - char *s = xmalloc(sz), *new_alias = s; + struct strbuf buf; - add_to_string(&s, &sz, alias_string, 0); + strbuf_init(&buf, PATH_MAX); + strbuf_addstr(&buf, alias_string); + sq_quote_argv(&buf, (*argv) + 1, *argcp - 1, PATH_MAX); free(alias_string); - alias_string = new_alias; - for (i = 1; i < *argcp && - !add_to_string(&s, &sz, " ", 0) && - !add_to_string(&s, &sz, (*argv)[i], 1) - ; i++) - ; /* do nothing */ - if (!sz) - die("Too many or long arguments"); + alias_string = buf.buf; } trace_printf("trace: alias to shell cmd: %s => %s\n", alias_command, alias_string + 1); |