Re: [PATCH v2] Output prompt when stdin is not a TTY.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2023/05/31 15:01, Hsin-Yi Wang wrote:
> When stdin is not a TTY, prompt ("crash> ") won't be displayed. If
> another process interact with crash with piped stdin/stdout, it will not
> get the prompt as a delimiter.
> 
> Compared to other debugger like gdb, crash seems intended to give a
> prompt in this case in the beginning of process_command_line(). It
> checks if pc->flags does NOT have any of
> READLINE|SILENT|CMDLINE_IFILE|RCHOME_IFILE|RCLOCAL_IFILE, a
> prompt should be printed. The check will never be true since READLINE is
> set in setup_environment() unconditionally.
> 
> It makes more sense to change the READLINE flag in the check to TTY
> instead. Besides this change, the prompt in process_command_line() should
> only be print when it's not in the middle of processing the input file
> recovering from a previous FATAL command, because the prompt will be
> displayed by the exec_input_file().
> 
> Additionally, when stdin is not TTY, repeat the command line from user
> after prompt, which can give more context.
> 
> The prompt and command line can be opt out by using the silent (-s) flag.
> 
> Signed-off-by: Hsin-Yi Wang <hsinyi@xxxxxxxxxxxx>
> ---
> v1: https://listman.redhat.com/archives/crash-utility/2023-May/010740.html
> v1->v2:
> 1. remove additional prompt when recovering from FATAL command from
> file.
> 2. fix a few space/tab indent.
> ---
>   cmdline.c | 14 +++++++++-----
>   1 file changed, 9 insertions(+), 5 deletions(-)
> 
> diff --git a/cmdline.c b/cmdline.c
> index ded6551..b7f919a 100644
> --- a/cmdline.c
> +++ b/cmdline.c
> @@ -64,8 +64,8 @@ process_command_line(void)
>   	fp = stdout;
>   	BZERO(pc->command_line, BUFSIZE);
>   
> -	if (!(pc->flags &
> -	    (READLINE|SILENT|CMDLINE_IFILE|RCHOME_IFILE|RCLOCAL_IFILE)))
> +	if (!pc->ifile_in_progress && !(pc->flags &
> +	    (TTY|SILENT|CMDLINE_IFILE|RCHOME_IFILE|RCLOCAL_IFILE)))

Yes, it seems that the pc->ifile_in_progress stores *_IFILE instead of 
pc->flags when re-entering here, so looks good to me.

This kind of UI change can break some use cases, but I hope "crash -s" 
works well for them.

Acked-by: Kazuhito Hagio <k-hagio-ab@xxxxxxx>

Please wait for another ack.

Thanks,
Kazu

>   		fprintf(fp, "%s", pc->prompt);
>   	fflush(fp);
>   
> @@ -136,12 +136,16 @@ process_command_line(void)
>   			add_history(pc->command_line);
>   		
>   		check_special_handling(pc->command_line);
> -        } else {
> -        	if (fgets(pc->command_line, BUFSIZE-1, stdin) == NULL)
> +	} else {
> +		if (fgets(pc->command_line, BUFSIZE-1, stdin) == NULL)
>   			clean_exit(1);
> +		if (!(pc->flags & SILENT)) {
> +			fprintf(fp, "%s", pc->command_line);
> +			fflush(fp);
> +		}
>   		clean_line(pc->command_line);
>   		strcpy(pc->orig_line, pc->command_line);
> -        }
> +	}
>   
>   	/*
>   	 *  First clean out all linefeeds and leading/trailing spaces.
--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://listman.redhat.com/mailman/listinfo/crash-utility
Contribution Guidelines: https://github.com/crash-utility/crash/wiki




[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux