aboutsummaryrefslogtreecommitdiff
path: root/lib/Daffm/State.hs
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2025-12-25 14:34:45 +0530
committerAkshay Nair <phenax5@gmail.com>2025-12-25 14:34:45 +0530
commit5d216ac19a99ebb6bc0506a5745e6c3dc1dffe5e (patch)
tree9462d66a318600b04ac5d1db283bd706632a0454 /lib/Daffm/State.hs
parentb4fe44842fb6914f9060b0d018de53983b0aab0b (diff)
downloaddaffm-5d216ac19a99ebb6bc0506a5745e6c3dc1dffe5e.tar.gz
daffm-5d216ac19a99ebb6bc0506a5745e6c3dc1dffe5e.zip
Handle errors with owner/group entry
Diffstat (limited to '')
-rw-r--r--lib/Daffm/State.hs9
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/Daffm/State.hs b/lib/Daffm/State.hs
index 9b3d81d..f7c8aa1 100644
--- a/lib/Daffm/State.hs
+++ b/lib/Daffm/State.hs
@@ -11,6 +11,7 @@ import Control.Exception (try)
import Control.Monad (filterM, forM)
import Daffm.Types
import Daffm.Utils (trim)
+import Data.Either (fromRight)
import Data.List (findIndex, sortBy)
import qualified Data.Map.Strict as Map
import Data.Maybe (fromMaybe)
@@ -147,16 +148,16 @@ getFileInfo name = do
if
| Posix.isSymbolicLink stat -> Just . Text.pack <$> getSymbolicLinkTarget path
| otherwise -> pure Nothing
- user <- Posix.getUserEntryForID $ Posix.fileOwner stat
- group <- Posix.getGroupEntryForID $ Posix.fileGroup stat
+ user <- either2Maybe <$> try (Posix.getUserEntryForID $ Posix.fileOwner stat)
+ group <- either2Maybe <$> try (Posix.getGroupEntryForID $ Posix.fileGroup stat)
pure $
FileInfo
{ filePath = Text.pack path,
fileName = name,
fileSize = Posix.fileSize stat,
fileMode = Posix.fileMode stat,
- fileUser = Text.pack . Posix.userName $ user,
- fileGroup = Text.pack . Posix.groupName $ group,
+ fileUser = maybe "?" (Text.pack . Posix.userName) user,
+ fileGroup = maybe "?" (Text.pack . Posix.groupName) group,
fileType = fileTypeFromStatus stat,
fileLinkType = fileTypeFromStatus <$> linkStat,
fileLinkTarget = linkTarget