Teach tftp to direct the fetched file to stdout when the
authorEric Andersen <andersen@codepoet.org>
Sat, 13 Apr 2002 09:30:25 +0000 (09:30 -0000)
committerEric Andersen <andersen@codepoet.org>
Sat, 13 Apr 2002 09:30:25 +0000 (09:30 -0000)
user specifies "-l -"
 -Erik

networking/tftp.c

index c0377645972a000d08ae2b2678aa13f2d174c791..a82415c608e713961b63d593f45ae220f1283a72 100644 (file)
@@ -548,15 +548,20 @@ int tftp_main(int argc, char **argv)
        if ((cmd == 0) || (optind == argc)) {
                show_usage();
        }
-       if(cmd == tftp_cmd_get)
+       if(cmd == tftp_cmd_get) {
            if(localfile == NULL)
                localfile = remotefile;
-
+           if(localfile && strcmp(localfile, "-") == 0) {
+               fd = fileno(stdout);
+           }
+       }
        if(cmd == tftp_cmd_put)
            if(remotefile == NULL)
                remotefile = localfile;
 
-       fd = open(localfile, flags, 0644);
+       if (fd==-1) {
+           fd = open(localfile, flags, 0644);
+       }
        if (fd < 0) {
                perror_msg_and_die("local file");
        }
@@ -577,7 +582,9 @@ int tftp_main(int argc, char **argv)
        result = tftp(cmd, host, remotefile, fd, port, blocksize);
 
 #ifdef CONFIG_FEATURE_CLEAN_UP
-       close(fd);
+       if (fd!=fileno(stdout)) {
+           close(fd);
+       }
 #endif
        return(result);
 }