Change HAVE_LOGIN_CAP to HAVE_SETCLASSRESOURCES because the former isn't
[exim.git] / src / src / exim.c
index 44e0a9a14691b7766c04f0933ad4cf934703ea24..9384cc192af714e8ebcaddcef8b73475c55a8afb 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/exim.c,v 1.35 2006/02/22 14:46:44 ph10 Exp $ */
+/* $Cambridge: exim/src/src/exim.c,v 1.38 2006/03/16 12:25:24 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -397,10 +397,9 @@ Returns:          the fopened FILE or NULL
 FILE *
 modefopen(uschar *filename, char *options, mode_t mode)
 {
 FILE *
 modefopen(uschar *filename, char *options, mode_t mode)
 {
-FILE *f;
-umask(0777);
-f = Ufopen(filename, options);
-umask(0);
+mode_t saved_umask = umask(0777);
+FILE *f = Ufopen(filename, options);
+(void)umask(saved_umask);
 if (f != NULL) (void)fchmod(fileno(f), mode);
 return f;
 }
 if (f != NULL) (void)fchmod(fileno(f), mode);
 return f;
 }
@@ -875,8 +874,8 @@ fprintf(f, "Support for:");
 #if HAVE_IPV6
   fprintf(f, " IPv6");
 #endif
 #if HAVE_IPV6
   fprintf(f, " IPv6");
 #endif
-#ifdef HAVE_LOGIN_CAP
-  fprintf(f, " use_classresources");
+#ifdef HAVE_SETCLASSRESOURCES
+  fprintf(f, " use_setclassresources");
 #endif
 #ifdef SUPPORT_PAM
   fprintf(f, " PAM");
 #endif
 #ifdef SUPPORT_PAM
   fprintf(f, " PAM");
@@ -1473,7 +1472,7 @@ message_id_external[0] = 'E';
 message_id = message_id_external + 1;
 message_id[0] = 0;
 
 message_id = message_id_external + 1;
 message_id[0] = 0;
 
-/* Set the umask to zero so that any files that Exim creates using open() are
+/* Set the umask to zero so that any files Exim creates using open() are
 created with the modes that it specifies. NOTE: Files created with fopen() have
 a problem, which was not recognized till rather late (February 2006). With this
 umask, such files will be world writeable. (They are all content scanning files
 created with the modes that it specifies. NOTE: Files created with fopen() have
 a problem, which was not recognized till rather late (February 2006). With this
 umask, such files will be world writeable. (They are all content scanning files
@@ -1483,7 +1482,7 @@ however, because it will interact badly with the open() calls. Instead, there's
 now a function called modefopen() that fiddles with the umask while calling
 fopen(). */
 
 now a function called modefopen() that fiddles with the umask while calling
 fopen(). */
 
-umask(0);
+(void)umask(0);
 
 /* Precompile the regular expression for matching a message id. Keep this in
 step with the code that generates ids in the accept.c module. We need to do
 
 /* Precompile the regular expression for matching a message id. Keep this in
 step with the code that generates ids in the accept.c module. We need to do
@@ -3726,11 +3725,13 @@ if (test_retry_arg >= 0)
       return EXIT_FAILURE;
       }
 
       return EXIT_FAILURE;
       }
 
-    /* For the rcpt_4xx errors, a value of 255 means "any", and a code > 100 as
-    an error is for matching codes to the decade. Turn them into a real error
-    code, off the decade. */
+    /* For the {MAIL,RCPT,DATA}_4xx errors, a value of 255 means "any", and a
+    code > 100 as an error is for matching codes to the decade. Turn them into
+    a real error code, off the decade. */
 
 
-    if (basic_errno == ERRNO_RCPT4XX)
+    if (basic_errno == ERRNO_MAIL4XX ||
+        basic_errno == ERRNO_RCPT4XX ||
+        basic_errno == ERRNO_DATA4XX)
       {
       int code = (more_errno >> 8) & 255;
       if (code == 255)
       {
       int code = (more_errno >> 8) & 255;
       if (code == 255)