X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Fview.c;h=bf4377f48e12c505e4f24082a49b236c68e38245;hp=aa06a3e8d6bd3e3bd1747806acef62d3d9db79bb;hb=aed072e27e60c2abc5ac0ab8113aacf9b4908d50;hpb=58369d647d003dd9d9e1ecfc5ab07982db28f3da diff --git a/test/view.c b/test/view.c index aa06a3e8..bf4377f4 100644 --- a/test/view.c +++ b/test/view.c @@ -51,7 +51,7 @@ * scroll operation worked, and the refresh() code only had to do a * partial repaint. * - * $Id: view.c,v 1.129 2017/10/22 00:49:23 tom Exp $ + * $Id: view.c,v 1.135 2017/10/23 09:18:01 tom Exp $ */ #include @@ -61,15 +61,10 @@ #include #include -#undef CTRL /* conflict on AIX 5.2 with */ - static void finish(int sig) GCC_NORETURN; #define my_pair 1 -#undef CTRL -#define CTRL(x) ((x) & 0x1f) - static int shift = 0; static bool try_color = FALSE; @@ -138,10 +133,15 @@ static void show_all(const char *tag) { int i; + int digits; char temp[BUFSIZ]; NCURSES_CH_T *s; time_t this_time; + for (digits = 1, i = num_lines; i > 0; i /= 10) { + ++digits; + } + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "view %.*s", (int) strlen(tag), tag); i = (int) strlen(temp); @@ -173,7 +173,7 @@ show_all(const char *tag) break; } move(i, 0); - printw("%3d:", actual); + printw("%*d:", digits, actual); clrtoeol(); if ((s = lptr[i - 1]) == 0) { continue; @@ -282,7 +282,7 @@ read_file(const char *filename) } #if USE_WIDEC_SUPPORT - if (!memcmp("", my_blob, 3)) { + if (!memcmp("\357\273\277", my_blob, 3)) { char *s = my_blob + 3; char *d = my_blob; Trace(("trim BOM")); @@ -347,7 +347,8 @@ read_file(const char *filename) if (y) x = width - 1; wmove(my_win, 0, 0); - if ((vec_lines[k] = typeCalloc(NCURSES_CH_T, (size_t) x + 1)) == 0) + /* "x + 1" works with standard curses; some implementations are buggy */ + if ((vec_lines[k] = typeCalloc(NCURSES_CH_T, x + width + 1)) == 0) failed("cannot allocate line-vector #3"); #if USE_WIDEC_SUPPORT win_wchnstr(my_win, vec_lines[k], x); @@ -398,6 +399,7 @@ main(int argc, char *argv[]) " n, - scroll the viewport down by one row", " l, - scroll the viewport left by one column", " r, - scroll the viewport right by one column", + " <,> - scroll the viewport left/right by 8 columns", "", " h, - scroll the viewport to top of file", " ^F, - scroll to the next page", @@ -425,7 +427,7 @@ main(int argc, char *argv[]) setlocale(LC_ALL, ""); - while ((i = getopt(argc, argv, "cirstT:")) != -1) { + while ((i = getopt(argc, argv, "cinstT:")) != -1) { switch (i) { case 'c': try_color = TRUE; @@ -433,6 +435,11 @@ main(int argc, char *argv[]) case 'i': ignore_sigs = TRUE; break; +#if USE_WIDEC_SUPPORT + case 'n': + n_option = TRUE; + break; +#endif case 's': single_step = TRUE; break; @@ -529,18 +536,20 @@ main(int argc, char *argv[]) scrl((int) (lptr - olptr)); break; - case '<': - shift = 0; - /* FALLTHRU */ case 'h': /* FALLTHRU */ case KEY_HOME: lptr = vec_lines; break; + case '<': + if ((shift -= 8) < 0) + shift = 0; + break; case '>': - shift = 0; - /* FALLTHRU */ + shift += 8; + break; + case 'e': /* FALLTHRU */ case KEY_END: