char *sort_order = default_sort_order;
int sort__need_collapse = 0;
int sort__has_parent = 0;
-int sort_by_sym_first;
+
+enum sort_type sort__first_dimension;
unsigned int dsos__col_width;
unsigned int comms__col_width;
sort__has_parent = 1;
}
- if (list_empty(&hist_entry__sort_list) &&
- !strcmp(sd->name, "symbol"))
- sort_by_sym_first = true;
+ if (list_empty(&hist_entry__sort_list)) {
+ if (!strcmp(sd->name, "pid"))
+ sort__first_dimension = SORT_PID;
+ else if (!strcmp(sd->name, "comm"))
+ sort__first_dimension = SORT_COMM;
+ else if (!strcmp(sd->name, "dso"))
+ sort__first_dimension = SORT_DSO;
+ else if (!strcmp(sd->name, "symbol"))
+ sort__first_dimension = SORT_SYM;
+ else if (!strcmp(sd->name, "parent"))
+ sort__first_dimension = SORT_PARENT;
+ }
list_add_tail(&sd->entry->list, &hist_entry__sort_list);
sd->taken = 1;
return -ESRCH;
}
+
+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);
+}