]> gitweb.factorcode.org Git - factor.git/commitdiff
refactor some weirdness in checksums.common
authorDoug Coleman <doug.coleman@gmail.com>
Wed, 17 Dec 2008 07:40:09 +0000 (01:40 -0600)
committerDoug Coleman <doug.coleman@gmail.com>
Wed, 17 Dec 2008 07:40:09 +0000 (01:40 -0600)
basis/checksums/common/common.factor

index 7d5f34777d74acc1f3de92d279272cda19e6ee94..0ae4328446c1d1e4aa8295c7165f70845277f75b 100644 (file)
@@ -1,21 +1,20 @@
 ! Copyright (C) 2006, 2008 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: kernel math math.bitwise strings io.binary namespaces
-make grouping ;
+make grouping byte-arrays ;
 IN: checksums.common
 
 SYMBOL: bytes-read
 
-: calculate-pad-length ( length -- pad-length )
-    dup 56 < 55 119 ? swap - ;
+: calculate-pad-length ( length -- length' )
+    [ 56 < 55 119 ? ] keep - ;
 
 : pad-last-block ( str big-endian? length -- str )
     [
-        rot %
-        HEX: 80 ,
-        dup HEX: 3f bitand calculate-pad-length 0 <string> %
-        3 shift 8 rot [ >be ] [ >le ] if %
-    ] "" make 64 group ;
+        [ % ] 2dip HEX: 80 ,
+        [ HEX: 3f bitand calculate-pad-length <byte-array> % ]
+        [ 3 shift 8 rot [ >be ] [ >le ] if % ] bi
+    ] B{ } make 64 group ;
 
 : update-old-new ( old new -- )
     [ [ get ] bi@ w+ dup ] 2keep [ set ] bi@ ; inline