Michael Haggerty <mhagger@xxxxxxxxxxxx> 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. -- 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