diff --git a/System/IO.hs b/System/IO.hs index 0d9d0298736c25a7ec44da8f2432eed67ca79a64..2970cf0b5e90f19a61b546dcc1cc5d3c50e82a89 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