diff options
-rw-r--r-- | fetchmail.c | 24 | ||||
-rw-r--r-- | fetchmail.man | 1 |
2 files changed, 21 insertions, 4 deletions
diff --git a/fetchmail.c b/fetchmail.c index 51bc9269..44c16ce9 100644 --- a/fetchmail.c +++ b/fetchmail.c @@ -92,7 +92,7 @@ char **argv; { int mboxfd, st, sargc; struct hostrec cmd_opts, def_opts; - int parsestatus; + int parsestatus, implicitmode; char *servername, *user, *tmpdir, tmpbuf[256], *sargv[64]; FILE *tmpfp; pid_t pid; @@ -114,7 +114,7 @@ char **argv; if (prc_parse_file(rcfile) != 0) exit(PS_SYNTAX); - if (optind >= argc) + if (implicitmode = (optind >= sargc)) append_server_names(&sargc, sargv, sizeof(sargv)); /* build in-core data list on all hosts */ @@ -223,6 +223,19 @@ char **argv; fclose(tmpfp); } + /* pick up interactively any passwords we need but don't have */ + for (hostp = hostlist; hostp; hostp = hostp->next) + if (!(implicitmode && hostp->explicit) + && !hostp->password[0] && !hostp->rpopid[0]) + { + char prompt[BUFSIZ]; + + (void) sprintf(prompt, "Enter password for %s@%s: ", + hostp->remotename, servername); + (void) strncpy(hostp->password, + (char *)getpassword(prompt),PASSWORDLEN-1); + } + /* * Maybe time to go to demon mode... */ @@ -248,7 +261,8 @@ char **argv; */ do { for (hostp = hostlist; hostp; hostp = hostp->next) { - popstatus = query_host(hostp); + if (!implicitmode || !hostp->explicit) + popstatus = query_host(hostp); } sleep(poll_interval); @@ -395,7 +409,9 @@ struct hostrec *queryctl; printf(" This host will%s be queried when no host is specified.\n", queryctl->explicit ? " not" : ""); printf(" Username = '%s'\n", queryctl->remotename); - if (queryctl->password && outlevel == O_VERBOSE) + if (queryctl->password[0] == '\0') + printf(" Password will be prompted for.\n"); + else if (outlevel == O_VERBOSE) printf(" Password = '%s'\n", queryctl->password); if (queryctl->rpopid[0]) printf(" RPOP id = '%s'\n", queryctl->rpopid); diff --git a/fetchmail.man b/fetchmail.man index 08d4f399..c6215f9b 100644 --- a/fetchmail.man +++ b/fetchmail.man @@ -424,6 +424,7 @@ not to query this host unless it is explicitly named on the command line. A host entry with this flag will be skipped when .I fetchmail called with no arguments steps through all hosts in the run control file. +(This option allows you to experiment with test entries safely.) .PP Legal protocol identifiers are |