Re: [PATCH 1/4] Add a new function, string_list_split_in_place()
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 10, 2012, 16:09 UTC
- Message-ID
- <7vd31tq2qf.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <504DD3A5.8000201@alum.mit.edu>
Michael Haggerty <mhagger@alum.mit.edu> writes:
Show 24 quoted lines
> OK, so the bottom line would be to have two versions of the function.
> One takes a (const char *) and *requires* strdup_strings to be set on
> its input list:
>
> int string_list_split(struct string_list *list, const char *string,
> int delim, int maxsplit)
> {
> assert(list->strdup_strings);
> ...
> }
>
> The other takes a (char *) and modifies it in-place, and maybe even
> requires strdup_strings to be false on its input list:
>
> int string_list_split_in_place(struct string_list *list, char *string,
> int delim, int maxsplit)
> {
> /* not an error per se but a strong suggestion of one: */
> assert(!list->strdup_strings);
> ...
> }
>
> (The latter (modulo assert) is the one that I have implemented, but it
> might not be needed immediately.) Do you agree?OK; I do not offhand know which one you immediately needed, but I think that is a sensible way to structure the API.
Show 6 quoted lines
> [1] A case I can think of would be parsing a format like > > NUMPARENTS [PARENT...] SUMMARY > > where "string_list_split(list, rest_of_line, ' ', numparents)" does the > right thing even if numparents==0.
OK.