diff --git a/basis/io/directories/search/search.factor b/basis/io/directories/search/search.factor index 236da09489..1346fbbdb8 100755 --- a/basis/io/directories/search/search.factor +++ b/basis/io/directories/search/search.factor @@ -3,7 +3,7 @@ USING: accessors arrays continuations deques dlists fry io.directories io.files io.files.info io.pathnames kernel sequences system vocabs.loader locals math namespaces -sorting assocs ; +sorting assocs calendar threads ; IN: io.directories.search > + ] each-file ; + 0 swap t [ + [ link-info size-on-disk>> + ] [ 2drop ] recover + ] each-file ; + +: path>usage ( directory-entry -- name size ) + [ name>> dup ] [ directory? ] bi [ + directory-size + ] [ + [ link-info size-on-disk>> ] [ drop 0 ] recover + ] if ; : directory-usage ( path -- assoc ) [ - [ - [ name>> dup ] [ directory? ] bi [ - directory-size - ] [ - link-info size-on-disk>> - ] if - ] { } map>assoc + [ [ path>usage ] [ drop name>> 0 ] recover ] { } map>assoc ] with-qualified-directory-entries sort-values ; os windows? [ "io.directories.search.windows" require ] when