From: Tom Kistner Date: Tue, 10 May 2005 22:39:20 +0000 (+0000) Subject: Fix poll() being unavailable on Mac OSX 10.2 X-Git-Tag: exim-4_52~99 X-Git-Url: https://git.exim.org/exim.git/commitdiff_plain/f452e07e85093659d7a4ee367a88e6c2bdb41825?hp=a4e3111f2b200abc53c4a23133698d765e201600 Fix poll() being unavailable on Mac OSX 10.2 --- diff --git a/src/OS/os.h-Darwin b/src/OS/os.h-Darwin index 3a716376d..8efbc8562 100644 --- a/src/OS/os.h-Darwin +++ b/src/OS/os.h-Darwin @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/OS/os.h-Darwin,v 1.1 2004/10/06 15:07:39 ph10 Exp $ */ +/* $Cambridge: exim/src/OS/os.h-Darwin,v 1.2 2005/05/10 22:39:20 tom Exp $ */ /* Exim: OS-specific C header file for Darwin (Mac OS X) */ @@ -9,6 +9,9 @@ #define PAM_H_IN_PAM #define SIOCGIFCONF_GIVES_ADDR +/* OSX 10.2 does not have poll.h, 10.3 does emulate it badly. */ +#define NO_POLL_H + #define F_FREESP O_TRUNC typedef struct flock flock_t; diff --git a/src/src/exim.h b/src/src/exim.h index 9bc15cecb..bfe4819a2 100644 --- a/src/src/exim.h +++ b/src/src/exim.h @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/exim.h,v 1.12 2005/05/10 10:19:11 ph10 Exp $ */ +/* $Cambridge: exim/src/src/exim.h,v 1.13 2005/05/10 22:39:20 tom Exp $ */ /************************************************* * Exim - an Internet mail transport agent * @@ -92,7 +92,9 @@ making unique names. */ #include #include #include +#ifndef NO_POLL_H #include +#endif #include #include #include diff --git a/src/src/spam.c b/src/src/spam.c index 0f6ad1434..3c70f6d99 100644 --- a/src/src/spam.c +++ b/src/src/spam.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/spam.c,v 1.5 2005/04/27 10:00:18 ph10 Exp $ */ +/* $Cambridge: exim/src/src/spam.c,v 1.6 2005/05/10 22:39:20 tom Exp $ */ /************************************************* * Exim - an Internet mail transport agent * @@ -40,7 +40,9 @@ int spam(uschar **listptr) { time_t start; size_t read, wrote; struct sockaddr_un server; +#ifndef NO_POLL_H struct pollfd pollfd; +#endif /* find the username from the option list */ if ((user_name = string_nextinlist(&list, &sep, @@ -213,15 +215,19 @@ int spam(uschar **listptr) { * and we poll the desciptor to make sure that we can write without * blocking. Short writes are gracefully handled and if the whole * trasaction takes too long it is aborted. + * Note: poll() is not supported in OSX 10.2. */ +#ifndef NO_POLL_H pollfd.fd = spamd_sock; pollfd.events = POLLOUT; +#endif fcntl(spamd_sock, F_SETFL, O_NONBLOCK); do { read = fread(spamd_buffer,1,sizeof(spamd_buffer),mbox_file); if (read > 0) { offset = 0; again: +#ifndef NO_POLL_H result = poll(&pollfd, 1, 1000); if (result == -1 && errno == EINTR) continue; @@ -239,6 +245,7 @@ again: fclose(mbox_file); return DEFER; } +#endif wrote = send(spamd_sock,spamd_buffer + offset,read - offset,0); if (offset + wrote != read) { offset += wrote;