]> gitweb.factorcode.org Git - factor.git/blobdiff - core/io/files/files.factor
core: trim using lists with lint.vocabs tool
[factor.git] / core / io / files / files.factor
index 3a2baece25bb7ad5432ea92adf096623e6197d21..9189473f74c91f79927cffee8c17dccc5aa34134 100644 (file)
@@ -1,10 +1,14 @@
 ! Copyright (C) 2004, 2009 Slava Pestov, Daniel Ehrenberg.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: alien.strings init io io.backend io.encodings
-io.encodings.utf8 io.files.private io.pathnames kernel
-kernel.private namespaces sequences splitting system ;
+USING: alien.strings io io.backend io.encodings
+io.pathnames kernel kernel.private namespaces sequences
+splitting system ;
 IN: io.files
 
+<PRIVATE
+PRIMITIVE: (file-exists?) ( path -- ? )
+PRIVATE>
+
 SYMBOL: +retry+ ! just try the operation again without blocking
 SYMBOL: +input+
 SYMBOL: +output+
@@ -52,14 +56,22 @@ HOOK: (file-appender) io-backend ( path -- stream )
 : set-file-lines ( seq path encoding -- )
     [ [ print ] each ] with-file-writer ;
 
+: change-file-lines ( ..a path encoding quot: ( ..a seq -- ..b seq' ) -- ..b )
+    [ [ file-lines ] dip call ]
+    [ drop set-file-lines ] 3bi ; inline
+
 : set-file-contents ( seq path encoding -- )
     [ write ] with-file-writer ;
 
+: change-file-contents ( ..a path encoding quot: ( ..a seq -- ..b seq' ) -- ..b )
+    [ [ file-contents ] dip call ]
+    [ drop set-file-contents ] 3bi ; inline
+
 : with-file-appender ( path encoding quot -- )
     [ <file-appender> ] dip with-output-stream ; inline
 
-: exists? ( path -- ? )
-    normalize-path native-string>alien (exists?) ;
+: file-exists? ( path -- ? )
+    normalize-path native-string>alien (file-exists?) ;
 
 ! Current directory
 <PRIVATE
@@ -68,18 +80,19 @@ HOOK: cd io-backend ( path -- )
 
 HOOK: cwd io-backend ( -- path )
 
-M: object cwd ( -- path ) "." ;
+M: object cwd "." ;
 
 PRIVATE>
 
 : init-resource-path ( -- )
-    OBJ-ARGS special-object
-    [ utf8 alien>string "-resource-path=" ?head [ drop f ] unless ] map-find drop
-    [ image parent-directory ] unless* "resource-path" set-global ;
+    OBJ-ARGS special-object [
+        alien>native-string "-resource-path=" ?head [ drop f ] unless
+    ] map-find drop
+    [ image-path parent-directory ] unless* "resource-path" set-global ;
 
-[
+STARTUP-HOOK: [
     cwd current-directory set-global
-    OBJ-IMAGE special-object alien>native-string cwd prepend-path \ image set-global
-    OBJ-EXECUTABLE special-object alien>native-string cwd prepend-path \ vm set-global
+    OBJ-IMAGE special-object alien>native-string \ image-path set-global
+    OBJ-EXECUTABLE special-object alien>native-string \ vm-path set-global
     init-resource-path
-] "io.files" add-startup-hook
+]