[exim-cvs] appendfile: refactor

Top Page
Delete this message
Reply to this message
Author: Exim Git Commits Mailing List
Date:  
To: exim-cvs
Subject: [exim-cvs] appendfile: refactor
Gitweb: https://git.exim.org/exim.git/commitdiff/8280aa0c334a7ce06c55df35d9da7a99f79c3568
Commit:     8280aa0c334a7ce06c55df35d9da7a99f79c3568
Parent:     d4e569ca055d2a041f0bf4e11c981c3c3c266078
Author:     Jeremy Harris <jgh146exb@???>
AuthorDate: Sat Jan 11 20:50:47 2020 +0000
Committer:  Jeremy Harris <jgh146exb@???>
CommitDate: Sat Jan 11 20:50:47 2020 +0000


    appendfile: refactor
---
 src/src/transports/appendfile.c | 30 +++++++++++++-----------------
 1 file changed, 13 insertions(+), 17 deletions(-)


diff --git a/src/src/transports/appendfile.c b/src/src/transports/appendfile.c
index 1c3499c..d99a179 100644
--- a/src/src/transports/appendfile.c
+++ b/src/src/transports/appendfile.c
@@ -1319,10 +1319,9 @@ if (!fdname)
     }
   if (!fdname)
     {
-    addr->transport_return = PANIC;
     addr->message = string_sprintf("Mandatory file or directory option "
       "missing from %s transport", tblock->name);
-    return FALSE;
+    goto ret_panic;
     }
   }


@@ -1330,20 +1329,18 @@ if (!fdname)

 if ((ob->maildir_format || ob->mailstore_format) && !isdirectory)
   {
-  addr->transport_return = PANIC;
   addr->message = string_sprintf("mail%s_format requires \"directory\" "
     "to be specified for the %s transport",
     ob->maildir_format ? "dir" : "store", tblock->name);
-  return FALSE;
+  goto ret_panic;
   }


 if (!(path = expand_string(fdname)))
   {
-  addr->transport_return = PANIC;
   addr->message = string_sprintf("Expansion of \"%s\" (file or directory "
     "name for %s transport) failed: %s", fdname, tblock->name,
     expand_string_message);
-  return FALSE;
+  goto ret_panic;
   }


if (path[0] != '/')
@@ -1358,7 +1355,7 @@ if (path[0] != '/')
to the true local part. */

 if (testflag(addr, af_file))
-  for (address_item * addr2 = addr; addr2 != NULL; addr2 = addr2->next)
+  for (address_item * addr2 = addr; addr2; addr2 = addr2->next)
     addr2->local_part = string_copy(path);


 /* The available mailbox formats depend on whether it is a directory or a file
@@ -2311,11 +2308,10 @@ else
       {
       if (!(check_path = expand_string(ob->quota_directory)))
         {
-        addr->transport_return = PANIC;
         addr->message = string_sprintf("Expansion of \"%s\" (quota_directory "
          "name for %s transport) failed: %s", ob->quota_directory,
           tblock->name, expand_string_message);
-        return FALSE;
+        goto ret_panic;
         }


       if (check_path[0] != '/')
@@ -2519,11 +2515,10 @@ else


     if (nametag && !expand_string(nametag) && !f.expand_string_forcedfail)
       {
-      addr->transport_return = PANIC;
       addr->message = string_sprintf("Expansion of \"%s\" (maildir_tag "
         "for %s transport) failed: %s", nametag, tblock->name,
         expand_string_message);
-      return FALSE;
+      goto ret_panic;
       }


     /* We ensured the existence of all the relevant directories above. Attempt
@@ -2638,12 +2633,11 @@ else
     if (!(env_file = fdopen(fd, "wb")))
       {
       addr->basic_errno = errno;
-      addr->transport_return = PANIC;
       addr->message = string_sprintf("fdopen of %s ("
         "for %s transport) failed", filename, tblock->name);
       (void)close(fd);
       Uunlink(filename);
-      return FALSE;
+      goto ret_panic;
       }


     /* Write the envelope file, then close it. */
@@ -2655,13 +2649,12 @@ else
         {
         if (!f.expand_string_forcedfail)
           {
-          addr->transport_return = PANIC;
           addr->message = string_sprintf("Expansion of \"%s\" (mailstore "
             "prefix for %s transport) failed: %s", ob->mailstore_prefix,
             tblock->name, expand_string_message);
           (void)fclose(env_file);
           Uunlink(filename);
-          return FALSE;
+          goto ret_panic;
           }
         }
       else
@@ -2684,13 +2677,12 @@ else
         {
         if (!f.expand_string_forcedfail)
           {
-          addr->transport_return = PANIC;
           addr->message = string_sprintf("Expansion of \"%s\" (mailstore "
             "suffix for %s transport) failed: %s", ob->mailstore_suffix,
             tblock->name, expand_string_message);
           (void)fclose(env_file);
           Uunlink(filename);
-          return FALSE;
+          goto ret_panic;
           }
         }
       else
@@ -3366,6 +3358,10 @@ if (wait_for_tick) exim_wait_tick(&msg_tv, 1);
 put in the first address of a batch. */


return FALSE;
+
+ret_panic:
+ addr->transport_return = PANIC;
+ return FALSE;
}

 #endif    /*!MACRO_PREDEF*/