Fix dns authority-name lookup
[exim.git] / src / src / queue.c
index 16e18efc536a91586b000454e22305fc1baacf60..e7ae019d2f1c0892d166ddab14d6297bfa946acf 100644 (file)
 
 /* Routines with knowlege of spool layout */
 
+#ifndef COMPILE_UTILITY
 static void
 spool_pname_buf(uschar * buf, int len)
 {
 snprintf(CS buf, len, "%s/%s/input", spool_directory, queue_name);
 }
 
-static uschar *
+uschar *
 spool_dname(const uschar * purpose, uschar * subdir)
 {
 return string_sprintf("%s/%s/%s/%s",
        spool_directory, queue_name, purpose, subdir);
 }
+#endif
 
 uschar *
 spool_sname(const uschar * purpose, uschar * subdir)
@@ -37,7 +39,8 @@ return string_sprintf("%s%s%s%s%s",
 }
 
 uschar *
-spool_fname(const uschar * purpose, uschar * subdir, uschar * fname, uschar * suffix)
+spool_fname(const uschar * purpose, const uschar * subdir, const uschar * fname,
+               const uschar * suffix)
 {
 return string_sprintf("%s/%s/%s/%s/%s%s",
        spool_directory, queue_name, purpose, subdir, fname, suffix);
@@ -682,8 +685,9 @@ for (i  = (queue_run_in_order? -1 : 0);
     the mere fact that read() unblocks is enough. */
 
     set_process_info("running queue: waiting for children of %d", pid);
-    if (read(pfd[pipe_read], buffer, sizeof(buffer)) > 0)
-      log_write(0, LOG_MAIN|LOG_PANIC, "queue run: unexpected data on pipe");
+    if ((status = read(pfd[pipe_read], buffer, sizeof(buffer))) != 0)
+      log_write(0, LOG_MAIN|LOG_PANIC, "queue run: %s on pipe",
+               status > 0 ? "unexpected data" : "error");
     (void)close(pfd[pipe_read]);
     set_process_info("running queue");
 
@@ -704,18 +708,15 @@ for (i  = (queue_run_in_order? -1 : 0);
 
   if (i == 0 && subcount > 1 && !queue_run_in_order)
     {
-    int j;
+    int j, r;
     for (j = 1; j <= subcount; j++)
-      {
-      int r = random_number(100);
-      if (r >= 50)
+      if ((r = random_number(100)) >= 50)
         {
         int k = (r % subcount) + 1;
         int x = subdirs[j];
         subdirs[j] = subdirs[k];
         subdirs[k] = x;
         }
-      }
     }
   }                                    /* End loop for multiple directories */