# ---------------------------------------------------------------------------
# main websh configuration file (referenced by Apache WebshConfig directive)
# $Id$
# ---------------------------------------------------------------------------

# where is all the stuff
set document_root [eval file join [lrange [file split [info script]] 0 end-2]]

# map of requests to interpreter classes
proc web::interpmap {file} {

    # what needs to be passed to websh.interpclass
    if {[string match $::document_root/websh/* $file]} {
        return $::document_root/websh/websh.interpclass
    }
    # default (all other files use their own class)
    return $file
}

# allow 1000 requests per interpreter before cleaning it up
web::interpclasscfg $::document_root/websh/websh.interpclass maxrequests 1000
