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