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 <[email protected]>
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



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to