Author: wmb Date: 2009-11-29 01:10:18 +0100 (Sun, 29 Nov 2009) New Revision: 1521
Modified: ofw/fs/zipfs.fth Log: Minor cleanup of zipfs.fth, removing unused words and adding a few comments.
Modified: ofw/fs/zipfs.fth =================================================================== --- ofw/fs/zipfs.fth 2009-11-29 00:00:54 UTC (rev 1520) +++ ofw/fs/zipfs.fth 2009-11-29 00:10:18 UTC (rev 1521) @@ -103,12 +103,14 @@ \ ID of the header that's currently in the buffer -1 instance value header-id
+external : load ( adr -- len ) 0. seek drop dup image-size read ( adr len ) tuck ?crc ( len ) ;
+headers : read-magic ( id -- adr ) -1 to header-id ( id ) u>d seek drop ( id ) @@ -177,14 +179,6 @@ 4 + /end-header + ( id' ) eh-comlen le-w@ + ( id' ) \ Skip comment ; -: dirent? ( id -- id flag ) - dup header-id = if false exit then ( id ) - dup read-magic ( id ) - zip-buffer " PK"(01 02)" comp if ( id ) - false exit - then - zip-buffer /central read drop ( id ) -;
: first-dir-header ( -- false | id true ) first-file-header 0= if false exit then @@ -232,12 +226,6 @@ h# fe00 and 9 >> d# 1980 + ( day month year ) ;
-: next-header-ok? ( id -- flag ) - +file u>d seek drop zip-magic 2 read ( len ) - zip-magic swap " PK" $= -; - - : set-prefix ( adr len -- ) to prefix-len path-prefix prefix-len move @@ -312,6 +300,9 @@ find-file 0= if true exit then link-target ; + +\ Find the link target for the current directory entry and +\ if it is relative, prefix it with the current entry's path : chase-link ( -- true | name$ false ) zip-name$ [char] / right-split-string set-prefix link-target if true exit then ( link$ ) @@ -336,8 +327,6 @@ repeat ( ) false ( false ) ; - - : final-component ( -- flag ) dir? if ( ) zip-name$ set-prefix true ( true ) @@ -352,6 +341,17 @@ false ( false ) then ( flag ) ; +\ Determine if the current path name matches the path prefix +: in-directory? ( -- flag ) + prefix-len 0= if true exit then \ No prefix - return true + + \ If the path name is shorter than the prefix, it doesn't match + \ The = in <= filters out the name of the directory itself + name-len prefix-len <= if false exit then + + zip-name prefix$ comp 0= +; + external : open ( -- flag ) -1 to image-size 0 to offset @@ -367,17 +367,6 @@ ; : close ( -- ) ;
-\ Determine if the current path name matches the path prefix -: in-directory? ( -- flag ) - prefix-len 0= if true exit then \ No prefix - return true - - \ If the path name is shorter than the prefix, it doesn't match - \ The = in <= filters out the name of the directory itself - name-len prefix-len <= if false exit then - - zip-name prefix$ comp 0= -; - : next-file-info ( id -- false | id' s m h d m y len attributes name$ true ) begin another-file? while ( id' ) in-directory? if ( id )
openfirmware@openfirmware.info