[Toybox] [PATCH] fix more with missing files
Rob Landley
rob at landley.net
Fri May 1 11:33:21 PDT 2015
Alright, I'll clean up less next...
Rob
On 04/30/2015 11:32 PM, enh wrote:
> Fix more with missing files.
>
> Previously we'd go into an infinite loop because we weren't
> incrementing optargs.
>
> Also add a missing flush so an error on stderr won't overtake the
> escape code that resets reverse video.
>
> Disclaimer: the new behavior isn't exactly like the desktop version;
> surprisingly they try to open the next file _before_ they prompt. That
> feels weird to me as a user, and seems like it would lead to a more
> awkward implementation, but if you're more concerned about
> authenticity...
>
> diff --git a/toys/pending/more.c b/toys/pending/more.c
> index 59392ff..f0e7907 100644
> --- a/toys/pending/more.c
> +++ b/toys/pending/more.c
> @@ -53,6 +53,7 @@ static int prompt(FILE *cin, const char* fmt, ...)
> input_key = tolower(getc(cin));
> printf("\33[0m\33[1K\r"); // Reset all attributes, erase to start of line.
> if (strchr(" \nrq", input_key)) {
> + fflush(NULL);
> return input_key;
> }
> printf("\33[7m(Enter:Next line Space:Next page Q:Quit R:Show the rest)");
> @@ -95,8 +96,8 @@ void more_main()
> do {
> fp = stdin;
> if (*toys.optargs && !(fp = fopen(*toys.optargs, "r"))) {
> - perror_msg("'%s'", *toys.optargs);
> - continue;
> + perror_msg("%s", *toys.optargs);
> + goto next_file;
> }
> st.st_size = show_prompt = col = row = 0;
> fstat(fileno(fp), &st);
> @@ -133,6 +134,7 @@ void more_main()
> }
> fclose(fp);
>
> +next_file:
> if (*toys.optargs && *++toys.optargs) {
> input_key = prompt(cin, "--More--(Next file: %s)", *toys.optargs);
> if (input_key == 'q') goto stop;
> _______________________________________________
> Toybox mailing list
> Toybox at lists.landley.net
> http://lists.landley.net/listinfo.cgi/toybox-landley.net
>
1430505201.0
More information about the Toybox
mailing list