Skip to content

Commit c2c70ce

Browse files
committed
Migrate LinkTarget to PosixPath
1 parent dfc8fc4 commit c2c70ce

File tree

4 files changed

+11
-11
lines changed

4 files changed

+11
-11
lines changed

Codec/Archive/Tar/LongNames.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,10 @@ encodeLinkPath
7575
encodeLinkPath lnk = case toTarPath' lnk of
7676
FileNameEmpty -> (Nothing, LinkTarget mempty)
7777
FileNameOK (TarPath name prefix)
78-
| PS.null prefix -> (Nothing, LinkTarget $ posixToByteString name)
79-
| otherwise -> (Just $ longSymLinkEntry lnk, LinkTarget $ posixToByteString name)
78+
| PS.null prefix -> (Nothing, LinkTarget name)
79+
| otherwise -> (Just $ longSymLinkEntry lnk, LinkTarget name)
8080
FileNameTooLong (TarPath name _) ->
81-
(Just $ longSymLinkEntry lnk, LinkTarget $ posixToByteString name)
81+
(Just $ longSymLinkEntry lnk, LinkTarget name)
8282

8383
-- | Translate low-level entries (usually freshly deserialized) into
8484
-- high-level entries with POSIX 'FilePath's for files and symlinks

Codec/Archive/Tar/Read.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,8 @@ getEntryStreaming getN getAll = do
133133
entryContent = case typecode of
134134
'\0' -> NormalFile content size
135135
'0' -> NormalFile content size
136-
'1' -> HardLink (LinkTarget linkname)
137-
'2' -> SymbolicLink (LinkTarget linkname)
136+
'1' -> HardLink (LinkTarget $ byteToPosixString linkname)
137+
'2' -> SymbolicLink (LinkTarget $ byteToPosixString linkname)
138138
_ | format == V7Format
139139
-> OtherEntryType typecode content size
140140
'3' -> CharacterDevice devmajor devminor

Codec/Archive/Tar/Types.hs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,7 @@ splitLongPath path = case reverse (FilePath.Posix.splitPath path) of
495495
-- | The tar format allows just 100 ASCII characters for the 'SymbolicLink' and
496496
-- 'HardLink' entry types.
497497
--
498-
newtype LinkTarget = LinkTarget BS.ByteString
498+
newtype LinkTarget = LinkTarget PosixString
499499
deriving (Eq, Ord, Show)
500500

501501
instance NFData LinkTarget where
@@ -508,7 +508,7 @@ toLinkTarget :: FilePath -> Maybe LinkTarget
508508
toLinkTarget path
509509
| length path <= 100 = do
510510
target <- toLinkTarget' path
511-
Just $! LinkTarget (packAscii target)
511+
Just $! LinkTarget (toPosixString target)
512512
| otherwise = Nothing
513513

514514
data LinkTargetException = IsAbsolute FilePath
@@ -532,16 +532,16 @@ toLinkTarget' path
532532

533533
-- | Convert a tar 'LinkTarget' to a native 'FilePath'.
534534
fromLinkTarget :: LinkTarget -> FilePath
535-
fromLinkTarget (LinkTarget pathbs) = fromFilePathToNative $ BS.Char8.unpack pathbs
535+
fromLinkTarget (LinkTarget pathbs) = fromFilePathToNative $ fromPosixString pathbs
536536

537537
-- | Convert a tar 'LinkTarget' to a Unix\/POSIX 'FilePath' (@\'/\'@ path separators).
538538
fromLinkTargetToPosixPath :: LinkTarget -> FilePath
539-
fromLinkTargetToPosixPath (LinkTarget pathbs) = BS.Char8.unpack pathbs
539+
fromLinkTargetToPosixPath (LinkTarget pathbs) = fromPosixString pathbs
540540

541541
-- | Convert a tar 'LinkTarget' to a Windows 'FilePath' (@\'\\\\\'@ path separators).
542542
fromLinkTargetToWindowsPath :: LinkTarget -> FilePath
543543
fromLinkTargetToWindowsPath (LinkTarget pathbs) =
544-
fromFilePathToWindowsPath $ BS.Char8.unpack pathbs
544+
fromFilePathToWindowsPath $ fromPosixString pathbs
545545

546546
-- | Convert a unix FilePath to a native 'FilePath'.
547547
fromFilePathToNative :: FilePath -> FilePath

Codec/Archive/Tar/Write.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ putHeaderNoChkSum Entry {
8787
, putOct 12 modTime
8888
, replicate 8 ' ' -- dummy checksum
8989
, putChar8 typeCode
90-
, putBString 100 linkTarget
90+
, putPosixString 100 linkTarget
9191
] ++
9292
case format of
9393
V7Format ->

0 commit comments

Comments
 (0)