From 9e674b44684fbd0b28f437d77c8196c2f031e3ae Mon Sep 17 00:00:00 2001
From: Ian Lynagh <igloo@earth.li>
Date: Sun, 22 Jul 2007 10:54:45 +0000
Subject: [PATCH] Tweak temporary file filename chooser

---
 System/IO.hs | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/System/IO.hs b/System/IO.hs
index 0d9d0298..2970cf0b 100644
--- a/System/IO.hs
+++ b/System/IO.hs
@@ -425,7 +425,12 @@ openTempFile' loc tmp_dir template binary = do
   pid <- c_getpid
   findTempName pid
   where
-    (prefix,suffix) = break (=='.') template
+    -- We split off the last extension, so we can use .foo.ext files
+    -- for temporary files (hidden on Unix OSes). Unfortunately we're
+    -- below filepath in the hierarchy here.
+    (prefix,suffix) = case break (== '.') $ reverse template of
+                          (rev_suffix, rev_prefix) ->
+                              (reverse rev_prefix, reverse rev_suffix)
 
     oflags1 = rw_flags .|. o_EXCL
 
-- 
GitLab