Fix format of maildir filenames. Bug 1329
authorAndreas Metzler <ametzler@bebt.de>
Fri, 29 May 2020 21:50:16 +0000 (22:50 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Fri, 29 May 2020 22:06:54 +0000 (23:06 +0100)
doc/doc-txt/ChangeLog
src/src/transports/appendfile.c
test/runtest

index 62777266f6f22717985a64b2c9c8a257e1b9a880..e8f7048399073af9181f136e3eb6ff40a0623cb8 100644 (file)
@@ -6,7 +6,9 @@ options, and new features, see the NewStuff file next to this ChangeLog.
 Since Exim version 4.94
 ----------------------
 
-(none yet)
+JH/01 Bug 1329: Fix format of Maildir-format filenames to match other mail-
+      related applications.  Previously an "H" was used where available info
+      says that "M" should be, so change to match.
 
 
 Exim version 4.94
index a621de0749f4c77550af6f1ba219529c76be82eb..c8c0a58b6d3236517da3d336f29cac19483b2dfd 100644 (file)
@@ -2485,7 +2485,7 @@ else
       uschar *basename;
 
       (void)gettimeofday(&msg_tv, NULL);
-      basename = string_sprintf(TIME_T_FMT ".H%luP" PID_T_FMT ".%s",
+      basename = string_sprintf(TIME_T_FMT ".M%luP" PID_T_FMT ".%s",
                msg_tv.tv_sec, msg_tv.tv_usec, getpid(), primary_hostname);
 
       filename = dataname = string_sprintf("tmp/%s", basename);
@@ -2557,11 +2557,12 @@ else
     dataname = string_sprintf("%s.msg", mailstore_basename);
 
     fd = Uopen(filename, O_WRONLY|O_CREAT|O_EXCL, mode);
-    if (fd < 0 &&                                 /* failed to open, and */
-        (errno != ENOENT ||                       /* either not non-exist */
-         !ob->create_directory ||                 /* or not allowed to make */
-         !directory_make(NULL, path, ob->dirmode, FALSE) ||  /* or failed to create dir */
-         (fd = Uopen(filename, O_WRONLY|O_CREAT|O_EXCL, mode)) < 0)) /* or then failed to open */
+    if (  fd < 0                               /* failed to open, and */
+       && (   errno != ENOENT                  /* either not non-exist */
+         || !ob->create_directory              /* or not allowed to make */
+         || !directory_make(NULL, path, ob->dirmode, FALSE)  /* or failed to create dir */
+         || (fd = Uopen(filename, O_WRONLY|O_CREAT|O_EXCL, mode)) < 0 /* or then failed to open */
+       )  )
       {
       addr->basic_errno = errno;
       addr->message = string_sprintf("while creating file %s", filename);
index c73ad41017b6b97e1178e56faaf25a5560c419bf..1e206f5d0a50615fad15a8afd76854d6ecb484ba 100755 (executable)
@@ -916,7 +916,7 @@ RESET_AFTER_EXTRA_LINE_READ:
   s/renamed tmp\/\d+\.[^.]+\.(\S+) as new\/\d+\.[^.]+\.(\S+)/renamed tmp\/MAILDIR.$1 as new\/MAILDIR.$1/;
 
   # Maildir file names in general
-  s/\b\d+\.H\d+P\d+\b/dddddddddd.HddddddPddddd/;
+  s/\b\d+\.M\d+P\d+\b/dddddddddd.HddddddPddddd/;
 
   # Maildirsize data
   while (/^\d+S,\d+C\s*$/)