From 24466cfc57cd1e7cda29130fef91288e22963f16 Mon Sep 17 00:00:00 2001 From: erg Date: Wed, 26 Mar 2008 22:39:16 -0500 Subject: [PATCH 1/2] normalize-pathname all ova tha place --- core/io/files/files-tests.factor | 7 ++----- core/io/files/files.factor | 6 +++--- extra/io/unix/files/files.factor | 4 ++-- extra/io/unix/launcher/launcher-tests.factor | 14 +++++++++++++- extra/io/unix/launcher/launcher.factor | 5 +++-- extra/io/windows/files/files.factor | 5 ++++- extra/io/windows/windows.factor | 2 +- 7 files changed, 28 insertions(+), 15 deletions(-) diff --git a/core/io/files/files-tests.factor b/core/io/files/files-tests.factor index 51bf79e29c..bb8e997c68 100755 --- a/core/io/files/files-tests.factor +++ b/core/io/files/files-tests.factor @@ -132,15 +132,12 @@ io.encodings.utf8 ; [ t ] [ cwd "misc" resource-path [ ] with-directory cwd = ] unit-test [ t ] [ - temp-directory [ "hi" "test41" utf8 set-file-contents ] with-directory + temp-directory [ "hi41" "test41" utf8 set-file-contents ] with-directory temp-directory "test41" append-path utf8 file-contents "hi41" = ] unit-test [ t ] [ - temp-directory [ - "test43" utf8 [ "hi43" write ] with-stream - ] with-directory - temp-directory "test43" append-path utf8 file-contents "hi43" = + temp-directory [ "test41" file-info size>> ] with-directory 4 = ] unit-test [ ] [ "append-test" temp-file dup exists? [ delete-file ] [ drop ] if ] unit-test diff --git a/core/io/files/files.factor b/core/io/files/files.factor index 64d8e25ee2..78f1612cb8 100755 --- a/core/io/files/files.factor +++ b/core/io/files/files.factor @@ -13,13 +13,13 @@ HOOK: (file-writer) io-backend ( path -- stream ) HOOK: (file-appender) io-backend ( path -- stream ) : ( path encoding -- stream ) - swap (file-reader) swap ; + swap normalize-pathname (file-reader) swap ; : ( path encoding -- stream ) - swap (file-writer) swap ; + swap normalize-pathname (file-writer) swap ; : ( path encoding -- stream ) - swap (file-appender) swap ; + swap normalize-pathname (file-appender) swap ; : file-lines ( path encoding -- seq ) lines ; diff --git a/extra/io/unix/files/files.factor b/extra/io/unix/files/files.factor index 1e7d682314..2888231e20 100755 --- a/extra/io/unix/files/files.factor +++ b/extra/io/unix/files/files.factor @@ -94,7 +94,7 @@ M: unix-io copy-file ( from to -- ) \ file-info construct-boa ; M: unix-io file-info ( path -- info ) - stat* stat>file-info ; + normalize-pathname stat* stat>file-info ; M: unix-io link-info ( path -- info ) - lstat* stat>file-info ; + normalize-pathname lstat* stat>file-info ; diff --git a/extra/io/unix/launcher/launcher-tests.factor b/extra/io/unix/launcher/launcher-tests.factor index 9e19245d01..7e527196be 100755 --- a/extra/io/unix/launcher/launcher-tests.factor +++ b/extra/io/unix/launcher/launcher-tests.factor @@ -1,7 +1,7 @@ IN: io.unix.launcher.tests USING: io.files tools.test io.launcher arrays io namespaces continuations math io.encodings.binary io.encodings.ascii -accessors kernel sequences ; +accessors kernel sequences io.encodings.utf8 ; [ ] [ [ "launcher-test-1" temp-file delete-file ] ignore-errors @@ -95,3 +95,15 @@ accessors kernel sequences ; +replace-environment+ >>environment-mode ascii lines ] unit-test + +[ "hi\n" ] [ + temp-directory [ + [ "aloha" delete-file ] ignore-errors + + { "echo" "hi" } >>command + "aloha" >>stdout + try-process + ] with-directory + temp-directory "aloha" append-path + utf8 file-contents +] unit-test diff --git a/extra/io/unix/launcher/launcher.factor b/extra/io/unix/launcher/launcher.factor index 0cbb78b881..1292f2cacf 100755 --- a/extra/io/unix/launcher/launcher.factor +++ b/extra/io/unix/launcher/launcher.factor @@ -37,7 +37,8 @@ USE: unix 2nip reset-fd ; : redirect-file ( obj mode fd -- ) - >r file-mode open dup io-error r> redirect-fd ; + >r >r normalize-pathname r> file-mode + open dup io-error r> redirect-fd ; : redirect-closed ( obj mode fd -- ) >r >r drop "/dev/null" r> r> redirect-file ; @@ -67,9 +68,9 @@ USE: unix : spawn-process ( process -- * ) [ - current-directory get cd setup-priority setup-redirection + current-directory get cd dup pass-environment? [ dup get-environment set-os-envs ] when diff --git a/extra/io/windows/files/files.factor b/extra/io/windows/files/files.factor index 094014fac6..b4513f7da8 100755 --- a/extra/io/windows/files/files.factor +++ b/extra/io/windows/files/files.factor @@ -89,4 +89,7 @@ SYMBOLS: +read-only+ +hidden+ +system+ ] if ; M: windows-nt-io file-info ( path -- info ) - get-file-information-stat ; + normalize-pathname get-file-information-stat ; + +M: windows-nt-io link-info ( path -- info ) + file-info ; diff --git a/extra/io/windows/windows.factor b/extra/io/windows/windows.factor index dac55664a4..635a992777 100755 --- a/extra/io/windows/windows.factor +++ b/extra/io/windows/windows.factor @@ -51,7 +51,7 @@ M: win32-file close-handle ( handle -- ) ! Clean up resources (open handle) if add-completion fails : open-file ( path access-mode create-mode flags -- handle ) [ - >r >r >r normalize-pathname r> + >r >r share-mode security-attributes-inherit r> r> CreateFile-flags f CreateFile dup invalid-handle? dup close-later dup add-completion From 5bab5de16d64a49e9157f4e9835a185cd3638c02 Mon Sep 17 00:00:00 2001 From: erg Date: Wed, 26 Mar 2008 22:47:13 -0500 Subject: [PATCH 2/2] make directory work inside with-directory --- core/io/backend/backend.factor | 4 ++-- core/io/files/files-tests.factor | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/io/backend/backend.factor b/core/io/backend/backend.factor index 8cfcbb71de..151dbc7df7 100755 --- a/core/io/backend/backend.factor +++ b/core/io/backend/backend.factor @@ -17,10 +17,10 @@ HOOK: io-multiplex io-backend ( ms -- ) HOOK: normalize-directory io-backend ( str -- newstr ) -M: object normalize-directory ; - HOOK: normalize-pathname io-backend ( str -- newstr ) +M: object normalize-directory normalize-pathname ; + : set-io-backend ( io-backend -- ) io-backend set-global init-io init-stdio ; diff --git a/core/io/files/files-tests.factor b/core/io/files/files-tests.factor index bb8e997c68..369ecc6868 100755 --- a/core/io/files/files-tests.factor +++ b/core/io/files/files-tests.factor @@ -83,6 +83,12 @@ io.encodings.utf8 ; "delete-tree-test" temp-file delete-tree ] unit-test +[ { { "kernel" t } } ] [ + "core" resource-path [ + "." directory [ first "kernel" = ] subset + ] with-directory +] unit-test + [ ] [ "copy-tree-test/a/b/c" temp-file make-directories ] unit-test