From: Laurent Mazet Date: Tue, 21 Jan 2025 09:18:21 +0000 (+0100) Subject: fix view mode for short files X-Git-Tag: v1.0~16 X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=afab0262c766d4925a11517b2fb4afe6bba0bbd8;p=fm.git fix view mode for short files --- diff --git a/display.c b/display.c index 3bd64d2..f8c45be 100644 --- a/display.c +++ b/display.c @@ -554,12 +554,10 @@ char *filewindow (char *name, window_t *win) mvaddch (win->ysize + win->yoffset, win->xsize + win->xoffset, ACS_DARROW); } - for (i = 0; i < win->ysize; i++) { + for (i = 0; (i < win->ysize) && (lines[skip + i]); i++) { unsigned char *pt = (unsigned char *)(lines[skip + i]); - for (j = 0; j < win->xsize; j++) { - if (pt[j] == '\0') { - break; - } else if (pt[j] == 128) { + for (j = 0; (j < win->xsize) && (pt[j] != '\0'); j++) { + if (pt[j] == 128) { set_color (imagenta); mvaddch (win->yoffset + i, win->xoffset + j, '.'); set_color (black); @@ -571,6 +569,11 @@ char *filewindow (char *name, window_t *win) mvaddch (win->yoffset + i, win->xoffset + j, ' '); } } + for (; i < win->ysize; i++) { + for (j = 0; j < win->xsize; j++) { + mvaddch (win->yoffset + i, win->xoffset + j, ' '); + } + } switch (getch ()) { case KEY_ESC: diff --git a/fm.c b/fm.c index 3632975..85a9003 100644 --- a/fm.c +++ b/fm.c @@ -572,7 +572,9 @@ int main (int argc, char *argv[]) /* test: ln -s .b .a && { sleep 1; echo -en 'k\es'; sleep 1; echo -en '\ex'; sleep 1; echo; sleep 1; echo ; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rm .a */ /* View */ +/* test: echo -ne 'Begin\n This is a test\nEnd' > .a && { sleep 1; echo -n 'k'; sleep 1; echo -en '\ev'; sleep 1; echo -n kkk; sleep 1; echo -n iii; sleep 1; echo -n h; sleep 1; echo; sleep 1; echo -n q; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe -x 60 -y 20 && rm .a */ /* test: cp fm.c .a && { sleep 1; echo -n 'k'; sleep 1; echo -en '\ev'; sleep 1; for i in $(seq 1 1000); do echo -n k; done; sleep 1; for i in $(seq 1 1000); do echo -n i; done; sleep 1; echo -n h; sleep 1; echo; sleep 1; echo -n q; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe -x 60 -y 20 && rm .a */ +/* test: cp debug.o .a && { sleep 1; echo -n 'k'; sleep 1; echo -en '\ev'; sleep 1; for i in $(seq 1 100); do echo -n k; done; sleep 1; for i in $(seq 1 100); do echo -n i; done; sleep 1; echo -n h; sleep 1; echo; sleep 1; echo -n q; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe -x 60 -y 20 && rm .a */ /* test: mkdir .a && { sleep 1; echo -n 'k'; sleep 1; echo -en '\ev'; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe -x 60 -y 20 && rmdir .a */ /* test: ln -s .b .a && { sleep 1; echo -n 'k'; sleep 1; echo -en '\ev'; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe -x 60 -y 20 && rm .a */