--- /dev/null
+USING: assocs io.files kernel namespaces sequences ;
+IN: io.paths
+
+: find-file ( seq str -- path/f )
+ [
+ [ path+ exists? ] curry find nip
+ ] keep over [ path+ ] [ drop ] if ;
+
+<PRIVATE
+: append-path ( path files -- paths )
+ [ path+ ] curry* map ;
+
+: get-paths ( dir -- paths )
+ dup directory keys append-path ;
+
+: (walk-dir) ( path -- )
+ dup directory? [
+ get-paths dup % [ (walk-dir) ] each
+ ] [
+ drop
+ ] if ;
+PRIVATE>
+
+: walk-dir ( path -- seq ) [ (walk-dir) ] { } make ;
M: unix-io delete-directory ( path -- )
rmdir io-error ;
-
-M: unix-io binary-roots ( -- seq )
- {
- "/bin" "/sbin"
- "/usr/bin" "/usr/sbin"
- "/usr/local/bin" "/usr/local/sbin"
- "/opt/local/bin" "/opt/local/sbin"
- "~/bin"
- } ;
-
-M: unix-io library-roots ( -- seq )
- {
- "/lib"
- "/usr/lib"
- "/usr/local/lib"
- "/opt/local/lib"
- "/lib64"
- } ;
TUPLE: windows-ce-io ;
UNION: windows-io windows-nt-io windows-ce-io ;
-M: windows-io library-roots ( -- seq )
- [
- windows ,
- ] { } make ;
-
-M: windows-io binary-roots ( -- seq )
- [
- windows ,
- ] { } make ;
-
M: windows-io destruct-handle CloseHandle drop ;
M: windows-io destruct-socket closesocket drop ;