cgtop: correctly order root cgroup always to the top
Internally, we encode the root cgroup as empty string. However, path_compare() is allergic to comparing absolute and relative paths. Let's clean this up, by always uses "/" as path for the root cgroup when comparing.
This commit is contained in:
parent
af77d6f8da
commit
9c6e3e1d3b
|
@ -506,6 +506,10 @@ static int refresh(const char *root, Hashmap *a, Hashmap *b, unsigned iteration)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static const char *empty_to_slash(const char *p) {
|
||||
return isempty(p) ? "/" : p;
|
||||
}
|
||||
|
||||
static int group_compare(const void*a, const void *b) {
|
||||
const Group *x = *(Group**)a, *y = *(Group**)b;
|
||||
|
||||
|
@ -515,9 +519,9 @@ static int group_compare(const void*a, const void *b) {
|
|||
* recursive summing is off, since that is actually
|
||||
* not accumulative for all children. */
|
||||
|
||||
if (path_startswith(y->path, x->path))
|
||||
if (path_startswith(empty_to_slash(y->path), empty_to_slash(x->path)))
|
||||
return -1;
|
||||
if (path_startswith(x->path, y->path))
|
||||
if (path_startswith(empty_to_slash(x->path), empty_to_slash(y->path)))
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -666,7 +670,7 @@ static void display(Hashmap *a) {
|
|||
|
||||
g = array[j];
|
||||
|
||||
path = isempty(g->path) ? "/" : g->path;
|
||||
path = empty_to_slash(g->path);
|
||||
ellipsized = ellipsize(path, path_columns, 33);
|
||||
printf("%-*s", path_columns, ellipsized ?: path);
|
||||
|
||||
|
|
Loading…
Reference in a new issue