From 840d37a6dcab32e8dec673945cf3e4f5c99815b5 Mon Sep 17 00:00:00 2001 From: joe Date: Sat, 10 May 2014 19:53:49 -0400 Subject: reorganized mergeSig --- KeyRing.hs | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/KeyRing.hs b/KeyRing.hs index ca08a65..adbf23c 100644 --- a/KeyRing.hs +++ b/KeyRing.hs @@ -2853,25 +2853,23 @@ merge_ db filename qs = foldl mergeit db (zip [0..] qs) then sigs++[first (asMapped n) sig] else let y:ys'=ys in xs ++ (mergeSameSig n sig y : ys') - - - isSameSig (a,_) (MappedPacket {packet=b},_) | isSignaturePacket a && isSignaturePacket b = - a { unhashed_subpackets=[] } == b { unhashed_subpackets = [] } - isSameSig (a,_) (MappedPacket {packet=b},_) = a==b - - mergeSameSig :: Int -> (Packet,TrustMap) -> (MappedPacket,TrustMap) -> (MappedPacket, TrustMap) - mergeSameSig n (a,ta) (m@(MappedPacket{packet=b,locations=locs}),tb) | isSignaturePacket a && isSignaturePacket b = - ( m { packet = (b { unhashed_subpackets = - foldl mergeItem (unhashed_subpackets b) (unhashed_subpackets a) }) - , locations = Map.insert filename (origin a n) locs } - , tb `Map.union` ta ) - where - -- TODO: when merging items, we should delete invalidated origins - -- from the orgin map. - mergeItem ys x = if x `elem` ys then ys else ys++[x] - - mergeSameSig n a b = b -- trace ("discarding dup "++show a) b + isSameSig (a,_) (MappedPacket {packet=b},_) | isSignaturePacket a && isSignaturePacket b = + a { unhashed_subpackets=[] } == b { unhashed_subpackets = [] } + isSameSig (a,_) (MappedPacket {packet=b},_) = a==b + + mergeSameSig :: Int -> (Packet,TrustMap) -> (MappedPacket,TrustMap) -> (MappedPacket, TrustMap) + mergeSameSig n (a,ta) (m@(MappedPacket{packet=b,locations=locs}),tb) + | isSignaturePacket a && isSignaturePacket b = + ( m { packet = b { unhashed_subpackets = + union (unhashed_subpackets b) (unhashed_subpackets a) + } + , locations = Map.insert filename (origin a n) locs } + -- TODO: when merging items, we should delete invalidated origins + -- from the orgin map. + , tb `Map.union` ta ) + + mergeSameSig n a b = b -- trace ("discarding dup "++show a) b mergeUidSig n sig (Just (sigs,m)) = Just (mergeSig n sig sigs, m) mergeUidSig n sig Nothing = Just ([asSigAndTrust n sig],Map.empty) -- cgit v1.2.3