aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Text/Pandoc/Shared.hs18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs
index 069fde23e..cf92a1fda 100644
--- a/src/Text/Pandoc/Shared.hs
+++ b/src/Text/Pandoc/Shared.hs
@@ -3,7 +3,6 @@
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
-
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE FlexibleInstances #-}
@@ -90,6 +89,8 @@ module Text.Pandoc.Shared (
safeRead,
-- * Temp directory
withTempDir,
+ -- * User data directory
+ defaultUserDataDirs,
-- * Version
pandocVersion
) where
@@ -910,3 +911,18 @@ withTempDir =
#else
withSystemTempDirectory
#endif
+
+--
+-- User data directory
+--
+
+-- | Return appropriate user data directory for platform. We use
+-- XDG_DATA_HOME (or its default value), but fall back to the
+-- legacy user data directory ($HOME/.pandoc on *nix) if this is
+-- missing.
+defaultUserDataDirs :: IO [FilePath]
+defaultUserDataDirs = E.catch (do
+ xdgDir <- getXdgDirectory XdgData "pandoc"
+ legacyDir <- getAppUserDataDirectory "pandoc"
+ return $ ordNub [xdgDir, legacyDir])
+ (\(_ :: E.SomeException) -> return [])