diff options
author | ume <ume@FreeBSD.org> | 2000-05-15 09:05:36 +0000 |
---|---|---|
committer | ume <ume@FreeBSD.org> | 2000-05-15 09:05:36 +0000 |
commit | 3194168ffccea41a2d572f092b26b85e568d0985 (patch) | |
tree | 0314fc29dbb4092aa1893b0d8fc4b4af98eab890 /lib/libfetch/fetch.c | |
parent | f2836e8cf791f4b8f244167dd4022f57c4ab31eb (diff) | |
download | FreeBSD-src-3194168ffccea41a2d572f092b26b85e568d0985.zip FreeBSD-src-3194168ffccea41a2d572f092b26b85e568d0985.tar.gz |
Make HTTP_PROXY work for FTP.
Reported by: Ben Smithurst <ben@scientia.demon.co.uk>
Reviewed by: des
Diffstat (limited to 'lib/libfetch/fetch.c')
-rw-r--r-- | lib/libfetch/fetch.c | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/lib/libfetch/fetch.c b/lib/libfetch/fetch.c index c7e46a9..ecf15b1 100644 --- a/lib/libfetch/fetch.c +++ b/lib/libfetch/fetch.c @@ -69,13 +69,19 @@ static struct fetcherr _url_errlist[] = { FILE * fetchGet(struct url *URL, char *flags) { + int direct; + + direct = (flags && strchr(flags, 'd')); if (strcasecmp(URL->scheme, "file") == 0) return fetchGetFile(URL, flags); else if (strcasecmp(URL->scheme, "http") == 0) return fetchGetHTTP(URL, flags); - else if (strcasecmp(URL->scheme, "ftp") == 0) + else if (strcasecmp(URL->scheme, "ftp") == 0) { + if (!direct && + getenv("FTP_PROXY") == NULL && getenv("HTTP_PROXY") != NULL) + return fetchGetHTTP(URL, flags); return fetchGetFTP(URL, flags); - else { + } else { _url_seterr(URL_BAD_SCHEME); return NULL; } @@ -88,13 +94,19 @@ fetchGet(struct url *URL, char *flags) FILE * fetchPut(struct url *URL, char *flags) { + int direct; + + direct = (flags && strchr(flags, 'd')); if (strcasecmp(URL->scheme, "file") == 0) return fetchPutFile(URL, flags); else if (strcasecmp(URL->scheme, "http") == 0) return fetchPutHTTP(URL, flags); - else if (strcasecmp(URL->scheme, "ftp") == 0) + else if (strcasecmp(URL->scheme, "ftp") == 0) { + if (!direct && + getenv("FTP_PROXY") == NULL && getenv("HTTP_PROXY") != NULL) + return fetchPutHTTP(URL, flags); return fetchPutFTP(URL, flags); - else { + } else { _url_seterr(URL_BAD_SCHEME); return NULL; } @@ -107,13 +119,19 @@ fetchPut(struct url *URL, char *flags) int fetchStat(struct url *URL, struct url_stat *us, char *flags) { + int direct; + + direct = (flags && strchr(flags, 'd')); if (strcasecmp(URL->scheme, "file") == 0) return fetchStatFile(URL, us, flags); else if (strcasecmp(URL->scheme, "http") == 0) return fetchStatHTTP(URL, us, flags); - else if (strcasecmp(URL->scheme, "ftp") == 0) + else if (strcasecmp(URL->scheme, "ftp") == 0) { + if (!direct && + getenv("FTP_PROXY") == NULL && getenv("HTTP_PROXY") != NULL) + return fetchStatHTTP(URL, us, flags); return fetchStatFTP(URL, us, flags); - else { + } else { _url_seterr(URL_BAD_SCHEME); return -1; } @@ -126,13 +144,19 @@ fetchStat(struct url *URL, struct url_stat *us, char *flags) struct url_ent * fetchList(struct url *URL, char *flags) { + int direct; + + direct = (flags && strchr(flags, 'd')); if (strcasecmp(URL->scheme, "file") == 0) return fetchListFile(URL, flags); else if (strcasecmp(URL->scheme, "http") == 0) return fetchListHTTP(URL, flags); - else if (strcasecmp(URL->scheme, "ftp") == 0) + else if (strcasecmp(URL->scheme, "ftp") == 0) { + if (!direct && + getenv("FTP_PROXY") == NULL && getenv("HTTP_PROXY") != NULL) + return fetchListHTTP(URL, flags); return fetchListFTP(URL, flags); - else { + } else { _url_seterr(URL_BAD_SCHEME); return NULL; } |