From: Olivier Marin Date: Sun, 29 Jun 2008 14:05:55 GMT Subject: Re: [PATCH 01/15] Move split_cmdline() to alias.c Message-ID: <486796C3.7040304@free.fr> In-Reply-To: <58b2c36de6a6f51a562da303695482bea567f4bf.1214581610.git.vmiklos@frugalware.org> Miklos Vajna a écrit : > split_cmdline() is currently used for aliases only, but later it can be > useful for other builtins as well. Move it to alias.c for now, > indicating that originally it's for aliases, but we'll have it in libgit > this way. This function does not trim cmdline. Perhaps, the following patch can be inserted after 1/15. -- >8 -- From: Olivier Marin Date: Sat, 28 Jun 2008 13:06:21 +0200 Subject: [PATCH] split_cmdline(): ignore whitespace at start/end of cmdline Signed-off-by: Olivier Marin --- alias.c | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-) diff --git a/alias.c b/alias.c index ccb1108..7b69d18 100644 --- a/alias.c +++ b/alias.c @@ -24,14 +24,16 @@ char *alias_lookup(const char *alias) int split_cmdline(char *cmdline, const char ***argv) { - int src, dst, count = 0, size = 16; + int src = 0, dst, count = 0, size = 16; char quoted = 0; *argv = xmalloc(sizeof(char*) * size); /* split alias_string */ - (*argv)[count++] = cmdline; - for (src = dst = 0; cmdline[src];) { + while (cmdline[src] && isspace(cmdline[src])) + src++; + (*argv)[count++] = cmdline + src; + for (dst = src; cmdline[src];) { char c = cmdline[src]; if (!quoted && isspace(c)) { cmdline[dst++] = 0; @@ -42,7 +44,8 @@ int split_cmdline(char *cmdline, const char ***argv) size += 16; *argv = xrealloc(*argv, sizeof(char*) * size); } - (*argv)[count++] = cmdline + dst; + if (cmdline[src]) + (*argv)[count++] = cmdline + dst; } else if (!quoted && (c == '\'' || c == '"')) { quoted = c; src++; -- 1.5.6.1.103.g191a2.dirty