]> andersk Git - openssh.git/blobdiff - sftp.c
- (djm) Convert mandoc manpages to man automatically. Patch from Mark D.
[openssh.git] / sftp.c
diff --git a/sftp.c b/sftp.c
index c22825093c9842d2b9d3aec6daf67f6d60414c98..911a04f243d683c7e20b9b42aa0f924a635943b5 100644 (file)
--- a/sftp.c
+++ b/sftp.c
@@ -24,7 +24,7 @@
 
 #include "includes.h"
 
-RCSID("$OpenBSD: sftp.c,v 1.10 2001/03/06 06:11:44 deraadt Exp $");
+RCSID("$OpenBSD: sftp.c,v 1.14 2001/04/12 23:17:54 mouring Exp $");
 
 /* XXX: commandline mode */
 /* XXX: copy between two remote hosts (commandline) */
@@ -147,7 +147,7 @@ make_ssh_args(char *add_arg)
 void
 usage(void)
 {
-       fprintf(stderr, "usage: sftp [-1vC] [-b batchfile] [-osshopt=value] [user@]host\n");
+       fprintf(stderr, "usage: sftp [-1vC] [-b batchfile] [-osshopt=value] [user@]host[:file [file]]\n");
        exit(1);
 }
 
@@ -156,7 +156,8 @@ main(int argc, char **argv)
 {
        int in, out, ch, debug_level, compress_flag;
        pid_t sshpid;
-       char *host, *userhost;
+       char *file1 = NULL;
+       char *host, *userhost, *cp, *file2;
        LogLevel ll;
        extern int optind;
        extern char *optarg;
@@ -191,9 +192,9 @@ main(int argc, char **argv)
                case 'b':
                        if (infile == stdin) {
                                infile = fopen(optarg, "r");
-                               if (infile == NULL) 
+                               if (infile == NULL)
                                        fatal("%s (%s).", strerror(errno), optarg);
-                       } else 
+                       } else
                                fatal("Filename already specified.");
                        break;
                case 'h':
@@ -202,22 +203,27 @@ main(int argc, char **argv)
                }
        }
 
-       if (optind == argc || argc > (optind + 1))
+       if (optind == argc || argc > (optind + 2))
                usage();
 
-       userhost = argv[optind];
+       userhost = xstrdup(argv[optind]);
+       file2 = argv[optind+1];
+
+       if ((cp = strchr(userhost, ':')) != NULL) {
+               *cp++ = '\0';
+               file1 = cp;
+       }
 
        if ((host = strchr(userhost, '@')) == NULL)
                host = userhost;
        else {
-               *host = '\0';
+               *host++ = '\0';
                if (!userhost[0]) {
                        fprintf(stderr, "Missing username\n");
                        usage();
                }
                make_ssh_args("-l");
                make_ssh_args(userhost);
-               host++;
        }
 
        if (!*host) {
@@ -256,9 +262,7 @@ main(int argc, char **argv)
 
        connect_to_server(make_ssh_args(NULL), &in, &out, &sshpid);
 
-       do_init(in, out);
-
-       interactive_loop(in, out);
+       interactive_loop(in, out, file1, file2);
 
 #if !defined(USE_PIPES)
         shutdown(in, SHUT_RDWR);
This page took 0.112959 seconds and 4 git commands to generate.