From: Lennart Poettering Date: Wed, 23 Apr 2014 17:05:46 +0000 (+0200) Subject: delta: draw arrows with draw_special_char() X-Git-Tag: v213~332 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=6b01f1d3911bd7c7eadbb8a3b4375bd3ac05c98f;hp=b91a3b02f3be899dd8a2ae22df5be8de78f5a175 delta: draw arrows with draw_special_char() Let's unify generation of unicode chars at one place. Also, don't add an extra space into chars we print, except for the tree chars where this is really necessary. --- diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c index 3d2d08f66..ba236d92b 100644 --- a/src/analyze/analyze.c +++ b/src/analyze/analyze.c @@ -645,7 +645,7 @@ static int list_dependencies_print(const char *name, unsigned int level, unsigne char ts[FORMAT_TIMESPAN_MAX], ts2[FORMAT_TIMESPAN_MAX]; for (i = level; i != 0; i--) - printf("%s", draw_special_char(branches & (1 << (i-1)) ? DRAW_TREE_VERT : DRAW_TREE_SPACE)); + printf("%s", draw_special_char(branches & (1 << (i-1)) ? DRAW_TREE_VERTICAL : DRAW_TREE_SPACE)); printf("%s", draw_special_char(last ? DRAW_TREE_RIGHT : DRAW_TREE_BRANCH)); diff --git a/src/delta/delta.c b/src/delta/delta.c index 8fc37c55f..96a9fa5ee 100644 --- a/src/delta/delta.c +++ b/src/delta/delta.c @@ -85,10 +85,6 @@ static void pager_open_if_enabled(void) { pager_open(false); } -static inline const char* arrow(void) { - return is_locale_utf8() ? "→" : "->"; -} - static int equivalent(const char *a, const char *b) { _cleanup_free_ char *x = NULL, *y = NULL; @@ -109,7 +105,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_highlight_off(), - top, arrow(), bottom); + top, draw_special_char(DRAW_ARROW), bottom); return 1; } @@ -119,7 +115,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_highlight_off(), - top, arrow(), bottom); + top, draw_special_char(DRAW_ARROW), bottom); return 1; } @@ -129,7 +125,7 @@ static int notify_override_redirected(const char *top, const char *bottom) { printf("%s%s%s %s %s %s\n", ansi_highlight(), "[REDIRECTED]", ansi_highlight_off(), - top, arrow(), bottom); + top, draw_special_char(DRAW_ARROW), bottom); return 1; } @@ -139,7 +135,7 @@ static int notify_override_overridden(const char *top, const char *bottom) { printf("%s%s%s %s %s %s\n", ansi_highlight(), "[OVERRIDDEN]", ansi_highlight_off(), - top, arrow(), bottom); + top, draw_special_char(DRAW_ARROW), bottom); return 1; } @@ -149,7 +145,7 @@ static int notify_override_extended(const char *top, const char *bottom) { printf("%s%s%s %s %s %s\n", ansi_highlight(), "[EXTENDED]", ansi_highlight_off(), - top, arrow(), bottom); + top, draw_special_char(DRAW_ARROW), bottom); return 1; } @@ -250,7 +246,7 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const return -ENOMEM; d = p + strlen(toppath) + 1; - log_debug("Adding at top: %s %s %s", d, arrow(), p); + log_debug("Adding at top: %s %s %s", d, draw_special_char(DRAW_ARROW), p); k = hashmap_put(top, d, p); if (k >= 0) { p = strdup(p); @@ -262,7 +258,7 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const return k; } - log_debug("Adding at bottom: %s %s %s", d, arrow(), p); + log_debug("Adding at bottom: %s %s %s", d, draw_special_char(DRAW_ARROW), p); free(hashmap_remove(bottom, d)); k = hashmap_put(bottom, d, p); if (k < 0) { @@ -286,7 +282,7 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const return -ENOMEM; log_debug("Adding to drops: %s %s %s %s %s", - unit, arrow(), basename(p), arrow(), p); + unit, draw_special_char(DRAW_ARROW), basename(p), draw_special_char(DRAW_ARROW), p); k = hashmap_put(h, basename(p), p); if (k < 0) { free(p); @@ -338,7 +334,7 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch if (!p) return -ENOMEM; - log_debug("Adding at top: %s %s %s", basename(p), arrow(), p); + log_debug("Adding at top: %s %s %s", basename(p), draw_special_char(DRAW_ARROW), p); k = hashmap_put(top, basename(p), p); if (k >= 0) { p = strdup(p); @@ -349,7 +345,7 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch return k; } - log_debug("Adding at bottom: %s %s %s", basename(p), arrow(), p); + log_debug("Adding at bottom: %s %s %s", basename(p), draw_special_char(DRAW_ARROW), p); free(hashmap_remove(bottom, basename(p))); k = hashmap_put(bottom, basename(p), p); if (k < 0) { diff --git a/src/libsystemd/sd-bus/bus-dump.c b/src/libsystemd/sd-bus/bus-dump.c index ea81644d4..6f4ce0c42 100644 --- a/src/libsystemd/sd-bus/bus-dump.c +++ b/src/libsystemd/sd-bus/bus-dump.c @@ -54,7 +54,7 @@ int bus_message_dump(sd_bus_message *m, FILE *f, bool with_header) { if (with_header) { fprintf(f, - "%s%s%sType=%s%s%s Endian=%c Flags=%u Version=%u Priority=%lli", + "%s%s%s Type=%s%s%s Endian=%c Flags=%u Version=%u Priority=%lli", m->header->type == SD_BUS_MESSAGE_METHOD_ERROR ? ansi_highlight_red() : m->header->type == SD_BUS_MESSAGE_METHOD_RETURN ? ansi_highlight_green() : m->header->type != SD_BUS_MESSAGE_SIGNAL ? ansi_highlight() : "", draw_special_char(DRAW_TRIANGULAR_BULLET), ansi_highlight_off(), diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c index ee14cee4e..c862ee91f 100644 --- a/src/shared/cgroup-show.c +++ b/src/shared/cgroup-show.c @@ -78,10 +78,12 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi get_process_cmdline(pids[i], n_columns, true, &t); - printf("%s%s%*lu %s\n", - prefix, - draw_special_char(extra ? DRAW_TRIANGULAR_BULLET : - ((more || i < n_pids-1) ? DRAW_TREE_BRANCH : DRAW_TREE_RIGHT)), + if (extra) + printf("%s%s ", prefix, draw_special_char(DRAW_TRIANGULAR_BULLET)); + else + printf("%s%s", prefix, draw_special_char(((more || i < n_pids-1) ? DRAW_TREE_BRANCH : DRAW_TREE_RIGHT))); + + printf("%*lu %s\n", pid_width, (unsigned long) pids[i], strna(t)); @@ -181,7 +183,7 @@ int show_cgroup_by_path(const char *path, const char *prefix, unsigned n_columns basename(last)); if (!p1) { - p1 = strappend(prefix, draw_special_char(DRAW_TREE_VERT)); + p1 = strappend(prefix, draw_special_char(DRAW_TREE_VERTICAL)); if (!p1) return -ENOMEM; } diff --git a/src/shared/util.c b/src/shared/util.c index b6285abb2..5bf9c9fab 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5444,21 +5444,25 @@ out: const char *draw_special_char(DrawSpecialChar ch) { static const char *draw_table[2][_DRAW_SPECIAL_CHAR_MAX] = { + /* UTF-8 */ { - [DRAW_TREE_VERT] = "\342\224\202 ", /* │ */ + [DRAW_TREE_VERTICAL] = "\342\224\202 ", /* │ */ [DRAW_TREE_BRANCH] = "\342\224\234\342\224\200", /* ├─ */ [DRAW_TREE_RIGHT] = "\342\224\224\342\224\200", /* └─ */ [DRAW_TREE_SPACE] = " ", /* */ - [DRAW_TRIANGULAR_BULLET] = "\342\200\243 ", /* ‣ */ - [DRAW_BLACK_CIRCLE] = "\342\227\217 ", /* ● */ + [DRAW_TRIANGULAR_BULLET] = "\342\200\243", /* ‣ */ + [DRAW_BLACK_CIRCLE] = "\342\227\217", /* ● */ + [DRAW_ARROW] = "\342\206\222", /* → */ }, + /* ASCII fallback */ { - [DRAW_TREE_VERT] = "| ", + [DRAW_TREE_VERTICAL] = "| ", [DRAW_TREE_BRANCH] = "|-", [DRAW_TREE_RIGHT] = "`-", [DRAW_TREE_SPACE] = " ", - [DRAW_TRIANGULAR_BULLET] = "> ", - [DRAW_BLACK_CIRCLE] = "* ", + [DRAW_TRIANGULAR_BULLET] = ">", + [DRAW_BLACK_CIRCLE] = "*", + [DRAW_ARROW] = "->", } }; diff --git a/src/shared/util.h b/src/shared/util.h index 5b060ef74..d584a6597 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -681,14 +681,16 @@ void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size, bool is_locale_utf8(void); typedef enum DrawSpecialChar { - DRAW_TREE_VERT, + DRAW_TREE_VERTICAL, DRAW_TREE_BRANCH, DRAW_TREE_RIGHT, DRAW_TREE_SPACE, DRAW_TRIANGULAR_BULLET, DRAW_BLACK_CIRCLE, + DRAW_ARROW, _DRAW_SPECIAL_CHAR_MAX } DrawSpecialChar; + const char *draw_special_char(DrawSpecialChar ch); char *strreplace(const char *text, const char *old_string, const char *new_string); diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 1717c1929..7bc8ece04 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1430,7 +1430,7 @@ static int list_dependencies_print(const char *name, int level, unsigned int bra printf("%s...\n",max_len % 2 ? "" : " "); return 0; } - printf("%s", draw_special_char(branches & (1 << i) ? DRAW_TREE_VERT : DRAW_TREE_SPACE)); + printf("%s", draw_special_char(branches & (1 << i) ? DRAW_TREE_VERTICAL : DRAW_TREE_SPACE)); } len += 2; @@ -1598,9 +1598,9 @@ static int list_dependencies_one( state = check_one_unit(bus, *c, "activating\0active\0reloading\0", true); if (state > 0) - printf("%s%s%s", ansi_highlight_green(), draw_special_char(DRAW_BLACK_CIRCLE), ansi_highlight_off()); + printf("%s%s%s ", ansi_highlight_green(), draw_special_char(DRAW_BLACK_CIRCLE), ansi_highlight_off()); else - printf("%s%s%s", ansi_highlight_red(), draw_special_char(DRAW_BLACK_CIRCLE), ansi_highlight_off()); + printf("%s%s%s ", ansi_highlight_red(), draw_special_char(DRAW_BLACK_CIRCLE), ansi_highlight_off()); r = list_dependencies_print(*c, level, branches, c[1] == NULL); if (r < 0) @@ -1833,7 +1833,7 @@ static void output_machines_list(struct machine_info *machine_infos, unsigned n) on_failed = off_failed = ""; if (circle_len > 0) - printf("%s%s%s", on_state, circle ? draw_special_char(DRAW_BLACK_CIRCLE) : " ", off_state); + printf("%s%s%s ", on_state, circle ? draw_special_char(DRAW_BLACK_CIRCLE) : " ", off_state); if (m->is_host) printf("%-*s (host) %s%-*s%s %s%*u%s %*u\n", @@ -3234,7 +3234,7 @@ static void print_status_info( } else active_on = active_off = ""; - printf("%s%s%s%s", active_on, draw_special_char(DRAW_BLACK_CIRCLE), active_off, strna(i->id)); + printf("%s%s%s %s", active_on, draw_special_char(DRAW_BLACK_CIRCLE), active_off, strna(i->id)); if (i->description && !streq_ptr(i->id, i->description)) printf(" - %s", i->description); @@ -4338,7 +4338,7 @@ static int show_system_status(sd_bus *bus) { } else on = off = ""; - printf("%s%s%s%s\n", on, draw_special_char(DRAW_BLACK_CIRCLE), off, arg_host ? arg_host : hn); + printf("%s%s%s %s\n", on, draw_special_char(DRAW_BLACK_CIRCLE), off, arg_host ? arg_host : hn); printf(" State: %s%s%s\n", on, strna(mi.state), off);