diff -N -c -r -X exclude_files squid-1.0.beta5/src/ftpget.c squid-1.0.beta5.henrik/src/ftpget.c *** squid-1.0.beta5/src/ftpget.c Fri May 3 00:51:16 1996 --- squid-1.0.beta5.henrik/src/ftpget.c Fri May 3 02:27:19 1996 *************** *** 127,132 **** --- 127,133 ---- #define F_TRYDIR 0x10 #define F_NEEDACCEPT 0x20 #define F_USEBASE 0x40 + #define F_BASEDIR 0x80 typedef enum { BEGIN, *************** *** 468,473 **** --- 469,475 ---- tv.tv_sec = o_timeout; tv.tv_usec = 0; FD_ZERO(&R); + FD_ZERO(&W); FD_SET(fd, &W); FD_SET(0, &R); last_alarm_set = time(NULL); *************** *** 1295,1301 **** Debug(26,10,("do_cwd: \"%s\"\n",r->path)); ! if (!strcmp(r->path, ".")) return CWD_OK; sprintf(cbuf, "CWD %s", r->path); --- 1297,1303 ---- Debug(26,10,("do_cwd: \"%s\"\n",r->path)); ! if (r->flags & F_BASEDIR) return CWD_OK; sprintf(cbuf, "CWD %s", r->path); *************** *** 1790,1801 **** write_with_timeout(r->cfd, l->ptr, strlen(l->ptr)); fprintf(wfp, "\n"); fprintf(wfp, "
\n"); while (fgets(buf, SMALLBUFSIZ, r->readme_fp)) fputs(buf, wfp); fclose(r->readme_fp); fprintf(wfp, "\n"); fprintf(wfp, "
\n"); while (fgets(buf, SMALLBUFSIZ, r->readme_fp)) fputs(buf, wfp); fclose(r->readme_fp); + r->readme_fp=NULL; fprintf(wfp, "\n"); fprintf(wfp, "
\n");
! if (strcmp(r->path, ".")) {
if ((t = htmlize_list_entry("..", r))) {
fputs(t, wfp);
xfree(t);
--- 1806,1812 ----
fprintf(wfp, "FTP Directory: %s\n", r->title_url);
fprintf(wfp, "\n");
fprintf(wfp, "\n");
! if (!(r->flags&F_BASEDIR)) {
if ((t = htmlize_list_entry("..", r))) {
fputs(t, wfp);
xfree(t);
***************
*** 1836,1841 ****
--- 1839,1853 ----
}
fprintf(wfp, "\n");
fprintf(wfp, "
\n");
+ if ( r->readme_fp) {
+ fprintf(wfp, "README file from %s
\n", r->title_url);
+ fprintf(wfp, "\n");
+ while (fgets(buf, SMALLBUFSIZ, r->readme_fp))
+ fputs(buf, wfp);
+ fclose(r->readme_fp);
+ fprintf(wfp, "
\n");
+ fprintf(wfp, "
\n");
+ }
fprintf(wfp, "\n");
fprintf(wfp, "Generated %s, by %s/%s@%s\n",
http_time(stamp), progname, SQUID_VERSION, getfullhostname());
***************
*** 1869,1874 ****
--- 1881,1891 ----
break;
case CONNECTED:
r->state = read_welcome(r);
+ if ((r->flags & F_HTTPIFY) && (r->flags & F_BASEDIR) && cmd_msg) {
+ list_t *t = r->cmd_msg;
+ r->cmd_msg = cmd_msg;
+ cmd_msg = t;
+ }
break;
case FAIL_CONNECT:
r->state = FAIL_SOFT;
***************
*** 1884,1889 ****
--- 1901,1911 ----
r->state = do_passwd(r);
break;
case LOGGED_IN:
+ if ((r->flags & F_HTTPIFY) && (r->flags & F_BASEDIR) && cmd_msg) {
+ list_t *t = r->cmd_msg;
+ r->cmd_msg = cmd_msg;
+ cmd_msg = t;
+ }
r->state = do_type(r);
break;
case FAIL_LOGIN:
***************
*** 1913,1932 ****
if(!r->flags & F_ISDIR)
r->flags |= F_USEBASE;
r->flags |= F_ISDIR;
! if (strcmp(r->path, ".")) {
/* tack on the trailing slash now that we know its a dir */
strcat(r->url, "/");
strcat(r->title_url, "/");
strcat(r->url_escaped, "/");
}
if (r->flags & F_HTTPIFY) {
! if (cmd_msg) {
r->cmd_msg = cmd_msg;
! cmd_msg = NULL;
! } else {
! if (o_readme)
! try_readme(r);
}
}
r->state = do_pasv(r);
break;
--- 1935,1954 ----
if(!r->flags & F_ISDIR)
r->flags |= F_USEBASE;
r->flags |= F_ISDIR;
! if (!(r->flags&F_BASEDIR)) {
/* tack on the trailing slash now that we know its a dir */
strcat(r->url, "/");
strcat(r->title_url, "/");
strcat(r->url_escaped, "/");
}
if (r->flags & F_HTTPIFY) {
! if (!(r->flags & F_BASEDIR) || cmd_msg) {
! list_t *t = r->cmd_msg;
r->cmd_msg = cmd_msg;
! cmd_msg = t;
}
+ if (o_readme)
+ try_readme(r);
}
r->state = do_pasv(r);
break;
***************
*** 2013,2018 ****
--- 2035,2041 ----
if (*r->path == '\0') {
t = r->path;
r->path = xstrdup(".");
+ r->flags |= F_BASEDIR;
xfree(t);
again = 1;
} else if ((l>=1) && (*(r->path + l - 1) == '/')) {
***************
*** 2403,2409 ****
}
strcat(r->url, r->host);
strcat(r->url, "/");
! if (strcmp(r->path, "."))
strcat(r->url, r->path);
*r->title_url = '\0';
--- 2426,2432 ----
}
strcat(r->url, r->host);
strcat(r->url, "/");
! if (!(r->flags&F_BASEDIR))
strcat(r->url, r->path);
*r->title_url = '\0';
***************
*** 2414,2420 ****
}
strcat(r->title_url, r->host);
strcat(r->title_url, "/");
! if (strcmp(r->path, "."))
strcat(r->title_url, r->path);
/* Make a copy of the escaped URL with some room to grow at the end */
--- 2437,2443 ----
}
strcat(r->title_url, r->host);
strcat(r->title_url, "/");
! if (!(r->flags&F_BASEDIR))
strcat(r->title_url, r->path);
/* Make a copy of the escaped URL with some room to grow at the end */