[commit: ghc] ghc-7.2: omit the local MD5 implementation if we can get it from (f2dacd4)
Ian Lynagh
igloo at earth.li
Tue Jul 12 21:56:43 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/ghc
On branch : ghc-7.2
http://hackage.haskell.org/trac/ghc/changeset/f2dacd4562d782255d7c4aee25d94710bc111230
>---------------------------------------------------------------
commit f2dacd4562d782255d7c4aee25d94710bc111230
Author: Simon Marlow <marlowsd at gmail.com>
Date: Tue Jul 12 10:41:22 2011 +0100
omit the local MD5 implementation if we can get it from
GHC.Fingerprint in base instead.
>---------------------------------------------------------------
compiler/utils/Fingerprint.hsc | 39 ++++++++++++++++++++++++---------------
compiler/utils/md5.c | 3 +++
2 files changed, 27 insertions(+), 15 deletions(-)
diff --git a/compiler/utils/Fingerprint.hsc b/compiler/utils/Fingerprint.hsc
index 20b3ee9..8c487f6 100644
--- a/compiler/utils/Fingerprint.hsc
+++ b/compiler/utils/Fingerprint.hsc
@@ -19,11 +19,18 @@ module Fingerprint (
import Outputable
-import Foreign
-import Foreign.C
import Text.Printf
import Numeric ( readHex )
+##if __GLASGOW_HASKELL__ >= 701
+-- The MD5 implementation is now in base, to support Typeable
+import GHC.Fingerprint
+##endif
+
+##if __GLASGOW_HASKELL__ < 701
+import Foreign
+import Foreign.C
+
-- Using 128-bit MD5 fingerprints for now.
data Fingerprint = Fingerprint {-# UNPACK #-} !Word64 {-# UNPACK #-} !Word64
@@ -33,19 +40,6 @@ data Fingerprint = Fingerprint {-# UNPACK #-} !Word64 {-# UNPACK #-} !Word64
fingerprint0 :: Fingerprint
fingerprint0 = Fingerprint 0 0
-instance Outputable Fingerprint where
- ppr (Fingerprint w1 w2) = text (printf "%016x%016x" i1 i2)
- where i1 = fromIntegral w1 :: Integer
- i2 = fromIntegral w2 :: Integer
- -- printf in GHC 6.4.2 didn't have Word64 instances
-
--- useful for parsing the output of 'md5sum', should we want to do that.
-readHexFingerprint :: String -> Fingerprint
-readHexFingerprint s = Fingerprint w1 w2
- where (s1,s2) = splitAt 16 s
- [(w1,"")] = readHex s1
- [(w2,"")] = readHex (take 16 s2)
-
peekFingerprint :: Ptr Word8 -> IO Fingerprint
peekFingerprint p = do
let peekW64 :: Ptr Word8 -> Int -> Word64 -> IO Word64
@@ -77,3 +71,18 @@ foreign import ccall unsafe "MD5Update"
c_MD5Update :: Ptr MD5Context -> Ptr Word8 -> CInt -> IO ()
foreign import ccall unsafe "MD5Final"
c_MD5Final :: Ptr Word8 -> Ptr MD5Context -> IO ()
+##endif
+
+instance Outputable Fingerprint where
+ ppr (Fingerprint w1 w2) = text (printf "%016x%016x" i1 i2)
+ where i1 = fromIntegral w1 :: Integer
+ i2 = fromIntegral w2 :: Integer
+ -- printf in GHC 6.4.2 didn't have Word64 instances
+
+-- useful for parsing the output of 'md5sum', should we want to do that.
+readHexFingerprint :: String -> Fingerprint
+readHexFingerprint s = Fingerprint w1 w2
+ where (s1,s2) = splitAt 16 s
+ [(w1,"")] = readHex s1
+ [(w2,"")] = readHex (take 16 s2)
+
diff --git a/compiler/utils/md5.c b/compiler/utils/md5.c
index 0570cbb..06c2d37 100644
--- a/compiler/utils/md5.c
+++ b/compiler/utils/md5.c
@@ -15,6 +15,8 @@
* will fill a supplied 16-byte array with the digest.
*/
+#if __GLASGOW_HASKELL__ < 701
+
#include "HsFFI.h"
#include "md5.h"
#include <string.h>
@@ -236,3 +238,4 @@ MD5Transform(word32 buf[4], word32 const in[16])
buf[3] += d;
}
+#endif
More information about the Cvs-ghc
mailing list