aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fetchmail.c44
-rw-r--r--fetchmail.h1
-rw-r--r--options.c59
3 files changed, 36 insertions, 68 deletions
diff --git a/fetchmail.c b/fetchmail.c
index ecf398e4..861544f6 100644
--- a/fetchmail.c
+++ b/fetchmail.c
@@ -83,12 +83,43 @@ char **argv;
int mboxfd, st, sargc;
struct hostrec cmd_opts, def_opts;
int parsestatus, implicitmode;
- char *servername, *user, *tmpdir, tmpbuf[BUFSIZ], *sargv[64];
+ char *servername, *user, *home, *tmpdir, tmpbuf[BUFSIZ], *sargv[64];
FILE *tmpfp;
pid_t pid;
- if (setdefaults(&def_opts) != 0)
- exit(PS_UNDEFINED);
+ memset(&def_opts, '\0', sizeof(struct hostrec));
+
+ if ((user = getenv("USER")) == (char *)NULL)
+ user = getenv("LOGNAME");
+
+ if ((user == (char *)NULL) || (home = getenv("HOME")) == (char *)NULL)
+ {
+ struct passwd *pw;
+
+ if ((pw = getpwuid(getuid())) != NULL)
+ {
+ user = pw->pw_name;
+ home = pw->pw_dir;
+ }
+ else
+ {
+ fprintf(stderr,"I can't find your name and home directory!\n");
+ exit(PS_UNDEFINED);
+ }
+ }
+
+ def_opts.protocol = P_AUTO;
+
+ strcpy(def_opts.remotename, user);
+ strcpy(def_opts.smtphost, "localhost");
+
+ rcfile =
+ (char *) xmalloc(strlen(home)+strlen(RCFILE_NAME)+2);
+ strcpy(rcfile, home);
+ strcat(rcfile, "/");
+ strcat(rcfile, RCFILE_NAME);
+
+ outlevel = O_NORMAL;
if (argc > sizeof(sargv))
exit(PS_SYNTAX);
@@ -153,11 +184,8 @@ char **argv;
strcpy(tmpbuf, tmpdir);
strcat(tmpbuf, "/fetchmail-");
gethostname(tmpbuf + strlen(tmpbuf), HOSTLEN+1);
- if ((user = getenv("USER")) != (char *)NULL)
- {
- strcat(tmpbuf, "-");
- strcat(tmpbuf, user);
- }
+ strcat(tmpbuf, "-");
+ strcat(tmpbuf, user);
/* perhaps we just want to check options? */
if (versioninfo) {
diff --git a/fetchmail.h b/fetchmail.h
index ef49b23d..9c7f0e9f 100644
--- a/fetchmail.h
+++ b/fetchmail.h
@@ -124,7 +124,6 @@ int doPOP3 (struct hostrec *);
int doIMAP (struct hostrec *);
int parsecmdline (int, char **, struct hostrec *);
-int setdefaults (struct hostrec *);
char *getnextserver (int argc, char **, int *);
char *MD5Digest (char *);
int openmailpipe (struct hostrec *);
diff --git a/options.c b/options.c
index 08bcbd35..6649142c 100644
--- a/options.c
+++ b/options.c
@@ -238,65 +238,6 @@ struct hostrec *queryctl;
return(optind);
}
-
-
-/*********************************************************************
- function: setdefaults
- description: set reasonable default values for unspecified options.
- arguments:
- options option values parsed from the command-line; unspeci-
- fied options must be filled with zero.
-
- return value: zero if defaults were successfully set, else non-zero
- (indicates a problem reading /etc/passwd).
- calls: none.
- globals: writes outlevel, rcfile.
- *********************************************************************/
-#include <stdlib.h>
-
-int setdefaults (queryctl)
-struct hostrec *queryctl;
-{
- char *user, *home;
-
- memset(queryctl, '\0', sizeof(*queryctl));
-
- if ((user = getenv("USER")) == (char *)NULL
- || (home = getenv("HOME")) == (char *)NULL)
- {
- struct passwd *pw;
-
- if ((pw = getpwuid(getuid())) != NULL)
- {
- user = pw->pw_name;
- home = pw->pw_dir;
- }
- else
- {
- fprintf(stderr,"I can't find your name and home directory!\n");
- return(-1);
- }
- }
-
- queryctl->protocol = P_AUTO;
- queryctl->keep = 0;
- queryctl->norewrite = 0;
-
- strcpy(queryctl->remotename, user);
- strcpy(queryctl->smtphost, "localhost");
-
- rcfile =
- (char *) xmalloc(strlen(home)+strlen(RCFILE_NAME)+2);
- strcpy(rcfile, home);
- strcat(rcfile, "/");
- strcat(rcfile, RCFILE_NAME);
-
- outlevel = O_NORMAL;
-
- return(0);
-}
-
-
/******************************************************************
function: getnextserver