Testsuite: tidying
[exim.git] / src / src / spool_out.c
index 8531112c061193cf7f9a7812bfd0d690a3b9fe40..f3373faedb878dcaa1b25684c439021d2363a2e2 100644 (file)
@@ -2,9 +2,10 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
+/* Copyright (c) The Exim Maintainers 2020 - 2023 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
-/* Copyright (c) The Exim Maintainers 2020 */
 /* See the file NOTICE for conditions of use and distribution. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 
 /* Functions for writing spool files, and moving them about. */
 
@@ -120,8 +121,14 @@ return z;
 static void
 spool_var_write(FILE * fp, const uschar * name, const uschar * val)
 {
-if (is_tainted(val)) putc('-', fp);
-fprintf(fp, "-%s %s\n", name, val);
+putc('-', fp);
+if (is_tainted(val))
+  {
+  int q = quoter_for_address(val);
+  putc('-', fp);
+  if (is_real_quoter(q)) fprintf(fp, "(%s)", lookup_list[q]->name);
+  }
+fprintf(fp, "%s %s\n", name, val);
 }
 
 /*************************************************
@@ -136,7 +143,7 @@ be open and locked, thus preventing any other exim process from working on this
 message.
 
 Argument:
-  id      the message id
+  id      the message id (used for the eventual filename; the *content* uses the global. Unclear why.)
   where   SW_RECEIVING, SW_DELIVERING, or SW_MODIFYING
   errmsg  where to put an error message; if NULL, panic-die on error
 
@@ -145,16 +152,13 @@ Returns:  the size of the header texts on success;
 */
 
 int
-spool_write_header(uschar *id, int where, uschar **errmsg)
+spool_write_header(const uschar * id, int where, uschar ** errmsg)
 {
-int fd;
-int size_correction;
+int fd, size_correction;
 FILE * fp;
 struct stat statbuf;
-uschar * tname;
 uschar * fname;
-
-tname = spool_fname(US"input", message_subdir, US"hdr.", message_id);
+uschar * tname = spool_fname(US"input", message_subdir, US"hdr.", message_id);
 
 if ((fd = spool_open_temp(tname)) < 0)
   return spool_write_error(where, errmsg, US"open", NULL, NULL);
@@ -185,7 +189,7 @@ if (sender_helo_name) spool_var_write(fp, US"helo_name", sender_helo_name);
 if (sender_host_address)
   {
   if (is_tainted(sender_host_address)) putc('-', fp);
-  fprintf(fp, "-host_address %s.%d\n", sender_host_address, sender_host_port);
+  fprintf(fp, "-host_address [%s]:%d\n", sender_host_address, sender_host_port);
   if (sender_host_name)
     spool_var_write(fp, US"host_name", sender_host_name);
   }
@@ -199,7 +203,7 @@ if (sender_host_auth_pubname)
 if (interface_address)
   {
   if (is_tainted(interface_address)) putc('-', fp);
-  fprintf(fp, "-interface_address %s.%d\n", interface_address, interface_port);
+  fprintf(fp, "-interface_address [%s]:%d\n", interface_address, interface_port);
   }
 
 if (smtp_active_hostname != primary_hostname)
@@ -224,6 +228,12 @@ tree_walk(acl_var_m, &acl_var_write, fp);
 
 /* Now any other data that needs to be remembered. */
 
+if (*debuglog_name)
+  {
+  fprintf(fp, "-debug_selector 0x%x\n", debug_selector);
+  fprintf(fp, "-debuglog_name %s\n", debuglog_name);
+  }
+
 if (f.spool_file_wireformat)
   fprintf(fp, "-spool_file_wireformat\n");
 else
@@ -434,7 +444,7 @@ start-up time.
 
 Arguments:
   dir        base directory name
-  dq        destiinationqueue name
+  dq        destination queue name
   subdir     subdirectory name
   id         message id
   suffix     suffix to add to id
@@ -447,8 +457,8 @@ Returns:     TRUE if all went well
 */
 
 static BOOL
-make_link(uschar *dir, uschar * dq, uschar *subdir, uschar *id, uschar *suffix,
-  uschar *from, uschar *to, BOOL noentok)
+make_link(const uschar * dir, const uschar * dq, const uschar * subdir, const uschar * id,
+  const uschar * suffix, const uschar * from, const uschar * to, BOOL noentok)
 {
 uschar * fname = spool_fname(string_sprintf("%s%s", from, dir), subdir, id, suffix);
 uschar * tname = spool_q_fname(string_sprintf("%s%s", to,   dir), dq, subdir, id, suffix);
@@ -484,8 +494,8 @@ Returns:     TRUE if all went well
 */
 
 static BOOL
-break_link(uschar *dir, uschar *subdir, uschar *id, uschar *suffix, uschar *from,
-  BOOL noentok)
+break_link(const uschar * dir, const uschar * subdir, const uschar * id,
+  const uschar * suffix, const uschar * from, BOOL noentok)
 {
 uschar * fname = spool_fname(string_sprintf("%s%s", from, dir), subdir, id, suffix);
 if (Uunlink(fname) < 0 && (!noentok || errno != ENOENT))
@@ -518,12 +528,13 @@ Returns:      TRUE if all is well
 */
 
 BOOL
-spool_move_message(uschar *id, uschar *subdir, uschar *from, uschar *to)
+spool_move_message(const uschar * id, const uschar * subdir,
+  const uschar * from, const uschar * to)
 {
 uschar * dest_qname = queue_name_dest ? queue_name_dest : queue_name;
 
 /* Since we are working within the spool, de-taint the dest queue name */
-dest_qname = string_copy_taint(dest_qname, FALSE);
+dest_qname = string_copy_taint(dest_qname, GET_UNTAINTED);
 
 /* Create any output directories that do not exist. */