From: Mark Wooding Date: Fri, 25 Mar 2022 00:42:44 +0000 (+0000) Subject: multiprogress.[ch]: Save and restore `PC' in the render state. X-Git-Url: https://git.distorted.org.uk/~mdw/dvdrip/commitdiff_plain/35951074cd3c77789c39d6e8a7d9eeb0bba7209e multiprogress.[ch]: Save and restore `PC' in the render state. --- diff --git a/multiprogress.c b/multiprogress.c index 3d4ba8c..4254e13 100644 --- a/multiprogress.c +++ b/multiprogress.c @@ -116,7 +116,7 @@ int progress_init(struct progress_state *progress) if (tgetflag("ut") > 0) tty->cap.f |= TCF_BCE; - t = tgetstr("pc", &capcur); PC = t ? *t : 0; + t = tgetstr("pc", &capcur); tty->cap.pc = t ? *t : 0; SETDIM(defwd, "COLUMNS", tgetnum("co"), 80); SETDIM(defht, "LINES", tgetnum("li"), 25); @@ -257,6 +257,7 @@ static int setup_render_state(struct progress_state *progress, #ifdef USE_TERMCAP render->old_bc = BC; BC = 0; render->old_up = UP; UP = 0; + render->old_pc = PC; PC = tty->cap.pc; #endif if (!ioctl(fileno(tty->fp), TIOCGWINSZ, &wsz)) @@ -277,6 +278,7 @@ static void free_render_state(struct progress_render_state *render) #ifdef USE_TERMCAP UP = render->old_up; BC = render->old_bc; + PC = render->old_pc; #endif } diff --git a/multiprogress.h b/multiprogress.h index a1121eb..b501292 100644 --- a/multiprogress.h +++ b/multiprogress.h @@ -13,11 +13,12 @@ struct progress_ttyinfo { const char *cr, *nw, *up, *ce, *cd; /* cursor motion */ const char *mr, *md, *me; /* reverse video, bold */ const char *af, *ab, *op; /* colour */ + char pc; /* pad character (termcap) */ } cap; unsigned defwd, defht; /* default width and height */ }; #define PROGRESS_TTYINFO_INIT \ - { 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 80, 25 } + { 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 80, 25 } struct progress_state { struct progress_ttyinfo tty; /* terminal state */ @@ -35,7 +36,7 @@ struct progress_render_state { char *tempbuf; size_t tempsz; /* scratch buffer */ size_t leftsz, rightsz; /* left and right cursors */ unsigned leftwd, rightwd; /* left and right widths */ - char *old_bc, *old_up; /* old fixup strings */ + char *old_bc, *old_up, old_pc; /* saved `termcap' globals */ }; struct progress_item {