~ chicken-core (chicken-5) 17d9418adacdd03bdc9862d3e93932b4ea1be74c
commit 17d9418adacdd03bdc9862d3e93932b4ea1be74c Author: felix <felix@call-with-current-continuation.org> AuthorDate: Wed Feb 17 07:38:43 2010 +0100 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Wed Feb 17 07:38:43 2010 +0100 file-deletion and rename returns destination filename diff --git a/library.scm b/library.scm index fe823d0b..1559b9d6 100644 --- a/library.scm +++ b/library.scm @@ -2106,7 +2106,8 @@ EOF (##sys#update-errno) (##sys#signal-hook #:file-error 'delete-file - (##sys#string-append "cannot delete file - " strerror) filename) ) ) + (##sys#string-append "cannot delete file - " strerror) filename) ) + filename) #:delete) ) (define (rename-file old new) @@ -2122,7 +2123,8 @@ EOF (##sys#update-errno) (##sys#signal-hook #:file-error 'rename-file - (##sys#string-append "cannot rename file - " strerror) old new) ) ) ) ) + (##sys#string-append "cannot rename file - " strerror) old new) ) + new))) #:rename new) ) diff --git a/posixunix.scm b/posixunix.scm index 5d3806d2..4ba55148 100644 --- a/posixunix.scm +++ b/posixunix.scm @@ -893,19 +893,24 @@ EOF (when (and dir (not (*directory? 'create-directory dir))) (loop (pathname-directory dir)) (*create-directory 'create-directory dir)) ) - (*create-directory 'create-directory name) ) ) ) ) ) ) + (*create-directory 'create-directory name) ) ) + name)))) (define change-directory (lambda (name) (##sys#check-string name 'change-directory) - (unless (fx= 0 (##core#inline "C_chdir" (##sys#make-c-string (##sys#expand-home-path name)))) - (posix-error #:file-error 'change-directory "cannot change current directory" name) ) ) ) + (let ((name (##sys#make-c-string (##sys#expand-home-path name)))) + (unless (fx= 0 (##core#inline "C_chdir" name)) + (posix-error #:file-error 'change-directory "cannot change current directory" name) ) + name))) (define delete-directory (lambda (name) (##sys#check-string name 'delete-directory) - (unless (fx= 0 (##core#inline "C_rmdir" (##sys#make-c-string (##sys#expand-home-path name)))) - (posix-error #:file-error 'delete-directory "cannot delete directory" name) ) ) ) + (let ((name (##sys#make-c-string (##sys#expand-home-path name)))) + (unless (fx= 0 (##core#inline "C_rmdir" name)) + (posix-error #:file-error 'delete-directory "cannot delete directory" name) ) + name))) (define directory (let ([string-ref string-ref] diff --git a/posixwin.scm b/posixwin.scm index d30b7f8c..ea8bf0be 100644 --- a/posixwin.scm +++ b/posixwin.scm @@ -1190,7 +1190,7 @@ EOF (define-inline (create-directory-helper-silent name) (unless (create-directory-check name) - (create-directory-helper name))) + (create-directory-helper name))) (define-inline (create-directory-helper-parents name) (let* ((l (string-split name "/\\")) @@ -1207,21 +1207,27 @@ EOF (let ((name (##sys#expand-home-path name))) (if parents? (create-directory-helper-parents name) - (create-directory-helper name)))) ) + (create-directory-helper name)) + name))) (define change-directory (lambda (name) (##sys#check-string name 'change-directory) - (unless (fx= 0 (##core#inline "C_chdir" (##sys#make-c-string (##sys#expand-home-path name)))) - (##sys#update-errno) - (##sys#signal-hook #:file-error 'change-directory "cannot change current directory" name) ) ) ) + (let ((name (##sys#make-c-string (##sys#expand-home-path name)))) + (unless (fx= 0 (##core#inline "C_chdir" name)) + (##sys#update-errno) + (##sys#signal-hook + #:file-error 'change-directory "cannot change current directory" name) ) + name))) (define delete-directory (lambda (name) (##sys#check-string name 'delete-directory) - (unless (fx= 0 (##core#inline "C_rmdir" (##sys#make-c-string (##sys#expand-home-path name)))) - (##sys#update-errno) - (##sys#signal-hook #:file-error 'delete-directory "cannot delete directory" name) ) ) ) + (let ((name (##sys#make-c-string (##sys#expand-home-path name)))) + (unless (fx= 0 (##core#inline "C_rmdir" name)) + (##sys#update-errno) + (##sys#signal-hook #:file-error 'delete-directory "cannot delete directory" name) ) + name))) (define directory (let ([string-append string-append] diff --git a/types.db b/types.db index 5c05723f..567cfc8b 100644 --- a/types.db +++ b/types.db @@ -262,7 +262,7 @@ (current-read-table (procedure current-read-table () (struct read-table))) (current-seconds (procedure current-seconds () number)) (define-reader-ctor (procedure define-reader-ctor (symbol procedure) undefined)) -(delete-file (procedure delete-file (string) undefined)) +(delete-file (procedure delete-file (string) string)) (enable-warnings (procedure enable-warnings (#!optional *) *)) (errno (procedure errno () fixnum)) (error (procedure error (#!rest) noreturn)) @@ -383,7 +383,7 @@ (put! (procedure put! (symbol symbol *) undefined)) (register-feature! (procedure register-feature! (#!rest symbol) undefined)) (remprop! (procedure remprop! (symbol symbol) undefined)) -(rename-file (procedure rename-file (string string) undefined)) +(rename-file (procedure rename-file (string string) string)) (repl (procedure repl () undefined)) (repl-prompt (procedure repl-prompt (#!optional procedure) procedure)) (repository-path (procedure repository-path (#!optional *) *)) @@ -510,9 +510,9 @@ ;; files -(delete-file* (procedure delete-file* (string) boolean)) -(file-copy (procedure file-copy (string string #!optional * fixnum) undefined)) -(file-move (procedure file-move (string string #!optional * fixnum) undefined)) +(delete-file* (procedure delete-file* (string) *)) +(file-copy (procedure file-copy (string string #!optional * fixnum) fixnum)) +(file-move (procedure file-move (string string #!optional * fixnum) fixnum)) (make-pathname (procedure make-pathname (* * #!optional string string) string)) (directory-null? (procedure directory-null? (string) boolean)) (make-absolute-pathname (procedure make-absolute-pathname (* * #!optional string string) string)) @@ -660,12 +660,12 @@ (call-with-input-pipe (procedure call-with-input-pipe (string (procedure (port) . *) #!optional symbol) . *)) (call-with-output-pipe (procedure call-with-output-pipe (string (procedure (port) . *) #!optional symbol) . *)) (canonical-path deprecated) -(change-directory (procedure change-directory (string) undefined)) +(change-directory (procedure change-directory (string) string)) (change-file-mode (procedure change-file-mode (string fixnum) undefined)) (change-file-owner (procedure change-file-owner (string fixnum fixnum) undefined)) (close-input-pipe (procedure close-input-pipe (port) fixnum)) (close-output-pipe (procedure close-output-pipe (port) fixnum)) -(create-directory (procedure create-directory (string #!optional *) undefined)) +(create-directory (procedure create-directory (string #!optional *) string)) (create-fifo (procedure create-fifo (string #!optional fixnum) undefined)) (create-pipe (procedure create-pipe () fixnum fixnum)) (create-session (procedure create-session () fixnum)) @@ -680,7 +680,7 @@ (current-process-id (procedure current-process-id () fixnum)) (current-user-id (procedure current-user-id () fixnum)) (current-user-name (procedure current-user-name () string)) -(delete-directory (procedure delete-directory (string) undefined)) +(delete-directory (procedure delete-directory (string) string)) (directory (procedure directory (string #!optional *) list)) (directory? (procedure directory? (string) boolean)) (duplicate-fileno (procedure duplicate-fileno (fixnum #!optional fixnum) fixnum))Trap