Scripting tftp(1) makes it non-interactive, yet the prompt is still
printed and may mess up the shell's PS1:

        $ echo put nonexistent | tftp localhost
        tftp> tftp: open: nonexistent: No such file or directory
        tftp> $ 

The fix seems easy and works as expected for multiple commands as well:
        $ echo 'verbose\nput nonexistent' | ./obj/tftp localhost
        Verbose mode on.
        tftp: open: nonexistent: No such file or directory
        $

I think the manual's wording can just stay as-is:
        COMMANDS
             Once tftp is running, it issues the prompt ‘tftp>’ and recognizes 
the
             following commands:


Feedback? OK?

Index: main.c
===================================================================
RCS file: /cvs/src/usr.bin/tftp/main.c,v
retrieving revision 1.43
diff -u -p -r1.43 main.c
--- main.c      20 Sep 2018 11:42:42 -0000      1.43
+++ main.c      2 Oct 2022 12:39:04 -0000
@@ -602,7 +602,8 @@ command(void)
        struct cmd      *c;
 
        for (;;) {
-               printf("%s> ", prompt);
+               if (isatty(STDIN_FILENO))
+                       printf("%s> ", prompt);
                if (readcmd(line, LBUFLEN, stdin) < 1)
                        continue;
                if ((line[0] == 0) || (line[0] == '\n'))

Reply via email to