Re: [PATCH 1/4] quote: implement "sq_dequote_many" to unwrap many args in one string
- From
Christian Couder <chriscool@tuxfamily.org>
- Date
- Mar 31, 2009, 05:04 UTC
- Message-ID
- <200903310704.52864.chriscool@tuxfamily.org>
- In-Reply-To
- <7vocvjjyqa.fsf@gitster.siamese.dyndns.org>
Le lundi 30 mars 2009, Junio C Hamano a écrit :
Show 45 quoted lines
> Christian Couder <chriscool@tuxfamily.org> writes:
> > @@ -92,6 +92,8 @@ char *sq_dequote(char *arg)
> > switch (*++src) {
> > case '\0':
> > *dst = 0;
> > + if (next)
> > + *next = 0;
>
> *next = NULL;
>
> > return arg;
> > case '\\':
> > c = *++src;
> >
> >
> >
> > diff --git a/quote.h b/quote.h
> > index c5eea6f..c2f98e7 100644
> > --- a/quote.h
> > +++ b/quote.h
> > @@ -39,6 +39,14 @@ extern void sq_quote_argv(struct strbuf *, const
> > char **argv, size_t maxlen); */
> > extern char *sq_dequote(char *);
> >
> > +/*
> > + * Same as the above, but can unwraps many arguments in the same
> > string
>
> "can unwrap"
>
> > + * separated by space. "next" is changed to point to the next argument
> > + * that should be passed as first parameter. When there are no more
> > + * arguments to be dequoted, then "next" is changed to point to NULL.
> > + */
> > +extern char *sq_dequote_many(char *arg, char **next);
> > +
> > extern int unquote_c_style(struct strbuf *, const char *quoted, const
> > char **endp); extern size_t quote_c_style(const char *name, struct
> > strbuf *, FILE *, int no_dq); extern void quote_two_c_style(struct
> > strbuf *, const char *, const char *, int);
>
> I think dequote_many() is misnamed, as it only does one but has a
> slightly more helpful interface than the bare sq_dequote() when the
> caller is willing to dequote many. It probably should be called
> dequote_step().Yeah, you are right. But you might want to change the function name in the patch title too.
Thanks, Christian.