[BACK]Return to main.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ftp

Diff for /src/usr.bin/ftp/main.c between version 1.2 and 1.3

version 1.2, 1996/05/10 12:59:51 version 1.3, 1996/06/03 15:55:48
Line 74 
Line 74 
         int ch, top;          int ch, top;
         struct passwd *pw = NULL;          struct passwd *pw = NULL;
         char *cp, homedir[MAXPATHLEN];          char *cp, homedir[MAXPATHLEN];
           int force_port = 0;
   
         sp = getservbyname("ftp", "tcp");          sp = getservbyname("ftp", "tcp");
         if (sp == 0)          if (sp == 0)
Line 82 
Line 83 
         interactive = 1;          interactive = 1;
         autologin = 1;          autologin = 1;
   
         while ((ch = getopt(argc, argv, "dgintv")) != EOF) {          while ((ch = getopt(argc, argv, "p:dgintv")) != EOF) {
                 switch (ch) {                  switch (ch) {
                 case 'd':                  case 'd':
                         options |= SO_DEBUG;                          options |= SO_DEBUG;
Line 101 
Line 102 
                         autologin = 0;                          autologin = 0;
                         break;                          break;
   
                   case 'p':
                           force_port = atoi(optarg);
                           break;
   
                 case 't':                  case 't':
                         trace++;                          trace++;
                         break;                          break;
Line 138 
Line 143 
         if (pw != NULL) {          if (pw != NULL) {
                 home = homedir;                  home = homedir;
                 (void) strcpy(home, pw->pw_dir);                  (void) strcpy(home, pw->pw_dir);
           }
           if (argc > 0 && strchr(argv[0], ':')) {
                   int ret = 0;
                   anonftp = 1;
   
                   while (argc > 0 && strchr(argv[0], ':')) {
                           char *xargv[5];
                           extern char *__progname;
                           char portstr[20], *p, *bufp;
                           int xargc = 2;
   
                           if (setjmp(toplevel))
                                   exit(0);
                           (void) signal(SIGINT, intr);
                           (void) signal(SIGPIPE, lostpeer);
                           xargv[0] = __progname;
   
                           /* connect to host */
                           bufp = xargv[1] = strdup(argv[0]);
                           p = strchr(xargv[1], ':');
                           *p = '\0';
                           xargv[2] = NULL;
                           if (force_port) {
                                   xargv[2] = portstr;
                                   snprintf(portstr, sizeof portstr, "%d",
                                       force_port);
                                   xargc++;
                           }
                           setpeer(xargc, xargv);
                           if (!connected) {
                                   printf("failed to connect to %s\n", xargv[1]);
                                   ret = 1;
                                   goto bail;
                           }
                           free(bufp);
   
                           setbinary(NULL, 0);
   
                           /* cd into correct directory */
                           bufp = xargv[1] = strdup(argv[0]);
                           if (xargv[1] == NULL) {
                                   ret = 1;
                                   goto bail;
                           }
                           xargv[1] = strchr(xargv[1], ':');
                           xargv[1]++;
                           p = strrchr(xargv[1], '/');
                           if (p)
                                   *p = '\0';
                           xargv[2] = NULL;
                           xargc = 2;
                           cd(xargc, xargv);
                           free(bufp);
   
                           /* fetch file */
                           bufp = xargv[1] = strdup(argv[0]);
                           if (xargv[1] == NULL) {
                                   ret = 1;
                                   goto bail;
                           }
                           xargv[1] = strchr(xargv[1], ':');
                           xargv[1]++;
                           p = strrchr(xargv[1], '/');
                           if (p)
                                   xargv[1] = p + 1;
                           xargv[2] = NULL;
                           xargc = 2;
                           get(xargc, xargv);
                           free(bufp);
   
                           /* get ready for the next file */
   bail:
                           if (connected)
                                   disconnect(1, xargv);
                           --argc;
                           argv++;
                   }
                   exit(ret);
         }          }
         if (argc > 0) {          if (argc > 0) {
                 char *xargv[5];                  char *xargv[5];

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3