aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS3
-rw-r--r--configure.in2
-rw-r--r--socket.c6
3 files changed, 10 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index a6658146..1166f649 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,8 @@
Release Notes:
+fetchmail-4.7.1 ():
+* Enable fetchmail to build correctly on systems without socketpair.
+
fetchmail-4.7.0 (Mon Dec 14 12:05:27 EST 1998):
* Minor correction to make i18n subdirectory builds work better.
* Rob Funk's old-message-check optimization.
diff --git a/configure.in b/configure.in
index da24a7d9..39c81b1e 100644
--- a/configure.in
+++ b/configure.in
@@ -124,7 +124,7 @@ AC_SUBST(EXTRAOBJ)
AC_CHECK_FUNCS(tcsetattr stty setsid seteuid gethostbyname res_search herror \
strrchr strerror setlinebuf syslog snprintf vprintf vsnprintf vsyslog \
- atexit inet_aton strftime setrlimit)
+ atexit inet_aton strftime setrlimit socketpair)
# Under Red Hat 4.0 (and many other Linuxes) -lresolv is seriously flaky
# and breaks gethostbyname(2). It's better to use the bind stuff in the C
diff --git a/socket.c b/socket.c
index 43218b95..7e11a701 100644
--- a/socket.c
+++ b/socket.c
@@ -44,6 +44,7 @@ static int h_errno;
#include <net/security.h>
#endif /* NET_SECURITY */
+#ifdef HAVE_SOCKETPAIR
static int handle_plugin(const char *host,
const char *service, const char *plugin)
/* get a socket mediated through a given external command */
@@ -70,6 +71,7 @@ static int handle_plugin(const char *host,
return fds[1];
}
}
+#endif /* HAVE_SOCKETPAIR */
#if INET6
int SockOpen(const char *host, const char *service, const char *options,
@@ -82,8 +84,10 @@ int SockOpen(const char *host, const char *service, const char *options,
int requestlen;
#endif /* NET_SECURITY */
+#ifdef HAVE_SOCKETPAIR
if (plugin)
return handle_plugin(host,service,plugin);
+#endif /* HAVE_SOCKETPAIR */
memset(&req, 0, sizeof(struct addrinfo));
req.ai_socktype = SOCK_STREAM;
@@ -133,11 +137,13 @@ int SockOpen(const char *host, int clientPort, const char *options,
struct sockaddr_in ad;
struct hostent *hp;
+#ifdef HAVE_SOCKETPAIR
if (plugin) {
char buf[10];
sprintf(buf,"%d",clientPort);
return handle_plugin(host,buf,plugin);
}
+#endif /* HAVE_SOCKETPAIR */
memset(&ad, 0, sizeof(ad));
ad.sin_family = AF_INET;