shaniqua-tclcurl-fa/tests/ftpWildcard.tcl
2014-02-05 16:43:59 -08:00

82 lines
1.5 KiB
Tcl
Executable File

package require TclCurl
proc FtpMatch {pattern filename} {
puts "Pattern: $pattern - File: $filename"
# For this example everything matches
return 0
}
proc FtpCheck {remains} {
global someVar
# Lets forget about directories:
if {($someVar(filetype) eq "directory") || ([regexp {^\.} $someVar(filename)])} {
return 1
}
puts -nonewline "File to download $someVar(filename) ($someVar(size)B) (y/N): "
flush stdout
set line [string tolower [gets stdin]]
if {$line eq y} {
return 0
}
return 1
}
proc FtpSaveFile {readData} {
global outFile
global openedFile
global someVar
if {$openedFile==0} {
if {![file exists downloads]} {
file mkdir downloads
}
set outFile [open "downloads/$someVar(filename)" w+]
fconfigure $outFile -translation binary
}
puts -nonewline $outFile $readData
return 0
}
proc FtpDone {} {
global outFile
global openedFile
puts "Done\n"
close $outFile
set openedFile 0
return 0
}
set openedFile 0
set curlHandle [curl::init]
$curlHandle configure -url ftp://sunsite.rediris.es/sites/metalab.unc.edu/ldp/*
$curlHandle configure -chunkbgnproc FtpCheck
$curlHandle configure -chunkbgnvar someVar
$curlHandle configure -chunkendproc FtpDone
$curlHandle configure -writeproc FtpSaveFile
$curlHandle configure -wildcardmatch 1
$curlHandle configure -fnmatchproc FtpMatch
$curlHandle perform
$curlHandle cleanup