[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.3 and 1.4

version 1.3, 1996/06/03 15:55:48 version 1.4, 1996/06/03 16:35:05
Line 151 
Line 151 
                 while (argc > 0 && strchr(argv[0], ':')) {                  while (argc > 0 && strchr(argv[0], ':')) {
                         char *xargv[5];                          char *xargv[5];
                         extern char *__progname;                          extern char *__progname;
                         char portstr[20], *p, *bufp;                          char portstr[20], *p, *bufp = NULL;
                           char *host = NULL, *dir = NULL, *file = NULL;
                         int xargc = 2;                          int xargc = 2;
   
                         if (setjmp(toplevel))                          if (setjmp(toplevel))
Line 160 
Line 161 
                         (void) signal(SIGPIPE, lostpeer);                          (void) signal(SIGPIPE, lostpeer);
                         xargv[0] = __progname;                          xargv[0] = __progname;
   
                         /* connect to host */                          host = strdup(argv[0]);
                         bufp = xargv[1] = strdup(argv[0]);                          if (host == NULL) {
                         p = strchr(xargv[1], ':');                                  ret = 1;
                                   goto bail;
                           }
   
                           if (strncmp(host, "ftp://", sizeof("ftp://")-1) == 0) {
                                   host += sizeof("ftp://") - 1;
                                   p = strchr(host, '/');
                           } else
                                   p = strchr(host, ':');
                         *p = '\0';                          *p = '\0';
                           dir = ++p;
                           p = strrchr(p, '/');
                           if (p) {
                                   *p = '\0';
                                   file = ++p;
                           } else {
                                   file = dir;
                                   dir = NULL;
                           }
   
                           xargv[1] = host;
                         xargv[2] = NULL;                          xargv[2] = NULL;
                           xargc = 2;
                         if (force_port) {                          if (force_port) {
                                 xargv[2] = portstr;                                  xargv[2] = portstr;
                                 snprintf(portstr, sizeof portstr, "%d",                                  snprintf(portstr, sizeof portstr, "%d",
Line 173 
Line 194 
                         }                          }
                         setpeer(xargc, xargv);                          setpeer(xargc, xargv);
                         if (!connected) {                          if (!connected) {
                                 printf("failed to connect to %s\n", xargv[1]);                                  printf("failed to connect to %s\n", host);
                                 ret = 1;                                  ret = 1;
                                 goto bail;                                  goto bail;
                         }                          }
                         free(bufp);  
   
                         setbinary(NULL, 0);                          setbinary(NULL, 0);
   
                         /* cd into correct directory */                          if (dir) {
                         bufp = xargv[1] = strdup(argv[0]);                                  xargv[1] = dir;
                         if (xargv[1] == NULL) {                                  xargv[2] = NULL;
                                 ret = 1;                                  xargc = 2;
                                 goto bail;                                  cd(xargc, xargv);
                         }                          }
                         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 */                          /* fetch file */
                         bufp = xargv[1] = strdup(argv[0]);                          xargv[1] = file;
                         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;                          xargv[2] = NULL;
                         xargc = 2;                          xargc = 2;
                         get(xargc, xargv);                          get(xargc, xargv);
                         free(bufp);  
   
                         /* get ready for the next file */                          /* get ready for the next file */
 bail:  bail:
                           if (bufp)
                                   free(bufp);
                         if (connected)                          if (connected)
                                 disconnect(1, xargv);                                  disconnect(1, xargv);
                         --argc;                          --argc;

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