util: nicer tree drawings
Draw trees more similar to pstree/findmnt/lsblk/...
This commit is contained in:
parent
a9cdc94f7f
commit
45a5ff0de7
|
@ -105,8 +105,8 @@ static int show_sysfs_one(
|
||||||
}
|
}
|
||||||
|
|
||||||
k = ellipsize(sysfs, n_columns, 20);
|
k = ellipsize(sysfs, n_columns, 20);
|
||||||
printf("%s%s %s\n", prefix, draw_special_char(lookahead ? DRAW_BOX_VERT_AND_RIGHT : DRAW_BOX_UP_AND_RIGHT),
|
printf("%s%s%s\n", prefix, draw_special_char(lookahead ? DRAW_TREE_BRANCH : DRAW_TREE_RIGHT),
|
||||||
k ? k : sysfs);
|
k ? k : sysfs);
|
||||||
free(k);
|
free(k);
|
||||||
|
|
||||||
if (asprintf(&l,
|
if (asprintf(&l,
|
||||||
|
@ -118,8 +118,8 @@ static int show_sysfs_one(
|
||||||
}
|
}
|
||||||
|
|
||||||
k = ellipsize(l, n_columns, 70);
|
k = ellipsize(l, n_columns, 70);
|
||||||
printf("%s%s %s\n", prefix, lookahead ? draw_special_char(DRAW_BOX_VERT) : " ",
|
printf("%s%s%s\n", prefix, lookahead ? draw_special_char(DRAW_TREE_VERT) : " ",
|
||||||
k ? k : l);
|
k ? k : l);
|
||||||
free(k);
|
free(k);
|
||||||
free(l);
|
free(l);
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@ static int show_sysfs_one(
|
||||||
if (*item) {
|
if (*item) {
|
||||||
char *p;
|
char *p;
|
||||||
|
|
||||||
p = strjoin(prefix, lookahead ? draw_special_char(DRAW_BOX_VERT) : " ", " ", NULL);
|
p = strappend(prefix, lookahead ? draw_special_char(DRAW_TREE_VERT) : " ");
|
||||||
show_sysfs_one(udev, seat, item, sysfs, p ? p : prefix, n_columns - 2);
|
show_sysfs_one(udev, seat, item, sysfs, p ? p : prefix, n_columns - 2);
|
||||||
free(p);
|
free(p);
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,10 +86,10 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi
|
||||||
|
|
||||||
get_process_cmdline(pids[i], n_columns, true, &t);
|
get_process_cmdline(pids[i], n_columns, true, &t);
|
||||||
|
|
||||||
printf("%s%s %*lu %s\n",
|
printf("%s%s%*lu %s\n",
|
||||||
prefix,
|
prefix,
|
||||||
draw_special_char(extra ? DRAW_TRIANGULAR_BULLET :
|
draw_special_char(extra ? DRAW_TRIANGULAR_BULLET :
|
||||||
((more || i < n_pids-1) ? DRAW_BOX_VERT_AND_RIGHT : DRAW_BOX_UP_AND_RIGHT)),
|
((more || i < n_pids-1) ? DRAW_TREE_BRANCH : DRAW_TREE_RIGHT)),
|
||||||
pid_width,
|
pid_width,
|
||||||
(unsigned long) pids[i],
|
(unsigned long) pids[i],
|
||||||
strna(t));
|
strna(t));
|
||||||
|
@ -208,11 +208,11 @@ int show_cgroup_by_path(const char *path, const char *prefix, unsigned n_columns
|
||||||
}
|
}
|
||||||
|
|
||||||
if (last) {
|
if (last) {
|
||||||
printf("%s%s %s\n", prefix, draw_special_char(DRAW_BOX_VERT_AND_RIGHT),
|
printf("%s%s%s\n", prefix, draw_special_char(DRAW_TREE_BRANCH),
|
||||||
path_get_file_name(last));
|
path_get_file_name(last));
|
||||||
|
|
||||||
if (!p1) {
|
if (!p1) {
|
||||||
p1 = strjoin(prefix, draw_special_char(DRAW_BOX_VERT), " ", NULL);
|
p1 = strappend(prefix, draw_special_char(DRAW_TREE_VERT));
|
||||||
if (!p1) {
|
if (!p1) {
|
||||||
free(k);
|
free(k);
|
||||||
r = -ENOMEM;
|
r = -ENOMEM;
|
||||||
|
@ -234,8 +234,8 @@ int show_cgroup_by_path(const char *path, const char *prefix, unsigned n_columns
|
||||||
show_cgroup_one_by_path(path, prefix, n_columns, !!last, kernel_threads);
|
show_cgroup_one_by_path(path, prefix, n_columns, !!last, kernel_threads);
|
||||||
|
|
||||||
if (last) {
|
if (last) {
|
||||||
printf("%s%s %s\n", prefix, draw_special_char(DRAW_BOX_UP_AND_RIGHT),
|
printf("%s%s%s\n", prefix, draw_special_char(DRAW_TREE_RIGHT),
|
||||||
path_get_file_name(last));
|
path_get_file_name(last));
|
||||||
|
|
||||||
if (!p2) {
|
if (!p2) {
|
||||||
p2 = strappend(prefix, " ");
|
p2 = strappend(prefix, " ");
|
||||||
|
|
|
@ -6148,16 +6148,16 @@ out:
|
||||||
const char *draw_special_char(DrawSpecialChar ch) {
|
const char *draw_special_char(DrawSpecialChar ch) {
|
||||||
static const char *draw_table[2][_DRAW_SPECIAL_CHAR_MAX] = {
|
static const char *draw_table[2][_DRAW_SPECIAL_CHAR_MAX] = {
|
||||||
/* UTF-8 */ {
|
/* UTF-8 */ {
|
||||||
[DRAW_BOX_VERT] = "\342\224\202", /* │ */
|
[DRAW_TREE_VERT] = "\342\224\202 ", /* │ */
|
||||||
[DRAW_BOX_VERT_AND_RIGHT] = "\342\224\234", /* ├ */
|
[DRAW_TREE_BRANCH] = "\342\224\234\342\224\200", /* ├─ */
|
||||||
[DRAW_BOX_UP_AND_RIGHT] = "\342\224\224", /* └ */
|
[DRAW_TREE_RIGHT] = "\342\224\224\342\224\200", /* └─ */
|
||||||
[DRAW_TRIANGULAR_BULLET] = "\342\200\243", /* ‣ */
|
[DRAW_TRIANGULAR_BULLET] = "\342\200\243 ", /* ‣ */
|
||||||
},
|
},
|
||||||
/* ASCII fallback */ {
|
/* ASCII fallback */ {
|
||||||
[DRAW_BOX_VERT] = "|",
|
[DRAW_TREE_VERT] = "| ",
|
||||||
[DRAW_BOX_VERT_AND_RIGHT] = "+",
|
[DRAW_TREE_BRANCH] = "|-",
|
||||||
[DRAW_BOX_UP_AND_RIGHT] = "\\",
|
[DRAW_TREE_RIGHT] = "`-",
|
||||||
[DRAW_TRIANGULAR_BULLET] = ">",
|
[DRAW_TRIANGULAR_BULLET] = "> ",
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -604,9 +604,9 @@ void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size,
|
||||||
bool is_locale_utf8(void);
|
bool is_locale_utf8(void);
|
||||||
|
|
||||||
typedef enum DrawSpecialChar {
|
typedef enum DrawSpecialChar {
|
||||||
DRAW_BOX_VERT,
|
DRAW_TREE_VERT,
|
||||||
DRAW_BOX_VERT_AND_RIGHT,
|
DRAW_TREE_BRANCH,
|
||||||
DRAW_BOX_UP_AND_RIGHT,
|
DRAW_TREE_RIGHT,
|
||||||
DRAW_TRIANGULAR_BULLET,
|
DRAW_TRIANGULAR_BULLET,
|
||||||
_DRAW_SPECIAL_CHAR_MAX
|
_DRAW_SPECIAL_CHAR_MAX
|
||||||
} DrawSpecialChar;
|
} DrawSpecialChar;
|
||||||
|
|
Loading…
Reference in New Issue