#!@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`;
    }
}
