int setup_sorting(void) { char *tmp, *tok, *str = strdup(sort_order); int ret = 0; if (str == NULL) { error("Not enough memory to setup sort keys"); return -ENOMEM; } for (tok = strtok_r(str, ", ", &tmp); tok; tok = strtok_r(NULL, ", ", &tmp)) { ret = sort_dimension__add(tok); if (ret == -EINVAL) { error("Invalid --sort key: `%s'", tok); break; } else if (ret == -ESRCH) { error("Unknown --sort key: `%s'", tok); break; } } free(str); return ret; }
void setup_sorting(const char * const usagestr[], const struct option *opts) { char *tmp, *tok, *str = strdup(sort_order); for (tok = strtok_r(str, ", ", &tmp); tok; tok = strtok_r(NULL, ", ", &tmp)) { if (sort_dimension__add(tok) < 0) { error("Unknown --sort key: `%s'", tok); usage_with_options(usagestr, opts); } } free(str); }