From: WaLyong Cho Date: Wed, 12 Nov 2014 10:49:32 +0000 (+0900) Subject: bootchart: escape non printable process name X-Git-Tag: v218~124 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=3f18c60b2e09d1191ffede3aeabd967b57a1f918 bootchart: escape non printable process name --- diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index faf377e50..e5569e162 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -39,6 +39,7 @@ #include "svg.h" #include "bootchart.h" #include "list.h" +#include "utf8.h" #define time_to_graph(t) ((t) * arg_scale_x) #define ps_to_graph(n) ((n) * arg_scale_y) @@ -1006,12 +1007,15 @@ static void svg_ps_bars(void) { /* pass 2 - ps boxes */ ps = ps_first; while ((ps = get_next_ps(ps))) { - _cleanup_free_ char *enc_name = NULL; + _cleanup_free_ char *enc_name = NULL, *escaped = NULL; double endtime; double starttime; int t; - enc_name = xml_comment_encode(ps->name); + if (!utf8_is_printable(ps->name, strlen(ps->name))) + escaped = utf8_escape_non_printable(ps->name); + + enc_name = xml_comment_encode(escaped ? escaped : ps->name); if (!enc_name) continue; @@ -1100,7 +1104,7 @@ static void svg_ps_bars(void) { svg(" [%i]%.03fs %s\n", time_to_graph(w - graph_start) + 5.0, ps_to_graph(j) + 14.0, - ps->name, + escaped ? escaped : ps->name, ps->pid, (ps->last->runtime - ps->first->runtime) / 1000000000.0, arg_show_cgroup ? ps->cgroup : "");