Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Please login to access the resource
SUSE:SLE-12-SP1:GA
psmisc.18695
psmisc-22.21-pstree.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File psmisc-22.21-pstree.patch of Package psmisc.18695
--- src/pstree.c +++ src/pstree.c 2014-03-24 15:54:58.905193559 +0000 @@ -69,6 +69,7 @@ extern const char *__progname; #define UTF_HD "\342\224\254" /* U+252C, Horizontal and down */ #define VT_BEG "\033(0\017" /* use graphic chars */ +#define VT_LEN 4 #define VT_END "\033(B" /* back to normal char set */ #define VT_V "x" /* see UTF definitions above */ #define VT_VR "t" @@ -397,6 +398,27 @@ static void out_scontext(security_contex out_string("'"); } +/* + * Only affects vt100 line drawing mode: Do not count the strlen of + * VT_BEG to prevent doing end-of-line way too early: + */ +static void +out_sym (const char *str) +{ + int seq = 0; + if (sym == &sym_vt100 && *str == '\033') { + seq = 1; + if (cur_x <= output_width || !trunc) + cur_x -= VT_LEN; + } + out_string(str); + if (seq) { + str = VT_END; + while (*str) + putchar (*str++); + } +} + static void out_newline(void) { if (last_char && cur_x == output_width) @@ -605,11 +627,12 @@ dump_tree(PROC * current, int level, int for (lvl = 0; lvl < level; lvl++) { for (i = width[lvl] + 1; i; i--) out_char(' '); - out_string(lvl == - level - - 1 ? last ? sym->last_2 : sym->branch_2 : more[lvl + - 1] ? - sym->vert_2 : sym->empty_2); + /* + * Replace all three symbol-drawing calls with calls to out_sym() + * to handle VT100 line drawing sequences if VT100 mode is active: + */ + out_sym(lvl == level - 1 ? last ? sym->last_2 : sym->branch_2 : + more[lvl + 1] ? sym->vert_2 : sym->empty_2); } if (rep < 2) add = 0; @@ -714,7 +737,7 @@ dump_tree(PROC * current, int level, int } width[level] = comm_len + cur_x - offset + add; if (cur_x >= output_width && trunc) { - out_string(sym->first_3); + out_sym(sym->first_3); out_string("+"); out_newline(); return; @@ -736,7 +759,7 @@ dump_tree(PROC * current, int level, int } } if (first) { - out_string(next ? sym->first_3 : sym->single_3); + out_sym(next ? sym->first_3 : sym->single_3); first = 0; } dump_tree(walk->child, level + 1, count + 1,
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor