Re: [PATCH 1/4] Add a new function, string_list_split_in_place()
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:54:42
Michael Haggerty [off-list ref] writes:
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.
[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.