~ chicken-core (chicken-5) 8aea4eb24da31b60c3ce8ffe160e082761e10607
commit 8aea4eb24da31b60c3ce8ffe160e082761e10607
Author: Pietro Cerutti <gahr@gahr.ch>
AuthorDate: Mon Jan 6 14:10:24 2025 +0000
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Mon Jan 6 19:46:56 2025 +0100
Fix the return types of a couple of (chicken file) procedures
According to the docs, `delete-file*` is supposed to return #t on success.
However, it has `delete-file` in tail position, which in turn has `unless` in
tail position. I think this was an oversight and `delete-file` should have
its argument in tail position instead.
The types.db incorrectly declare `delete-directory` as returning a string.
Signed-off-by: felix <felix@call-with-current-continuation.org>
diff --git a/file.scm b/file.scm
index 2a212292..563724d8 100644
--- a/file.scm
+++ b/file.scm
@@ -228,8 +228,8 @@ EOF
(unless (eq? 0 (##core#inline "C_remove" (##sys#make-c-string filename 'delete-file)))
(##sys#signal-hook/errno
#:file-error (##sys#update-errno) 'delete-file
- (##sys#string-append "cannot delete file - " strerror) filename)
- filename))
+ (##sys#string-append "cannot delete file - " strerror) filename))
+ filename)
(define (delete-file* file)
(and (file-exists? file) (delete-file file)))
diff --git a/manual/Module (chicken file) b/manual/Module (chicken file)
index e2804508..8fc434a9 100644
--- a/manual/Module (chicken file)
+++ b/manual/Module (chicken file)
@@ -70,7 +70,7 @@ not exist, an error is signaled.
<procedure>(delete-file* STRING)</procedure>
-If the file with pathname {{STRING}} exists, it is deleted and {{#t}}
+If the file with pathname {{STRING}} exists, it is deleted and {{STRING}}
is returned. If the file does not exist, nothing happens and {{#f}}
is returned.
diff --git a/types.db b/types.db
index 5ee90b8f..3d10f564 100644
--- a/types.db
+++ b/types.db
@@ -1668,9 +1668,9 @@
(chicken.file#create-directory (#(procedure #:clean #:enforce) chicken.file#create-directory (string #!optional *) string))
(chicken.file#create-temporary-directory (#(procedure #:clean #:enforce) chicken.file#create-temporary-directory () string))
(chicken.file#create-temporary-file (#(procedure #:clean #:enforce) chicken.file#create-temporary-file (#!optional string) string))
-(chicken.file#delete-directory (#(procedure #:clean #:enforce) chicken.file#delete-directory (string #!optional *) string))
+(chicken.file#delete-directory (#(procedure #:clean #:enforce) chicken.file#delete-directory (string #!optional *) undefined))
(chicken.file#delete-file (#(procedure #:clean #:enforce) chicken.file#delete-file (string) string))
-(chicken.file#delete-file* (#(procedure #:clean #:enforce) chicken.file#delete-file* (string) *))
+(chicken.file#delete-file* (#(procedure #:clean #:enforce) chicken.file#delete-file* (string) (or false string)))
(chicken.file#directory-exists? (#(procedure #:clean #:enforce) chicken.file#directory-exists? (string) (or false string)))
(chicken.file#file-exists? (#(procedure #:clean #:enforce) chicken.file#file-exists? (string) (or false string)))
(chicken.file#find-files (#(procedure #:enforce) chicken.file#find-files (string #!rest) list))
Trap