Remove broken code in exim.h that tried to preserve EX_OK when it was
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Tue, 24 May 2005 10:57:10 +0000 (10:57 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Tue, 24 May 2005 10:57:10 +0000 (10:57 +0000)
redefined in unistd.h (IRIX6). It didn't matter because EX_OK is not
used.

doc/doc-txt/ChangeLog
src/src/exim.h

index ea066a4..d7d60c0 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.142 2005/05/24 08:28:58 tom Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.143 2005/05/24 10:57:10 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -41,6 +41,12 @@ TK/02 Rewrote SPF support to work with libspf2 versions >1.2.0.
 
 TK/03 Merged latest SRS patch from Miles Wilton.
 
+PH/05 There's a shambles in IRIX6 - it defines EX_OK in unistd.h which conflicts
+      with the definition in sysexits.h (which is #included earlier).
+      Fortunately, Exim does not actually use EX_OK. The code used to try to
+      preserve the sysexits.h value, by assumimg that macro definitions were
+      scanned for macro replacements. I have been disabused of this notion,
+      so now the code just undefines EX_OK before #including unistd.h.
 
 
 Exim version 4.51
index 44e4ab3..6721cb6 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/exim.h,v 1.14 2005/05/23 16:58:56 fanf2 Exp $ */
+/* $Cambridge: exim/src/src/exim.h,v 1.15 2005/05/24 10:57:10 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -221,23 +221,19 @@ or a macro with entries f_frsize and f_bsize. */
 #include <fcntl.h>
 
 /* There's a shambles in IRIX6 - it defines EX_OK in unistd.h which conflicts
-with the definition in sysexits.h. Arrange to preserve it, even though at
-present Exim doesn't actually use it. */
+with the definition in sysexits.h. Exim does not actually use this macro, so we
+just undefine it. It would be nice to be able to re-instate the definition from
+sysexits.h if there is no definition in unistd.h, but I do not think there is a
+way to do this in C because macro definitions are not scanned for other macros
+at definition time. [The code here used to assume they were, until I was
+disabused of the notion. Luckily, since EX_OK is not used, it didn't matter.] */
 
 #ifdef EX_OK
-#define SAVE_EX_OK EX_OK
 #undef EX_OK
 #endif
 
 #include <unistd.h>
 
-#ifdef SAVE_EX_OK
-#ifdef EX_OK
-#undef EX_OK
-#endif
-#define EX_OK SAVE_EX_OK
-#endif
-
 #include <utime.h>
 #ifndef NO_NET_IF_H
 #include <net/if.h>