From 65038051854a48ed8c86bfcfdddfee9122fc2cab Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 16 Feb 2022 14:53:34 +0100 Subject: [PATCH] glyph-util: add new glyphs for up/down arrows (cherry picked from commit fc03e80c6b19521ecf4f3af06865b2054e685f9a) Related: #2118297 --- src/analyze/analyze-security.c | 2 +- src/basic/chase-symlinks.c | 2 +- src/basic/glyph-util.c | 10 ++++++++-- src/basic/glyph-util.h | 5 ++++- src/delta/delta.c | 20 ++++++++++---------- src/partition/repart.c | 4 ++-- src/portable/portable.c | 6 +++--- src/portable/portablectl.c | 4 ++-- src/shared/cgroup-show.c | 2 +- src/shared/install.c | 2 +- src/test/test-locale-util.c | 5 ++++- 11 files changed, 37 insertions(+), 25 deletions(-) diff --git a/src/analyze/analyze-security.c b/src/analyze/analyze-security.c index e112922cbf..522d443f8a 100644 --- a/src/analyze/analyze-security.c +++ b/src/analyze/analyze-security.c @@ -1902,7 +1902,7 @@ static int assess(const SecurityInfo *info, name = info->id; printf("\n%s %sOverall exposure level for %s%s: %s%" PRIu64 ".%" PRIu64 " %s%s %s\n", - special_glyph(SPECIAL_GLYPH_ARROW), + special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), ansi_highlight(), name, ansi_normal(), diff --git a/src/basic/chase-symlinks.c b/src/basic/chase-symlinks.c index 344e7e1bb7..61f8b3351b 100644 --- a/src/basic/chase-symlinks.c +++ b/src/basic/chase-symlinks.c @@ -41,7 +41,7 @@ static int log_unsafe_transition(int a, int b, const char *path, unsigned flags) return log_warning_errno(SYNTHETIC_ERRNO(ENOLINK), "Detected unsafe path transition %s (owned by %s) %s %s (owned by %s) during canonicalization of %s.", - strna(n1), strna(user_a), special_glyph(SPECIAL_GLYPH_ARROW), strna(n2), strna(user_b), path); + strna(n1), strna(user_a), special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), strna(n2), strna(user_b), path); } static int log_autofs_mount_point(int fd, const char *path, unsigned flags) { diff --git a/src/basic/glyph-util.c b/src/basic/glyph-util.c index 8810738fc3..4583b7412c 100644 --- a/src/basic/glyph-util.c +++ b/src/basic/glyph-util.c @@ -39,6 +39,7 @@ const char *special_glyph(SpecialGlyph code) { [SPECIAL_GLYPH_TREE_BRANCH] = "|-", [SPECIAL_GLYPH_TREE_RIGHT] = "`-", [SPECIAL_GLYPH_TREE_SPACE] = " ", + [SPECIAL_GLYPH_TREE_TOP] = ",-", [SPECIAL_GLYPH_TRIANGULAR_BULLET] = ">", [SPECIAL_GLYPH_BLACK_CIRCLE] = "*", [SPECIAL_GLYPH_WHITE_CIRCLE] = "*", @@ -51,7 +52,9 @@ const char *special_glyph(SpecialGlyph code) { [SPECIAL_GLYPH_LIGHT_SHADE] = "-", [SPECIAL_GLYPH_DARK_SHADE] = "X", [SPECIAL_GLYPH_SIGMA] = "S", - [SPECIAL_GLYPH_ARROW] = "->", + [SPECIAL_GLYPH_ARROW_RIGHT] = "->", + [SPECIAL_GLYPH_ARROW_UP] = "^", + [SPECIAL_GLYPH_ARROW_DOWN] = "v", [SPECIAL_GLYPH_ELLIPSIS] = "...", [SPECIAL_GLYPH_EXTERNAL_LINK] = "[LNK]", [SPECIAL_GLYPH_ECSTATIC_SMILEY] = ":-]", @@ -75,6 +78,7 @@ const char *special_glyph(SpecialGlyph code) { [SPECIAL_GLYPH_TREE_BRANCH] = "\342\224\234\342\224\200", /* ├─ */ [SPECIAL_GLYPH_TREE_RIGHT] = "\342\224\224\342\224\200", /* └─ */ [SPECIAL_GLYPH_TREE_SPACE] = " ", /* */ + [SPECIAL_GLYPH_TREE_TOP] = "\u250C\342\224\200", /* ┌─ */ /* Single glyphs in both cases */ [SPECIAL_GLYPH_TRIANGULAR_BULLET] = "\342\200\243", /* ‣ */ @@ -89,9 +93,11 @@ const char *special_glyph(SpecialGlyph code) { [SPECIAL_GLYPH_LIGHT_SHADE] = "\342\226\221", /* ░ */ [SPECIAL_GLYPH_DARK_SHADE] = "\342\226\223", /* ▒ */ [SPECIAL_GLYPH_SIGMA] = "\316\243", /* Σ */ + [SPECIAL_GLYPH_ARROW_UP] = "\u2191", /* ↑ (actually called: UPWARDS ARROW) */ + [SPECIAL_GLYPH_ARROW_DOWN] = "\u2193", /* ↓ (actually called: DOWNWARDS ARROW) */ /* Single glyph in Unicode, two in ASCII */ - [SPECIAL_GLYPH_ARROW] = "\342\206\222", /* → (actually called: RIGHTWARDS ARROW) */ + [SPECIAL_GLYPH_ARROW_RIGHT] = "\342\206\222", /* → (actually called: RIGHTWARDS ARROW) */ /* Single glyph in Unicode, three in ASCII */ [SPECIAL_GLYPH_ELLIPSIS] = "\342\200\246", /* … (actually called: HORIZONTAL ELLIPSIS) */ diff --git a/src/basic/glyph-util.h b/src/basic/glyph-util.h index ddee210041..7e0a73842a 100644 --- a/src/basic/glyph-util.h +++ b/src/basic/glyph-util.h @@ -11,6 +11,7 @@ typedef enum SpecialGlyph { SPECIAL_GLYPH_TREE_BRANCH, SPECIAL_GLYPH_TREE_RIGHT, SPECIAL_GLYPH_TREE_SPACE, + SPECIAL_GLYPH_TREE_TOP, SPECIAL_GLYPH_TRIANGULAR_BULLET, SPECIAL_GLYPH_BLACK_CIRCLE, SPECIAL_GLYPH_WHITE_CIRCLE, @@ -20,7 +21,9 @@ typedef enum SpecialGlyph { SPECIAL_GLYPH_MU, SPECIAL_GLYPH_CHECK_MARK, SPECIAL_GLYPH_CROSS_MARK, - SPECIAL_GLYPH_ARROW, + SPECIAL_GLYPH_ARROW_RIGHT, + SPECIAL_GLYPH_ARROW_UP, + SPECIAL_GLYPH_ARROW_DOWN, SPECIAL_GLYPH_ELLIPSIS, SPECIAL_GLYPH_LIGHT_SHADE, SPECIAL_GLYPH_DARK_SHADE, diff --git a/src/delta/delta.c b/src/delta/delta.c index eafe1c05c4..aa5a546bce 100644 --- a/src/delta/delta.c +++ b/src/delta/delta.c @@ -91,7 +91,7 @@ static int notify_override_masked(const char *top, const char *bottom) { printf("%s%s%s %s %s %s\n", ansi_highlight_red(), "[MASKED]", ansi_normal(), - top, special_glyph(SPECIAL_GLYPH_ARROW), bottom); + top, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), bottom); return 1; } @@ -101,7 +101,7 @@ static int notify_override_equivalent(const char *top, const char *bottom) { printf("%s%s%s %s %s %s\n", ansi_highlight_green(), "[EQUIVALENT]", ansi_normal(), - top, special_glyph(SPECIAL_GLYPH_ARROW), bottom); + top, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), bottom); return 1; } @@ -111,7 +111,7 @@ static int notify_override_redirected(const char *top, const char *bottom) { printf("%s%s%s %s %s %s\n", ansi_highlight(), "[REDIRECTED]", ansi_normal(), - top, special_glyph(SPECIAL_GLYPH_ARROW), bottom); + top, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), bottom); return 1; } @@ -121,7 +121,7 @@ static int notify_override_overridden(const char *top, const char *bottom) { printf("%s%s%s %s %s %s\n", ansi_highlight(), "[OVERRIDDEN]", ansi_normal(), - top, special_glyph(SPECIAL_GLYPH_ARROW), bottom); + top, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), bottom); return 1; } @@ -131,7 +131,7 @@ static int notify_override_extended(const char *top, const char *bottom) { printf("%s%s%s %s %s %s\n", ansi_highlight(), "[EXTENDED]", ansi_normal(), - top, special_glyph(SPECIAL_GLYPH_ARROW), bottom); + top, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), bottom); return 1; } @@ -235,7 +235,7 @@ static int enumerate_dir_d( return -ENOMEM; d = p + strlen(toppath) + 1; - log_debug("Adding at top: %s %s %s", d, special_glyph(SPECIAL_GLYPH_ARROW), p); + log_debug("Adding at top: %s %s %s", d, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), p); k = ordered_hashmap_put(top, d, p); if (k >= 0) { p = strdup(p); @@ -247,7 +247,7 @@ static int enumerate_dir_d( return k; } - log_debug("Adding at bottom: %s %s %s", d, special_glyph(SPECIAL_GLYPH_ARROW), p); + log_debug("Adding at bottom: %s %s %s", d, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), p); free(ordered_hashmap_remove(bottom, d)); k = ordered_hashmap_put(bottom, d, p); if (k < 0) { @@ -271,7 +271,7 @@ static int enumerate_dir_d( return -ENOMEM; log_debug("Adding to drops: %s %s %s %s %s", - unit, special_glyph(SPECIAL_GLYPH_ARROW), basename(p), special_glyph(SPECIAL_GLYPH_ARROW), p); + unit, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), basename(p), special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), p); k = ordered_hashmap_put(h, basename(p), p); if (k < 0) { free(p); @@ -347,7 +347,7 @@ static int enumerate_dir( if (!p) return -ENOMEM; - log_debug("Adding at top: %s %s %s", basename(p), special_glyph(SPECIAL_GLYPH_ARROW), p); + log_debug("Adding at top: %s %s %s", basename(p), special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), p); r = ordered_hashmap_put(top, basename(p), p); if (r >= 0) { p = strdup(p); @@ -356,7 +356,7 @@ static int enumerate_dir( } else if (r != -EEXIST) return r; - log_debug("Adding at bottom: %s %s %s", basename(p), special_glyph(SPECIAL_GLYPH_ARROW), p); + log_debug("Adding at bottom: %s %s %s", basename(p), special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), p); free(ordered_hashmap_remove(bottom, basename(p))); r = ordered_hashmap_put(bottom, basename(p), p); if (r < 0) diff --git a/src/partition/repart.c b/src/partition/repart.c index 67e379be55..9f95713130 100644 --- a/src/partition/repart.c +++ b/src/partition/repart.c @@ -1968,9 +1968,9 @@ static int format_size_change(uint64_t from, uint64_t to, char **ret) { if (from == to || to == UINT64_MAX) t = strdup(FORMAT_BYTES(from)); else - t = strjoin(FORMAT_BYTES(from), " ", special_glyph(SPECIAL_GLYPH_ARROW), " ", FORMAT_BYTES(to)); + t = strjoin(FORMAT_BYTES(from), " ", special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), " ", FORMAT_BYTES(to)); } else if (to != UINT64_MAX) - t = strjoin(special_glyph(SPECIAL_GLYPH_ARROW), " ", FORMAT_BYTES(to)); + t = strjoin(special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), " ", FORMAT_BYTES(to)); else { *ret = NULL; return 0; diff --git a/src/portable/portable.c b/src/portable/portable.c index 4c75dc0e0c..c1e253061f 100644 --- a/src/portable/portable.c +++ b/src/portable/portable.c @@ -1011,14 +1011,14 @@ static int install_profile_dropin( r = copy_file_atomic(from, dropin, 0644, 0, 0, COPY_REFLINK); if (r < 0) - return log_debug_errno(r, "Failed to copy %s %s %s: %m", from, special_glyph(SPECIAL_GLYPH_ARROW), dropin); + return log_debug_errno(r, "Failed to copy %s %s %s: %m", from, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), dropin); (void) portable_changes_add(changes, n_changes, PORTABLE_COPY, dropin, from); } else { if (symlink(from, dropin) < 0) - return log_debug_errno(errno, "Failed to link %s %s %s: %m", from, special_glyph(SPECIAL_GLYPH_ARROW), dropin); + return log_debug_errno(errno, "Failed to link %s %s %s: %m", from, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), dropin); (void) portable_changes_add(changes, n_changes, PORTABLE_SYMLINK, dropin, from); } @@ -1188,7 +1188,7 @@ static int install_image_symlink( (void) mkdir_parents(sl, 0755); if (symlink(image_path, sl) < 0) - return log_debug_errno(errno, "Failed to link %s %s %s: %m", image_path, special_glyph(SPECIAL_GLYPH_ARROW), sl); + return log_debug_errno(errno, "Failed to link %s %s %s: %m", image_path, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), sl); (void) portable_changes_add(changes, n_changes, PORTABLE_SYMLINK, sl, image_path); return 0; diff --git a/src/portable/portablectl.c b/src/portable/portablectl.c index f4c57e14ae..585568acc1 100644 --- a/src/portable/portablectl.c +++ b/src/portable/portablectl.c @@ -433,12 +433,12 @@ static int print_changes(sd_bus_message *m) { break; if (streq(type, "symlink")) - log_info("Created symlink %s %s %s.", path, special_glyph(SPECIAL_GLYPH_ARROW), source); + log_info("Created symlink %s %s %s.", path, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), source); else if (streq(type, "copy")) { if (isempty(source)) log_info("Copied %s.", path); else - log_info("Copied %s %s %s.", source, special_glyph(SPECIAL_GLYPH_ARROW), path); + log_info("Copied %s %s %s.", source, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), path); } else if (streq(type, "unlink")) log_info("Removed %s.", path); else if (streq(type, "write")) diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c index 48dd4d8001..f18420c1b6 100644 --- a/src/shared/cgroup-show.c +++ b/src/shared/cgroup-show.c @@ -228,7 +228,7 @@ static int show_cgroup_name( printf("%s%s%s %s%s%s: %s\n", prefix, glyph == SPECIAL_GLYPH_TREE_BRANCH ? special_glyph(SPECIAL_GLYPH_TREE_VERTICAL) : " ", - special_glyph(SPECIAL_GLYPH_ARROW), + special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), ansi_blue(), x, ansi_normal(), y); } diff --git a/src/shared/install.c b/src/shared/install.c index eb5c3d5f91..4c7d0d6cad 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -335,7 +335,7 @@ void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *chang if (!quiet) log_info("Created symlink %s %s %s.", changes[i].path, - special_glyph(SPECIAL_GLYPH_ARROW), + special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), changes[i].source); break; case UNIT_FILE_UNLINK: diff --git a/src/test/test-locale-util.c b/src/test/test-locale-util.c index 3243e3c567..6ec3f7f00b 100644 --- a/src/test/test-locale-util.c +++ b/src/test/test-locale-util.c @@ -91,13 +91,16 @@ TEST(dump_special_glyphs) { dump_glyph(SPECIAL_GLYPH_TREE_BRANCH); dump_glyph(SPECIAL_GLYPH_TREE_RIGHT); dump_glyph(SPECIAL_GLYPH_TREE_SPACE); + dump_glyph(SPECIAL_GLYPH_TREE_TOP); dump_glyph(SPECIAL_GLYPH_TRIANGULAR_BULLET); dump_glyph(SPECIAL_GLYPH_BLACK_CIRCLE); dump_glyph(SPECIAL_GLYPH_WHITE_CIRCLE); dump_glyph(SPECIAL_GLYPH_MULTIPLICATION_SIGN); dump_glyph(SPECIAL_GLYPH_CIRCLE_ARROW); dump_glyph(SPECIAL_GLYPH_BULLET); - dump_glyph(SPECIAL_GLYPH_ARROW); + dump_glyph(SPECIAL_GLYPH_ARROW_RIGHT); + dump_glyph(SPECIAL_GLYPH_ARROW_UP); + dump_glyph(SPECIAL_GLYPH_ARROW_DOWN); dump_glyph(SPECIAL_GLYPH_ELLIPSIS); dump_glyph(SPECIAL_GLYPH_MU); dump_glyph(SPECIAL_GLYPH_CHECK_MARK);