chuck       97/04/13 08:20:31

  Modified:    src/modules/proxy  proxy_ftp.c
  Log:
  Removed useless check terms, added handling of DOS dir format.
  
  Note that selection of a directory whose name contains spaces is still not
  possible. That still needs to be fixed. File selection is OK.
  
  Example:
  
  ftp://emwac.ed.ac.uk/microsoft/tools
  
  Revision  Changes    Path
  1.19      +12 -5     apache/src/modules/proxy/proxy_ftp.c
  
  Index: proxy_ftp.c
  ===================================================================
  RCS file: /export/home/cvs/apache/src/modules/proxy/proxy_ftp.c,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -C3 -r1.18 -r1.19
  *** proxy_ftp.c       1997/04/13 05:00:54     1.18
  --- proxy_ftp.c       1997/04/13 15:20:30     1.19
  ***************
  *** 220,227 ****
        char buf2[IOBUFSIZE];
        char *filename;
        char *tempurl;
  -     char *searchptr = NULL;
        int searchidx = 0;
        int firstfile = 1;
        char urlptr[HUGE_STRING_LEN];
        long total_bytes_sent;
  --- 220,227 ----
        char buf2[IOBUFSIZE];
        char *filename;
        char *tempurl;
        int searchidx = 0;
  +     char *searchptr = NULL;
        int firstfile = 1;
        char urlptr[HUGE_STRING_LEN];
        long total_bytes_sent;
  ***************
  *** 263,270 ****
            buf[sizeof(buf)-1] = '\0';
                n=strlen(buf);
            }
  !         else if(buf[0]=='d' || buf[0]=='-' || buf[0]=='l')
            {
                filename=strrchr(buf, ' ');
                *(filename++)=0;
                filename[strlen(filename)-1]=0;
  --- 263,279 ----
            buf[sizeof(buf)-1] = '\0';
                n=strlen(buf);
            }
  !         else if(buf[0]=='d' || buf[0]=='-' || buf[0]=='l' || 
isdigit(buf[0]))
            {
  +         if(isdigit(buf[0])) {               /* handle DOS dir */
  +             searchptr = strchr(buf, '<');
  +             if(searchptr != NULL)
  +                 *searchptr = '[';
  +             searchptr = strchr(buf, '>');
  +             if(searchptr != NULL)
  +                 *searchptr = ']';
  +         }
  +             
                filename=strrchr(buf, ' ');
                *(filename++)=0;
                filename[strlen(filename)-1]=0;
  ***************
  *** 272,282 ****
                /* handle filenames with spaces in 'em */
                if(!strcmp(filename, ".") || !strcmp(filename, "..") || 
firstfile) {
                firstfile = 0;
  -                 searchptr = filename;
                    searchidx = filename - buf;
                }
  !             else if (searchptr != NULL && searchidx != 0 &&
  !           buf[searchidx] != 0) {
                    *(--filename) = ' ';
                    buf[searchidx - 1] = 0;
                    filename = &buf[searchidx];    
  --- 281,289 ----
                /* handle filenames with spaces in 'em */
                if(!strcmp(filename, ".") || !strcmp(filename, "..") || 
firstfile) {
                firstfile = 0;
                    searchidx = filename - buf;
                }
  !             else if (searchidx != 0 && buf[searchidx] != 0) {
                    *(--filename) = ' ';
                    buf[searchidx - 1] = 0;
                    filename = &buf[searchidx];    
  
  
  

Reply via email to