diff options
Diffstat (limited to 'perl/contrib/recursiveftpget.pl.in')
-rw-r--r-- | perl/contrib/recursiveftpget.pl.in | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/perl/contrib/recursiveftpget.pl.in b/perl/contrib/recursiveftpget.pl.in new file mode 100644 index 000000000..7d9cf8eb8 --- /dev/null +++ b/perl/contrib/recursiveftpget.pl.in @@ -0,0 +1,67 @@ +#!@PERL@ +# +# Author: Daniel Stenberg <Daniel.Stenberg@sth.frontec.se> +# Date: August 25 1998 +# Version: 0.1 +# +# This is just meant as an example of why we wrote curl in the first place. +# Quick n' easy scripting use. +# + +$dir = $ARGV[0]; + +$target = $ARGV[1]; + +$maxdepth = $ARGV[2]; + +if($dir eq "" || $target eq "") { + print "Usage: <URL> <dir> [max depth level] \n"; + print " End the URL with a slash if a directory is specified, please\n"; + exit; +} + +if(($maxdepth ne "") && ($maxdepth == 0)) { + # reached maximum depth, die + print "Reached maximum recursive depth level ($maxdepth), exiting...\n"; + exit; +} + +# get dir +@all = `curl -s $dir`; + +if($all[0] ne "") { + print "Got the main $dir dir\n"; +} + +line: +for(@all) { + chop; # cut off newline + @linep= split(" ", $_); + + $name = $linep[$#linep]; + + $firstletter=substr($linep[0], 0, 1); + + if($firstletter eq "d") { + # this is a subdir, recurse + # if not . or .. of course + + if(($name eq ".") || ($name eq "..")) { + next line; + } + print "Recursing for dir $dir$name in target $target/$name\n"; + + $nextdepth=$maxdepth-1; + print `$0 $dir$name/ $target/$name $nextdepth`; + } + elsif($firstletter eq "-") { + # this is a file, get it + # oh, make sure the target dir exists first + + if(! -r $target ) { + mkdir($target,0777); + } + print "Getting file $dir$name in target $target/$name\n"; + print `curl -s $dir$name >$target/$name`; + } +} |