diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-12-25 14:34:45 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-12-25 14:34:45 +0530 |
| commit | 5d216ac19a99ebb6bc0506a5745e6c3dc1dffe5e (patch) | |
| tree | 9462d66a318600b04ac5d1db283bd706632a0454 /lib/Daffm/State.hs | |
| parent | b4fe44842fb6914f9060b0d018de53983b0aab0b (diff) | |
| download | daffm-5d216ac19a99ebb6bc0506a5745e6c3dc1dffe5e.tar.gz daffm-5d216ac19a99ebb6bc0506a5745e6c3dc1dffe5e.zip | |
Handle errors with owner/group entry
Diffstat (limited to '')
| -rw-r--r-- | lib/Daffm/State.hs | 9 |
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 |
