summaryrefslogtreecommitdiff
path: root/Utility/FileMode.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Utility/FileMode.hs')
-rw-r--r--Utility/FileMode.hs9
1 files changed, 9 insertions, 0 deletions
diff --git a/Utility/FileMode.hs b/Utility/FileMode.hs
index ddb89b2aa..0f7046333 100644
--- a/Utility/FileMode.hs
+++ b/Utility/FileMode.hs
@@ -101,3 +101,12 @@ isSticky = checkMode stickyMode
setSticky :: FilePath -> IO ()
setSticky f = modifyFileMode f $ addModes [stickyMode]
+
+{- Writes a file, ensuring that its modes do not allow it to be read
+ - by anyone other than the current user, before any content is written. -}
+writeFileProtected :: FilePath -> String -> IO ()
+writeFileProtected file content = do
+ h <- openFile file WriteMode
+ modifyFileMode file $ removeModes [groupReadMode, otherReadMode]
+ hPutStr h content
+ hClose h