Logging: support +outgoing_port on defer lines and per-host error lines
[exim.git] / src / src / rewrite.c
index 8a640565ec1e829e586054cec0b09782f0c7cfd9..ca7fb6a115c4a3d8abcfc61aff371c16d010c3ee 100644 (file)
@@ -1,10 +1,8 @@
-/* $Cambridge: exim/src/src/rewrite.c,v 1.5 2009/11/16 19:50:37 nm4 Exp $ */
-
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) University of Cambridge 1995 - 2009 */
+/* Copyright (c) University of Cambridge 1995 - 2015 */
 /* See the file NOTICE for conditions of use and distribution. */
 
 /* Functions concerned with rewriting headers */
@@ -14,7 +12,7 @@
 
 /* Names for testing rewriting */
 
-static char *rrname[] = {
+static const char *rrname[] = {
   "  sender",
   "    from",
   "      to",
@@ -29,20 +27,20 @@ static char *rrname[] = {
 
 typedef struct where_list_block {
   int bit;
-  uschar *string;
+  const uschar *string;
 } where_list_block;
 
 static where_list_block where_list[] = {
-  { rewrite_sender,  US"sender:" },
-  { rewrite_from,    US"from:" },
-  { rewrite_to,      US"to:" },
-  { rewrite_cc,      US"cc:" },
-  { rewrite_bcc,     US"bcc:" },
-  { rewrite_replyto, US"reply-to:" },
-  { rewrite_envfrom, US"env-from" },
-  { rewrite_envto,   US"env-to" },
-  { rewrite_smtp,    US"smtp recipient" },
-  { rewrite_smtp|rewrite_smtp_sender, US"smtp sender" }
+  { rewrite_sender,  CUS"sender:" },
+  { rewrite_from,    CUS"from:" },
+  { rewrite_to,      CUS"to:" },
+  { rewrite_cc,      CUS"cc:" },
+  { rewrite_bcc,     CUS"bcc:" },
+  { rewrite_replyto, CUS"reply-to:" },
+  { rewrite_envfrom, CUS"env-from" },
+  { rewrite_envto,   CUS"env-to" },
+  { rewrite_smtp,    CUS"smtp recipient" },
+  { rewrite_smtp|rewrite_smtp_sender, CUS"smtp sender" }
 };
 
 static int where_list_size = sizeof(where_list)/sizeof(where_list_block);
@@ -120,7 +118,8 @@ for (rule = rewrite_rules;
   {
   int start, end, pdomain;
   int count = 0;
-  uschar *save_localpart, *save_domain;
+  uschar *save_localpart;
+  const uschar *save_domain;
   uschar *error, *new, *newparsed;
 
   /* Ensure that the flag matches the flags in the rule. */
@@ -164,7 +163,7 @@ for (rule = rewrite_rules;
     /* Use the general function for matching an address against a list (here
     just one item, so use the "impossible value" separator UCHAR_MAX+1). */
 
-    if (match_address_list(subject, FALSE, TRUE, &(rule->key), NULL, 0,
+    if (match_address_list(subject, FALSE, TRUE, CUSS &(rule->key), NULL, 0,
         UCHAR_MAX + 1, NULL) != OK)
       continue;
 
@@ -248,11 +247,10 @@ for (rule = rewrite_rules;
 
   /* We have a validly rewritten address */
 
-  if ((log_write_selector & L_address_rewrite) != 0 ||
-      (debug_selector & D_rewrite) != 0)
+  if (LOGGING(address_rewrite) || (debug_selector & D_rewrite) != 0)
     {
     int i;
-    uschar *where = US"?";
+    const uschar *where = CUS"?";
 
     for (i = 0; i < where_list_size; i++)
       {
@@ -294,7 +292,7 @@ for (rule = rewrite_rules;
         {
         uschar *p1 = new + start - 1;
         uschar *p2 = new + end + 1;
-        uschar *pf1, *pf2;
+        const uschar *pf1, *pf2;
         uschar buff1[256], buff2[256];
 
         while (p1 > new && p1[-1] == ' ') p1--;
@@ -451,8 +449,9 @@ Returns:         NULL if header unchanged; otherwise the rewritten header
 */
 
 static header_line *
-rewrite_one_header(header_line *h, int flag, uschar *routed_old,
-  uschar *routed_new, rewrite_rule *rewrite_rules, int existflags, BOOL replace)
+rewrite_one_header(header_line *h, int flag,
+  const uschar *routed_old, const uschar *routed_new,
+  rewrite_rule *rewrite_rules, int existflags, BOOL replace)
 {
 int lastnewline = 0;
 header_line *newh = NULL;
@@ -719,7 +718,8 @@ Returns:         NULL if header unchanged; otherwise the rewritten header
 */
 
 header_line *
-rewrite_header(header_line *h, uschar *routed_old, uschar *routed_new,
+rewrite_header(header_line *h,
+  const uschar *routed_old, const uschar *routed_new,
   rewrite_rule *rewrite_rules, int existflags, BOOL replace)
 {
 switch (h->type)