Le lundi 30 mars 2009, Junio C Hamano a écrit : > Christian Couder <chriscool@xxxxxxxxxxxxx> writes: > > This new function unwraps the space separated shell quoted elements in > > its first argument and put a copy of them in the argv array passed as > > its second argument. > > > > Signed-off-by: Christian Couder <chriscool@xxxxxxxxxxxxx> > > --- > > quote.c | 17 +++++++++++++++++ > > quote.h | 2 ++ > > 2 files changed, 19 insertions(+), 0 deletions(-) > > > > diff --git a/quote.c b/quote.c > > index 8cf0ef4..5b12a4a 100644 > > --- a/quote.c > > +++ b/quote.c > > @@ -120,6 +120,23 @@ char *sq_dequote(char *arg) > > return sq_dequote_many(arg, NULL); > > } > > > > +int sq_dequote_to_argv(char *arg, const char ***argv, int *nr, int > > *alloc) +{ > > + char *next = arg; > > + > > + if (!*arg) > > + return 0; > > + do { > > + char *dequoted = sq_dequote_many(next, &next); > > + if (!dequoted) > > + return 1; > > Usually we signal an error with a negative value, e.g. -1. > > > + ALLOC_GROW(*argv, *nr + 1, *alloc); > > + (*argv)[(*nr)++] = xstrdup(dequoted); > > The original sq_dequote() interface takes advantage of the fact that the > result of single-quote unquoting is always shorter than the original and > it can rewrite the argument in-place to return the result. I would > expect dequote_step() to retain that trait and allow the caller to use > its return value without xstrdup(). I thought that it could be dangerous not to use xstrdup, as users of this function might want to free the strings in argv one by one. But I don't care much. Thanks, Christian. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html