diff --git a/basis/io/directories/search/search.factor b/basis/io/directories/search/search.factor index 2406f21345..5462795448 100644 --- a/basis/io/directories/search/search.factor +++ b/basis/io/directories/search/search.factor @@ -2,8 +2,8 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays assocs continuations deques dlists fry io.backend io.directories io.files.info io.pathnames kernel -locals math sequences sorting system unicode.case vocabs -vocabs.loader ; +kernel.private locals math sequences sorting strings system +unicode.case vocabs vocabs.loader ; IN: io.directories.search : qualified-directory-entries ( path -- seq ) @@ -22,9 +22,13 @@ IN: io.directories.search <PRIVATE -TUPLE: directory-iterator path bfs queue ; +TUPLE: directory-iterator +{ path string } +{ bfs boolean } +{ queue dlist } ; : push-directory-entries ( path iter -- ) + { directory-iterator } declare [ [ qualified-directory-entries ] [ 2drop f ] recover ] dip '[ _ [ queue>> ] [ bfs>> ] bi [ push-front ] [ push-back ] if @@ -35,6 +39,7 @@ TUPLE: directory-iterator path bfs queue ; dup path>> over push-directory-entries ; : next-directory-entry ( iter -- directory-entry/f ) + { directory-iterator } declare dup queue>> deque-empty? [ drop f ] [ dup queue>> pop-back dup directory?