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 -r1.25 -r1.26 --- openacs-4/packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl 23 Mar 2005 21:53:59 -0000 1.25 +++ openacs-4/packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl 29 Mar 2005 10:28:38 -0000 1.26 @@ -602,7 +602,7 @@ }

- + @param public specifies that the procedure is part of a public API. @param private specifies that the procedure is package-private. @param deprecated specifies that the procedure should not be used. @@ -617,7 +617,7 @@ @param [doc_string] documentation for the procedure (optional, but greatly desired). @param body the procedure body. Documentation may be provided for an arbitrary function by passing the body as a "-". - + } - ad_proc -public ad_arg_parser { allowed_args argv } { @@ -678,7 +678,11 @@ is provided. The value returned by the callback function is determined by the return codes from the callback implementations.

- The return codes returned from the implmentation are treated + The callbacks are executed one level below the calling function + so passing arrays to a callback can be done normally via +

upvar arrayname $arrayref
+

+ The return codes returned from the implmentation are treated as follows:

return -code ok or "return"
@@ -742,7 +746,8 @@ set base ::callback::${callback}::impl foreach procname [lsort [info procs ${base}::$impl]] { - set c [catch {::eval $procname $args} ret] + + set c [catch {::uplevel 1 $procname $args} ret] switch -exact $c { 0 { # code ok if {[llength $ret] > 0} {