@@ -53,7 +53,6 @@ module Codec.Archive.Tar.Types (
53
53
54
54
LinkTarget (.. ),
55
55
toLinkTarget ,
56
- toLinkTarget' ,
57
56
fromLinkTarget ,
58
57
fromLinkTargetToPosixPath ,
59
58
fromLinkTargetToWindowsPath ,
@@ -78,7 +77,6 @@ import qualified Data.ByteString.Char8 as BS.Char8
78
77
import qualified Data.ByteString.Lazy as LBS
79
78
import Control.DeepSeq
80
79
import Control.Exception (Exception , displayException )
81
- import Control.Monad.Catch (MonadThrow , throwM )
82
80
83
81
import qualified System.FilePath as FilePath.Native
84
82
( joinPath , splitDirectories , addTrailingPathSeparator , hasTrailingPathSeparator , pathSeparator , isAbsolute , hasTrailingPathSeparator )
@@ -489,11 +487,12 @@ instance NFData LinkTarget where
489
487
-- | Convert a native 'FilePath' to a tar 'LinkTarget'.
490
488
-- string is longer than 100 characters or if it contains non-portable
491
489
-- characters.
492
- toLinkTarget :: MonadThrow m => FilePath -> m LinkTarget
493
- toLinkTarget path | length path <= 100 = do
494
- target <- toLinkTarget' path
495
- pure $! LinkTarget (packAscii target)
496
- | otherwise = throwM (TooLong path)
490
+ toLinkTarget :: FilePath -> Maybe LinkTarget
491
+ toLinkTarget path
492
+ | length path <= 100 = do
493
+ target <- toLinkTarget' path
494
+ Just $! LinkTarget (packAscii target)
495
+ | otherwise = Nothing
497
496
498
497
data LinkTargetException = IsAbsolute FilePath
499
498
| TooLong FilePath
@@ -505,10 +504,10 @@ instance Exception LinkTargetException where
505
504
506
505
-- | Convert a native 'FilePath' to a unix filepath suitable for
507
506
-- using as 'LinkTarget'. Does not error if longer than 100 characters.
508
- toLinkTarget' :: MonadThrow m => FilePath -> m FilePath
507
+ toLinkTarget' :: FilePath -> Maybe FilePath
509
508
toLinkTarget' path
510
- | FilePath.Native. isAbsolute path = throwM ( IsAbsolute path)
511
- | otherwise = pure $ adjustDirectory $ FilePath.Posix. joinPath $ FilePath.Native. splitDirectories path
509
+ | FilePath.Native. isAbsolute path = Nothing
510
+ | otherwise = Just $ adjustDirectory $ FilePath.Posix. joinPath $ FilePath.Native. splitDirectories path
512
511
where
513
512
adjustDirectory | FilePath.Native. hasTrailingPathSeparator path
514
513
= FilePath.Posix. addTrailingPathSeparator
0 commit comments