Index: openacs-4/packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl,v diff -u -N -r1.39 -r1.40 --- openacs-4/packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl 30 Oct 2010 21:43:01 -0000 1.39 +++ openacs-4/packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl 8 Dec 2012 18:20:36 -0000 1.40 @@ -433,7 +433,7 @@ } if { $callback ne "" && $impl ne "" } { - if { [llength [info procs "::callback::${callback}::contract__arg_parser"]] == 0 } { + if { [info commands "::callback::${callback}::contract__arg_parser"] eq "" } { # We create a dummy arg parser for the contract in case # the contract hasn't been defined yet. We need this # because the implementation doesn't tell us what the @@ -783,16 +783,15 @@ # arg validation -- ::callback::${callback}::contract is an # empty function that only runs the ad_proc generated arg parser. - if {[llength [info proc ::callback::${callback}::contract]] != 1} { + if {[info commands ::callback::${callback}::contract] eq ""} { error "Undefined callback $callback" } eval ::callback::${callback}::contract $args set returns {} set base ::callback::${callback}::impl - foreach procname [lsort [info procs ${base}::$impl]] { - + foreach procname [lsort [info commands ${base}::$impl]] { set c [catch {::uplevel 1 $procname $args} ret] switch -exact $c { 0 { # code ok