]> gitweb.factorcode.org Git - factor.git/commitdiff
tar: cleanup stack effects, make read-data-blocks recursive. 0.97
authorJohn Benediktsson <mrjbq7@gmail.com>
Sun, 2 Nov 2014 19:38:49 +0000 (11:38 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Sun, 2 Nov 2014 19:38:49 +0000 (11:38 -0800)
extra/tar/tar.factor

index 36854aa1d90581dd64d74a3ecea1ea00350886e9..1417c07eeddfe2207f4724ca340031248347877c 100644 (file)
@@ -25,7 +25,7 @@ ERROR: checksum-error header ;
 : read-c-string ( n -- str )
     read [ zero? ] trim-tail "" like ;
 
-: read-tar-header ( -- tar-header )
+: read-tar-header ( -- header )
     tar-header new
         100 read-c-string >>name
         8 read-c-string trim-string oct> >>mode
@@ -47,7 +47,7 @@ ERROR: checksum-error header ;
 TYPED: checksum-header ( seq: byte-array -- n )
     148 cut-slice 8 tail-slice [ 0 [ + ] reduce ] bi@ + 256 + >fixnum ;
 
-: read-data-blocks ( tar-header -- )
+: read-data-blocks ( header -- )
     dup size>> 0 > [
         block-size read [
             over size>> dup block-size <= [
@@ -62,9 +62,9 @@ TYPED: checksum-header ( seq: byte-array -- n )
         ] if*
     ] [
         drop
-    ] if ;
+    ] if ; inline recursive
 
-: parse-tar-header ( seq -- obj )
+: parse-tar-header ( seq -- header )
     dup checksum-header dup zero-checksum = [
         2drop
         tar-header new
@@ -79,10 +79,10 @@ TYPED: checksum-header ( seq: byte-array -- n )
 
 ERROR: unknown-typeflag ch ;
 
-M: unknown-typeflag summary ( obj -- str )
+M: unknown-typeflag summary
     ch>> [ "Unknown typeflag: " ] dip prefix ;
 
-: read/write-blocks ( tar-header path -- )
+: read/write-blocks ( header path -- )
     binary [ read-data-blocks ] with-file-writer ;
 
 : prepend-current-directory ( path -- path' )