~ 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