it* sacc + cursorline and uri preview Err codevoid.de 70 i Err codevoid.de 70 hgit clone git://git.codevoid.de/sacc-sdk URL:git://git.codevoid.de/sacc-sdk codevoid.de 70 1Log /git/sacc-sdk/log.gph codevoid.de 70 1Files /git/sacc-sdk/files.gph codevoid.de 70 1Refs /git/sacc-sdk/refs.gph codevoid.de 70 1LICENSE /git/sacc-sdk/file/LICENSE.gph codevoid.de 70 i--- Err codevoid.de 70 1commit a0ef31d2b7c3849f00ab3e2cd2e6b83df4df35f8 /git/sacc-sdk/commit/a0ef31d2b7c3849f00ab3e2cd2e6b83df4df35f8.gph codevoid.de 70 1parent 3eabb27085c4725068d843aed2168af1e6834964 /git/sacc-sdk/commit/3eabb27085c4725068d843aed2168af1e6834964.gph codevoid.de 70 hAuthor: Quentin Rameau URL:mailto:quinq@fifth.space codevoid.de 70 iDate: Wed, 30 Aug 2017 17:57:24 +0200 Err codevoid.de 70 i Err codevoid.de 70 iClear status line after printing content in TUI Err codevoid.de 70 i Err codevoid.de 70 iDiffstat: Err codevoid.de 70 i M ui_ti.c | 40 +++++++++++++++++++------------ Err codevoid.de 70 i Err codevoid.de 70 i1 file changed, 25 insertions(+), 15 deletions(-) Err codevoid.de 70 i--- Err codevoid.de 70 1diff --git a/ui_ti.c b/ui_ti.c /git/sacc-sdk/file/ui_ti.c.gph codevoid.de 70 it@@ -46,7 +46,7 @@ uiprompt(char *fmt, ...) Err codevoid.de 70 i va_list ap; Err codevoid.de 70 i char *input = NULL; Err codevoid.de 70 i size_t n = 0; Err codevoid.de 70 i- ssize_t r; Err codevoid.de 70 i+ ssize_t r = 0; Err codevoid.de 70 i Err codevoid.de 70 i putp(tparm(save_cursor)); Err codevoid.de 70 i Err codevoid.de 70 it@@ -55,11 +55,13 @@ uiprompt(char *fmt, ...) Err codevoid.de 70 i putp(tparm(enter_standout_mode)); Err codevoid.de 70 i Err codevoid.de 70 i va_start(ap, fmt); Err codevoid.de 70 i- vprintf(fmt, ap); Err codevoid.de 70 i+ r += vprintf(fmt, ap); Err codevoid.de 70 i va_end(ap); Err codevoid.de 70 i Err codevoid.de 70 i putp(tparm(exit_standout_mode)); Err codevoid.de 70 i Err codevoid.de 70 i+ printf("%*s", columns-r, " "); Err codevoid.de 70 i+ Err codevoid.de 70 i tsacc.c_lflag |= (ECHO|ICANON); Err codevoid.de 70 i tcsetattr(0, TCSANOW, &tsacc); Err codevoid.de 70 i fflush(stdout); Err codevoid.de 70 it@@ -112,6 +114,7 @@ void Err codevoid.de 70 i uistatus(char *fmt, ...) Err codevoid.de 70 i { Err codevoid.de 70 i va_list ap; Err codevoid.de 70 i+ int n = 0; Err codevoid.de 70 i Err codevoid.de 70 i putp(tparm(save_cursor)); Err codevoid.de 70 i Err codevoid.de 70 it@@ -119,16 +122,17 @@ uistatus(char *fmt, ...) Err codevoid.de 70 i putp(tparm(enter_standout_mode)); Err codevoid.de 70 i Err codevoid.de 70 i va_start(ap, fmt); Err codevoid.de 70 i- vprintf(fmt, ap); Err codevoid.de 70 i+ n += vprintf(fmt, ap); Err codevoid.de 70 i va_end(ap); Err codevoid.de 70 i Err codevoid.de 70 i- printf(" [Press a key to continue ☃]"); Err codevoid.de 70 i- getchar(); Err codevoid.de 70 i- Err codevoid.de 70 i+ n += printf(" [Press a key to continue ☃]"); Err codevoid.de 70 i putp(tparm(exit_standout_mode)); Err codevoid.de 70 i+ printf("%*s", columns-n, " "); Err codevoid.de 70 i Err codevoid.de 70 i putp(tparm(restore_cursor)); Err codevoid.de 70 i fflush(stdout); Err codevoid.de 70 i+ Err codevoid.de 70 i+ getchar(); Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 i static void Err codevoid.de 70 it@@ -137,16 +141,18 @@ displaystatus(Item *item) Err codevoid.de 70 i Dir *dir = item->dat; Err codevoid.de 70 i size_t nitems = dir ? dir->nitems : 0; Err codevoid.de 70 i unsigned long long printoff = dir ? dir->printoff : 0; Err codevoid.de 70 i+ int n; Err codevoid.de 70 i Err codevoid.de 70 i putp(tparm(save_cursor)); Err codevoid.de 70 i Err codevoid.de 70 i putp(tparm(cursor_address, lines-1, 0)); Err codevoid.de 70 i putp(tparm(enter_standout_mode)); Err codevoid.de 70 i- printf("%3lld%%| %s:%s%s", Err codevoid.de 70 i- (printoff + lines-1 >= nitems) ? 100 : Err codevoid.de 70 i- (printoff + lines-1) * 100 / nitems, Err codevoid.de 70 i- item->host, item->port, item->selector); Err codevoid.de 70 i+ n = printf("%3lld%%| %s:%s%s", Err codevoid.de 70 i+ (printoff + lines-1 >= nitems) ? 100 : Err codevoid.de 70 i+ (printoff + lines-1) * 100 / nitems, Err codevoid.de 70 i+ item->host, item->port, item->selector); Err codevoid.de 70 i putp(tparm(exit_standout_mode)); Err codevoid.de 70 i+ printf("%*s", columns-n, " "); Err codevoid.de 70 i Err codevoid.de 70 i putp(tparm(restore_cursor)); Err codevoid.de 70 i fflush(stdout); Err codevoid.de 70 it@@ -155,22 +161,26 @@ displaystatus(Item *item) Err codevoid.de 70 i static void Err codevoid.de 70 i displayuri(Item *item) Err codevoid.de 70 i { Err codevoid.de 70 i+ int n; Err codevoid.de 70 i+ Err codevoid.de 70 i+ if (item->type == 'i') Err codevoid.de 70 i+ return; Err codevoid.de 70 i+ Err codevoid.de 70 i putp(tparm(save_cursor)); Err codevoid.de 70 i Err codevoid.de 70 i putp(tparm(cursor_address, lines-1, 0)); Err codevoid.de 70 i putp(tparm(enter_standout_mode)); Err codevoid.de 70 i switch (item->type) { Err codevoid.de 70 i- case 'i': Err codevoid.de 70 i- break; Err codevoid.de 70 i case 'h': Err codevoid.de 70 i- printf("%s: %s", item->username, item->selector); Err codevoid.de 70 i+ n = printf("%s: %s", item->username, item->selector); Err codevoid.de 70 i break; Err codevoid.de 70 i default: Err codevoid.de 70 i- printf("%s: %s:%s%s", Err codevoid.de 70 i- item->username, item->host, item->port, item->selector); Err codevoid.de 70 i+ n = printf("%s: %s:%s%s", item->username, Err codevoid.de 70 i+ item->host, item->port, item->selector); Err codevoid.de 70 i break; Err codevoid.de 70 i } Err codevoid.de 70 i putp(tparm(exit_standout_mode)); Err codevoid.de 70 i+ printf("%*s", columns-n, " "); Err codevoid.de 70 i Err codevoid.de 70 i putp(tparm(restore_cursor)); Err codevoid.de 70 i fflush(stdout); Err codevoid.de 70 .