Deleted Added
full compact
28c28
< * $FreeBSD: head/lib/libfetch/ftp.c 77234 2001-05-26 17:23:38Z des $
---
> * $FreeBSD: head/lib/libfetch/ftp.c 77238 2001-05-26 19:37:15Z des $
714a715,757
> * Authenticate
> */
> static int
> _ftp_authenticate(int cd, struct url *url, struct url *purl)
> {
> char *user, *pwd, *logname;
> char pbuf[MAXHOSTNAMELEN + MAXLOGNAME + 1];
> int e, len;
>
> /* XXX FTP_AUTH, and maybe .netrc */
>
> /* send user name and password */
> user = url->user;
> if (!user || !*user)
> user = getenv("FTP_LOGIN");
> if (!user || !*user)
> user = FTP_ANONYMOUS_USER;
> if (purl && url->port == _fetch_default_port(url->scheme))
> e = _ftp_cmd(cd, "USER %s@%s", user, url->host);
> else if (purl)
> e = _ftp_cmd(cd, "USER %s@%s@%d", user, url->host, url->port);
> else
> e = _ftp_cmd(cd, "USER %s", user);
>
> /* did the server request a password? */
> if (e == FTP_NEED_PASSWORD) {
> pwd = url->pwd;
> if (!pwd || !*pwd)
> pwd = getenv("FTP_PASSWORD");
> if (!pwd || !*pwd) {
> if ((logname = getlogin()) == 0)
> logname = FTP_ANONYMOUS_USER;
> len = snprintf(pbuf, MAXLOGNAME + 1, "%s@", logname);
> gethostname(pbuf + len, sizeof pbuf - len);
> pwd = pbuf;
> }
> e = _ftp_cmd(cd, "PASS %s", pwd);
> }
>
> return e;
> }
>
> /*
726,730d768
< const char *logname;
< const char *user;
< const char *pwd;
< char localhost[MAXHOSTNAMELEN];
< char pbuf[MAXHOSTNAMELEN + MAXLOGNAME + 1];
761,762d798
<
< /* XXX FTP_AUTH, and maybe .netrc */
764,793c800,801
< /* send user name and password */
< user = url->user;
< if (!user || !*user)
< user = getenv("FTP_LOGIN");
< if (!user || !*user)
< user = FTP_ANONYMOUS_USER;
< if (purl && url->port == _fetch_default_port(url->scheme))
< e = _ftp_cmd(cd, "USER %s@%s", user, url->host);
< else if (purl)
< e = _ftp_cmd(cd, "USER %s@%s@%d", user, url->host, url->port);
< else
< e = _ftp_cmd(cd, "USER %s", user);
<
< /* did the server request a password? */
< if (e == FTP_NEED_PASSWORD) {
< pwd = url->pwd;
< if (!pwd || !*pwd)
< pwd = getenv("FTP_PASSWORD");
< if (!pwd || !*pwd) {
< if ((logname = getlogin()) == 0)
< logname = FTP_ANONYMOUS_USER;
< gethostname(localhost, sizeof localhost);
< snprintf(pbuf, sizeof pbuf, "%s@%s", logname, localhost);
< pwd = pbuf;
< }
< e = _ftp_cmd(cd, "PASS %s", pwd);
< }
<
< /* did the server request an account? */
< if (e == FTP_NEED_ACCOUNT)
---
> /* authenticate */
> if ((e = _ftp_authenticate(cd, url, purl)) != FTP_LOGGED_IN)
796,799d803
< /* we should be done by now */
< if (e != FTP_LOGGED_IN)
< goto fouch;
<