On Fri, May 26, 2023 at 1:07 PM Christian Hesse <[email protected]> wrote: > @@ -564,9 +566,11 @@ char *get_mimetype_for_filename(const char *filename) > while (fgets(line, sizeof(line), file)) { > if (!line[0] || line[0] == '#') > continue; > - mimetype = strtok_r(line, " \t\r\n", &saveptr); > - while ((token = strtok_r(NULL, " \t\r\n", &saveptr))) { > - if (!strcasecmp(ext, token)) { > + string_list_split_in_place(&list, line, " \t\r\n", -1); > + string_list_remove_empty_items(&list, 0); > + mimetype = list.items[0].string; > + for (i = 1; i < list.nr; i++) { > + if (!strcasecmp(ext, list.items[i].string)) { > fclose(file); > return xstrdup(mimetype); > }
What's the motivation here exactly? string_list allocates, I believe, for its items array even if you set nostrdup, so that code probably needs a free path. But also, what's the point of doing the splitting up front and then iterating, rather than just munging the string like usual with strtok_r? Jason
