Patch from Ben Low <ben@titr.uow.edu.au> to allow tftp to work
authorEric Andersen <andersen@codepoet.org>
Mon, 15 Apr 2002 07:40:27 +0000 (07:40 -0000)
committerEric Andersen <andersen@codepoet.org>
Mon, 15 Apr 2002 07:40:27 +0000 (07:40 -0000)
with stdin as well as stdout.

networking/tftp.c

index a82415c608e713961b63d593f45ae220f1283a72..ec30725d20217278015c2e07014523b2230b8e68 100644 (file)
@@ -548,17 +548,13 @@ int tftp_main(int argc, char **argv)
        if ((cmd == 0) || (optind == argc)) {
                show_usage();
        }
-       if(cmd == tftp_cmd_get) {
-           if(localfile == NULL)
-               localfile = remotefile;
-           if(localfile && strcmp(localfile, "-") == 0) {
-               fd = fileno(stdout);
-           }
+       if(localfile && strcmp(localfile, "-") == 0) {
+           fd = fileno((cmd==tftp_cmd_get)? stdin : stdout);
        }
-       if(cmd == tftp_cmd_put)
-           if(remotefile == NULL)
-               remotefile = localfile;
-
+       if(localfile == NULL)
+           localfile = remotefile;
+       if(remotefile == NULL)
+           remotefile = localfile;
        if (fd==-1) {
            fd = open(localfile, flags, 0644);
        }
@@ -582,7 +578,7 @@ int tftp_main(int argc, char **argv)
        result = tftp(cmd, host, remotefile, fd, port, blocksize);
 
 #ifdef CONFIG_FEATURE_CLEAN_UP
-       if (fd!=fileno(stdout)) {
+       if (!(fd == fileno(stdout) || fd == fileno(stdin))) {
            close(fd);
        }
 #endif