diff options
Diffstat (limited to 'alpine/rpdump.c')
-rw-r--r-- | alpine/rpdump.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/alpine/rpdump.c b/alpine/rpdump.c index 2c677d93..6dfbfee2 100644 --- a/alpine/rpdump.c +++ b/alpine/rpdump.c @@ -536,14 +536,23 @@ void mm_log(string, errflg) } } +void mm_login_method(mb, user, pwd, trial, method) + NETMBX *mb; + char *user; + void *pwd; + long trial; + char *method; +{ + mm_login(mb, user, (char **) pwd, trial); +} void mm_login(mb, user, pwd, trial) NETMBX *mb; char *user; - char *pwd; + char **pwd; long trial; { - char prompt[100], *last; + char prompt[100], *last, tmp[MAILTMPLEN]; int i, j, goal, ugoal, len, rc, flags = 0; #define NETMAXPASSWD 100 @@ -595,14 +604,14 @@ void mm_login(mb, user, pwd, trial) if(rc == 1 || !user[0]) { user[0] = '\0'; - pwd[0] = '\0'; + *pwd = NULL; } } else strncpy(user, mb->user, NETMAXUSER); user[NETMAXUSER-1] = '\0'; - pwd[NETMAXPASSWD-1] = '\0'; +// pwd[NETMAXPASSWD-1] = '\0'; if(!user[0]) return; @@ -662,16 +671,17 @@ void mm_login(mb, user, pwd, trial) strncpy(&prompt[i], &" ENTER PASSWORD: "[i ? 0 : 8], sizeof(prompt)-i); prompt[sizeof(prompt)-1] = '\0'; - *pwd = '\0'; + tmp[0] = '\0'; while(1) { flags = OE_PASSWD; - rc = opt_enter(pwd, NETMAXPASSWD, prompt, &flags); + rc = opt_enter(tmp, NETMAXPASSWD, prompt, &flags); if(rc != 4) break; } - if(rc == 1 || !pwd[0]) { - user[0] = pwd[0] = '\0'; + if(tmp[0]) *pwd = cpystr(tmp); + if(rc == 1 || !tmp[0]) { + user[0] = '\0'; return; } } |