From 5a1dd0c605715b4324fdd08b8e1989aed8a94eb8 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Fri, 24 Jan 1997 00:37:30 +0000 Subject: Correct the interface parsing. svn path=/trunk/; revision=818 --- fetchmail.c | 5 ----- fetchmail.h | 2 +- interface.c | 9 +++------ rcfile_y.y | 4 +++- 4 files changed, 7 insertions(+), 13 deletions(-) diff --git a/fetchmail.c b/fetchmail.c index ea973152..46c77799 100644 --- a/fetchmail.c +++ b/fetchmail.c @@ -634,11 +634,6 @@ static int load_params(int argc, char **argv, int optind) if (ctl->server.envelope == (char *)NULL) ctl->server.envelope = "X-Envelope-To:"; -#ifdef linux - /* interface_parse() does its own error logging */ - interface_parse(&ctl->server); -#endif /* linux */ - /* sanity checks */ if (ctl->server.port < 0) { diff --git a/fetchmail.h b/fetchmail.h index e18a7b52..18bfbe1f 100644 --- a/fetchmail.h +++ b/fetchmail.h @@ -224,7 +224,7 @@ int daemonize(const char *, void (*)(int)); int prc_parse_file(const char *); int prc_filecheck(const char *); -void interface_parse(struct hostdata *); +void interface_parse(char *, struct hostdata *); void interface_note_activity(struct hostdata *); int interface_approve(struct hostdata *); diff --git a/interface.c b/interface.c index 19bbd820..6342df7c 100644 --- a/interface.c +++ b/interface.c @@ -98,19 +98,16 @@ static int get_ifinfo(const char *ifname, ifinfo_t *ifinfo) return(result); } -void interface_parse(struct hostdata *hp) +void interface_parse(char *buf, struct hostdata *hp) /* parse 'interface' specification */ { char *cp1, *cp2; - /* if no interface specification present, all done */ - if (!hp->interface) - return; - /* find and isolate just the IP address */ - if (!(cp1 = strchr(hp->interface, '/'))) + if (!(cp1 = strchr(buf, '/'))) (void) error(PS_SYNTAX, 0, "missing IP interface address"); *cp1++ = '\000'; + hp->interface = xstrdup(buf); /* find and isolate just the netmask */ if (!(cp2 = strchr(cp1, '/'))) diff --git a/rcfile_y.y b/rcfile_y.y index 8e6d0cd5..dfc3dbdd 100644 --- a/rcfile_y.y +++ b/rcfile_y.y @@ -116,7 +116,7 @@ serv_option : AKA alias_list | ENVELOPE STRING {current.server.envelope = xstrdup($2);} | INTERFACE STRING { #ifdef linux - current.server.interface = xstrdup($2); + interface_parse($2, ¤t.server); #else fprintf(stderr, "fetchmail: interface option is only supported under Linux\n"); #endif /* linux */ @@ -337,6 +337,7 @@ static void prc_register(void) #ifdef linux FLAG_FORCE(server.interface); FLAG_FORCE(server.monitor); + FLAG_FORCE(server.interface_pair); #endif /* linux */ FLAG_FORCE(remotename); @@ -377,6 +378,7 @@ void optmerge(struct query *h2, struct query *h1) #ifdef linux FLAG_MERGE(server.interface); FLAG_MERGE(server.monitor); + FLAG_MERGE(server.interface_pair); #endif /* linux */ FLAG_MERGE(remotename); -- cgit v1.2.3