Error if -q is given more than once.
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Mon, 13 Nov 2006 11:56:41 +0000 (11:56 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Mon, 13 Nov 2006 11:56:41 +0000 (11:56 +0000)
doc/doc-txt/ChangeLog
src/src/exim.c

index ee90691..ee58170 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.430 2006/11/13 11:26:37 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.431 2006/11/13 11:56:41 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -264,6 +264,8 @@ PH/40 Import PCRE release 6.7 (fixes some bugs).
 
 PH/41 Add bitwise logical operations to eval (courtesy Brad Jorsch).
 
+PH/42 Give an error if -q is specified more than once.
+
 
 Exim version 4.63
 -----------------
index 0b764e9..6f53c1f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/exim.c,v 1.48 2006/11/07 11:07:43 ph10 Exp $ */
+/* $Cambridge: exim/src/src/exim.c,v 1.49 2006/11/13 11:56:41 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -2646,6 +2646,11 @@ for (i = 1; i < argc; i++)
 
     case 'q':
     receiving_message = FALSE;
+    if (queue_interval >= 0)
+      {
+      fprintf(stderr, "exim: -q specified more than once\n");
+      exit(EXIT_FAILURE);
+      }
 
     /* -qq...: Do queue runs in a 2-stage manner */
 
@@ -2754,7 +2759,6 @@ for (i = 1; i < argc; i++)
         }
       }
     else deliver_selectstring = argrest;
-    if (queue_interval < 0) queue_interval = 0;
     break;
 
 
@@ -2802,7 +2806,6 @@ for (i = 1; i < argc; i++)
         }
       }
     else deliver_selectstring_sender = argrest;
-    if (queue_interval < 0) queue_interval = 0;
     break;
 
     /* -Tqt is an option that is exclusively for use by the testing suite.
@@ -2893,6 +2896,12 @@ for (i = 1; i < argc; i++)
   }
 
 
+/* If -R or -S have been specified without -q, assume a single queue run. */
+
+if ((deliver_selectstring != NULL || deliver_selectstring_sender != NULL) &&
+  queue_interval < 0) queue_interval = 0;
+
+
 /* Arguments have been processed. Check for incompatibilities. */
 
 END_ARG: