diff options
author | Mark Whitley | 2000-06-16 00:26:51 +0000 |
---|---|---|
committer | Mark Whitley | 2000-06-16 00:26:51 +0000 |
commit | b9913954054b87f64f0a8010a2d67f0ffd7f5b86 (patch) | |
tree | 80694d2b35abd758a844fefaed681c38d9d150b5 /more.c | |
parent | 2e965239ee4f19f86e377ade94574c3c73a32425 (diff) | |
download | busybox-b9913954054b87f64f0a8010a2d67f0ffd7f5b86.zip busybox-b9913954054b87f64f0a8010a2d67f0ffd7f5b86.tar.gz |
Added some comments and changed a variable name to be more meaningful. No
fixes yet for the space bug, but should be coming soon.
Diffstat (limited to 'more.c')
-rw-r--r-- | more.c | 27 |
1 files changed, 22 insertions, 5 deletions
@@ -87,7 +87,7 @@ static int terminal_height = TERMINAL_HEIGHT; extern int more_main(int argc, char **argv) { int c, lines = 0, input = 0; - int next_page = 0; + int please_display_more_prompt = 0; struct stat st; FILE *file; @@ -140,10 +140,10 @@ extern int more_main(int argc, char **argv) #endif while ((c = getc(file)) != EOF) { - if (next_page) { + if (please_display_more_prompt) { int len = 0; - next_page = 0; + please_display_more_prompt = 0; lines = 0; len = fprintf(stdout, "--More-- "); if (file != stdin) { @@ -162,6 +162,11 @@ extern int more_main(int argc, char **argv) ); fflush(stdout); + + /* + * We've just displayed the "--More--" prompt, so now we need + * to get input from the user. + */ #ifdef BB_FEATURE_USE_TERMIOS input = getc(cin); #else @@ -180,6 +185,17 @@ extern int more_main(int argc, char **argv) #endif } + + /* + * There are two input streams to worry about here: + * + * c : the character we are reading from the file being "mored" + * input : a character received from the keyboard + * + * If we hit a newline in the _file_ stream, we want to test and + * see if any characters have been hit in the _input_ stream. This + * allows the user to quit while in the middle of a file. + */ if (c == '\n') { switch (input) { case 'q': @@ -187,12 +203,13 @@ extern int more_main(int argc, char **argv) case '\n': /* increment by just one line if we are at * the end of this line*/ - next_page = 1; + please_display_more_prompt = 1; break; } if (++lines == terminal_height) - next_page = 1; + please_display_more_prompt = 1; } + /* If any key other than a return is hit, scroll by one page */ putc(c, stdout); } fclose(file); |