~ chicken-core (master) 1a193caadd836ae5b3f2d74bcf88dfd6b6b3348e


commit 1a193caadd836ae5b3f2d74bcf88dfd6b6b3348e
Author:     Peter Bex <peter@more-magic.net>
AuthorDate: Fri Sep 25 14:47:21 2026 +0200
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Fri Sep 25 18:32:59 2026 +0200

    Make types.db entry for copy-port match what the manual says, and improve manual a bit
    
    It specifically says the reader and writer are invoked with "from" and
    "to", without checking whether they are ports.
    
    Also, the manual doesn't mention that READER needs to return an EOF
    object to indicate copying needs to stop.
    
    Signed-off-by: felix <felix@call-with-current-continuation.org>

diff --git a/manual/Module (chicken port) b/manual/Module (chicken port)
index 5cfa54fd..0c97684b 100644
--- a/manual/Module (chicken port)	
+++ b/manual/Module (chicken port)	
@@ -258,7 +258,8 @@ Reads all remaining data from port {{FROM}} using the reader procedure
 {{write-char}}. Note that this procedure does not check {{FROM}} and
 {{TO}} for being ports, so the reader and writer procedures may
 perform arbitrary operations as long as they can be invoked
-as {{(READ FROM)}} and {{(WRITE X TO)}}, respectively.
+as {{(READ FROM)}} and {{(WRITE X TO)}}, respectively, and {{READ}}
+eventually returns an EOF object to indicate copying should stop.
 {{copy-port}} returns an undefined value.
 
 {{copy-port}} was introduced in CHICKEN 4.6.0.
diff --git a/types.db b/types.db
index eabad599..3d205d77 100644
--- a/types.db
+++ b/types.db
@@ -1949,7 +1949,7 @@
 
 (chicken.port#call-with-input-string (#(procedure #:enforce) chicken.port#call-with-input-string (string (procedure (input-port) . *)) . *))
 (chicken.port#call-with-output-string (#(procedure #:enforce) chicken.port#call-with-output-string ((procedure (output-port) . *)) string))
-(chicken.port#copy-port (#(procedure #:enforce) chicken.port#copy-port (* * #!optional (procedure (*) *) (procedure (* output-port) *)) undefined))
+(chicken.port#copy-port (#(procedure #:enforce) chicken.port#copy-port (* * #!optional (procedure (*) *) (procedure (* *) *)) undefined))
 (chicken.port#make-input-port (#(procedure #:clean #:enforce) chicken.port#make-input-port ((procedure () (or char eof)) (procedure () *) (procedure () . *) #!rest *) input-port))
 (chicken.port#make-output-port (#(procedure #:clean #:enforce) chicken.port#make-output-port ((procedure (string) . *) (procedure () . *) #!rest *) output-port))
 (chicken.port#make-binary-input-port (#(procedure #:clean #:enforce) chicken.port#make-binary-input-port ((procedure () (or fixnum eof)) (procedure () *) (procedure () . *) #!rest *) input-port))
Trap