eliminate s2w8 and w82s

Note that the use of s2w8 in genUUIDInNameSpace made it truncate unicode
characters. Luckily, genUUIDInNameSpace is only ever used on ASCII
strings as far as I can determine. In particular, git-remote-gcrypt's
gcrypt-id is an ASCII string.
This commit is contained in:
Joey Hess 2023-10-26 13:12:57 -04:00
parent 3742263c99
commit c873586e14
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
6 changed files with 10 additions and 25 deletions

View file

@ -41,6 +41,7 @@ import Config
import qualified Data.UUID as U
import qualified Data.UUID.V4 as U4
import qualified Data.UUID.V5 as U5
import qualified Data.ByteString as S
import Data.String
configkeyUUID :: ConfigKey
@ -53,13 +54,13 @@ genUUID = toUUID <$> U4.nextRandom
{- Generates a UUID from a given string, using a namespace.
- Given the same namespace, the same string will always result
- in the same UUID. -}
genUUIDInNameSpace :: U.UUID -> String -> UUID
genUUIDInNameSpace namespace = toUUID . U5.generateNamed namespace . s2w8
genUUIDInNameSpace :: U.UUID -> S.ByteString -> UUID
genUUIDInNameSpace namespace = toUUID . U5.generateNamed namespace . S.unpack
{- Namespace used for UUIDs derived from git-remote-gcrypt ids. -}
gCryptNameSpace :: U.UUID
gCryptNameSpace = U5.generateNamed U5.namespaceURL $
s2w8 "http://git-annex.branchable.com/design/gcrypt/"
S.unpack "http://git-annex.branchable.com/design/gcrypt/"
{- Get current repository's UUID. -}
getUUID :: Annex UUID

View file

@ -319,7 +319,7 @@ testServer sshinput@(SshInput { inputHostname = Just hn }) = do
finduuid (k, v)
| k == "annex.uuid" = Just $ toUUID v
| k == fromConfigKey GCrypt.coreGCryptId =
Just $ genUUIDInNameSpace gCryptNameSpace v
Just $ genUUIDInNameSpace gCryptNameSpace (encodeBS v)
| otherwise = Nothing
checkcommand c = "if which " ++ c ++ "; then " ++ report c ++ "; fi"

View file

@ -29,7 +29,7 @@ start gcryptid = starting "gcryptsetup" (ActionItemOther Nothing) (SeekInput [gc
g <- gitRepo
gu <- Remote.GCrypt.getGCryptUUID True g
let newgu = genUUIDInNameSpace gCryptNameSpace gcryptid
let newgu = genUUIDInNameSpace gCryptNameSpace (encodeBS gcryptid)
if isNothing gu || gu == Just newgu
then if Git.repoIsLocalBare g
then do

View file

@ -112,7 +112,7 @@ gen baser u rc gc rs = do
-- that is now available. Also need to set the gcrypt particiants
-- correctly.
resetup gcryptid r = do
let u' = genUUIDInNameSpace gCryptNameSpace gcryptid
let u' = genUUIDInNameSpace gCryptNameSpace (encodeBS gcryptid)
v <- M.lookup u' <$> remoteConfigMap
case (Git.remoteName baser, v) of
(Just remotename, Just rc') -> do
@ -263,7 +263,7 @@ gCryptSetup _ mu _ c gc = go $ fromProposedAccepted <$> M.lookup gitRepoField c
case Git.GCrypt.remoteRepoId g (Just remotename) of
Nothing -> giveup "unable to determine gcrypt-id of remote"
Just gcryptid -> do
let u = genUUIDInNameSpace gCryptNameSpace gcryptid
let u = genUUIDInNameSpace gCryptNameSpace (encodeBS gcryptid)
if Just u == mu || isNothing mu
then do
method <- setupRepo gcryptid =<< inRepo (Git.Construct.fromRemoteLocation gitrepo False)
@ -489,7 +489,7 @@ toAccessMethod _ = AccessRsyncOverSsh
getGCryptUUID :: Bool -> Git.Repo -> Annex (Maybe UUID)
getGCryptUUID fast r = do
dummycfg <- liftIO dummyRemoteGitConfig
(genUUIDInNameSpace gCryptNameSpace <$>) . fst
(genUUIDInNameSpace gCryptNameSpace . encodeBS <$>) . fst
<$> getGCryptId fast r dummycfg
coreGCryptId :: ConfigKey

View file

@ -327,7 +327,7 @@ tryGitConfigRead autoinit r hasuuid
case Git.GCrypt.remoteRepoId g (Git.remoteName r) of
Nothing -> return r
Just v -> storeUpdatedRemote $ liftIO $ setUUID r $
genUUIDInNameSpace gCryptNameSpace v
genUUIDInNameSpace gCryptNameSpace (encodeBS v)
{- The local repo may not yet be initialized, so try to initialize
- it if allowed. However, if that fails, still return the read

View file

@ -10,12 +10,8 @@
module Utility.Data (
firstJust,
eitherToMaybe,
s2w8,
w82s,
) where
import Data.Word
{- First item in the list that is not Nothing. -}
firstJust :: Eq a => [Maybe a] -> Maybe a
firstJust ms = case dropWhile (== Nothing) ms of
@ -24,15 +20,3 @@ firstJust ms = case dropWhile (== Nothing) ms of
eitherToMaybe :: Either a b -> Maybe b
eitherToMaybe = either (const Nothing) Just
c2w8 :: Char -> Word8
c2w8 = fromIntegral . fromEnum
w82c :: Word8 -> Char
w82c = toEnum . fromIntegral
s2w8 :: String -> [Word8]
s2w8 = map c2w8
w82s :: [Word8] -> String
w82s = map w82c