Posted to tcl by iobates at Fri Aug 14 19:59:31 GMT 2026view pretty

proc async_copy {src dst} {
    # src is very likely a folder, but occationally a single file
    cd $src
    foreach f [glob *] {
	if {[file isdirectory $f]} {
	    # src is directory
	    set ndir [file join $dst [file tail $src]]
	    mkdir $ndir
	    async_copy [file join $src [file tail $ndir]] $ndir
	} else {
	    # src is a single file
	    set in [open $src r]
	    set out [open $dst w]
	    fconfigure $in  -translation binary
	    fconfigure $out -translation binary
	    chan copy $in $out
	}
    }
}