diff --git a/vfs/ChangeLog b/vfs/ChangeLog index bb4aa434a..0b03941c8 100644 --- a/vfs/ChangeLog +++ b/vfs/ChangeLog @@ -1,5 +1,8 @@ 2002-07-12 Pavel Roskin + * ftpfs.c (ftp_split_url): Implement looking up password in + .netrc for known user. + * ftpfs.c (ftp_split_url): Don't expect lookup_netrc() to always return a username. (netrc_has_incorrect_mode): Don't free anything, it can result diff --git a/vfs/ftpfs.c b/vfs/ftpfs.c index af09f25f2..b028baaf8 100644 --- a/vfs/ftpfs.c +++ b/vfs/ftpfs.c @@ -226,12 +226,28 @@ ftp_split_url(char *path, char **host, char **user, int *port, char **pass) URL_ALLOW_ANON); if (!*user) { + /* Look up user and password in netrc */ if (use_netrc) lookup_netrc (*host, user, pass); if (!*user) *user = g_strdup ("anonymous"); } + /* Look up password in netrc for known user */ + if (use_netrc && *user && pass && !*pass) { + char *new_user; + + lookup_netrc (*host, &new_user, pass); + + /* If user is different, remove password */ + if (new_user && strcmp (*user, new_user)) { + g_free (*pass); + *pass = NULL; + } + + g_free (new_user); + } + if (p) g_free (p); }