- int in, out, i, debug_level, compress_flag;
- pid_t sshpid;
- char *cp;
- LogLevel ll;
-
- debug_level = compress_flag = 0;
- for(i = 1; i < argc && argv[i][0] == '-'; i++) {
- if (!strcmp(argv[i], "-v"))
- debug_level = MIN(3, debug_level + 1);
- else if (!strcmp(argv[i], "-C"))
- compress_flag = 1;
- else if (!strncmp(argv[i], "-o", 2)) {
- make_ssh_args(argv[i]);
- } else {
- fprintf(stderr, "Unknown option \"%s\"\n", argv[i]);
+ int in, out, ch, err;
+ char *host, *userhost, *cp, *file2;
+ int debug_level = 0, sshver = 2;
+ char *file1 = NULL, *sftp_server = NULL;
+ char *ssh_program = _PATH_SSH_PROGRAM, *sftp_direct = NULL;
+ LogLevel ll = SYSLOG_LEVEL_INFO;
+ arglist args;
+ extern int optind;
+ extern char *optarg;
+
+ __progname = get_progname(argv[0]);
+ args.list = NULL;
+ addargs(&args, "ssh"); /* overwritten with ssh_program */
+ addargs(&args, "-oForwardX11 no");
+ addargs(&args, "-oForwardAgent no");
+ addargs(&args, "-oClearAllForwardings yes");
+ ll = SYSLOG_LEVEL_INFO;
+ infile = stdin; /* Read from STDIN unless changed by -b */
+
+ while ((ch = getopt(argc, argv, "1hvCo:s:S:b:B:F:P:R:")) != -1) {
+ switch (ch) {
+ case 'C':
+ addargs(&args, "-C");
+ break;
+ case 'v':
+ if (debug_level < 3) {
+ addargs(&args, "-v");
+ ll = SYSLOG_LEVEL_DEBUG1 + debug_level;
+ }
+ debug_level++;
+ break;
+ case 'F':
+ case 'o':
+ addargs(&args, "-%c%s", ch, optarg);
+ break;
+ case '1':
+ sshver = 1;
+ if (sftp_server == NULL)
+ sftp_server = _PATH_SFTP_SERVER;
+ break;
+ case 's':
+ sftp_server = optarg;
+ break;
+ case 'S':
+ ssh_program = optarg;
+ break;
+ case 'b':
+ if (infile == stdin) {
+ infile = fopen(optarg, "r");
+ if (infile == NULL)
+ fatal("%s (%s).", strerror(errno), optarg);
+ } else
+ fatal("Filename already specified.");
+ showprogress = 0;
+ break;
+ case 'P':
+ sftp_direct = optarg;
+ break;
+ case 'B':
+ copy_buffer_len = strtol(optarg, &cp, 10);
+ if (copy_buffer_len == 0 || *cp != '\0')
+ fatal("Invalid buffer size \"%s\"", optarg);
+ break;
+ case 'R':
+ num_requests = strtol(optarg, &cp, 10);
+ if (num_requests == 0 || *cp != '\0')
+ fatal("Invalid number of requests \"%s\"",
+ optarg);
+ break;
+ case 'h':
+ default: