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.28 -r1.29 --- openacs-4/packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl 19 Jul 2005 10:29:43 -0000 1.28 +++ openacs-4/packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl 21 Jul 2005 09:35:20 -0000 1.29 @@ -420,7 +420,19 @@ set log_code "ns_log Debug \"Deprecated proc $proc_name used\"\n" } - if { [llength $switches] == 0 } { + if { ![string equal $callback ""] && ![string equal $impl ""] } { + if { [llength [info procs "::callback::${callback}::contract__arg_parser"]] == 0 } { + # 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 + # args of the contract should be. + uplevel [::list proc ::callback::${callback}::contract__arg_parser {} {}] + } + + # We are creating a callback implementation so we invoke the + # arg parser of the contract proc + uplevel [::list proc $proc_name_as_passed args " ::callback::${callback}::contract__arg_parser\n${log_code}$code_block"] + } elseif { [llength $switches] == 0 } { uplevel [::list proc $proc_name_as_passed $arg_list "${log_code}$code_block"] } elseif { ![string equal $callback ""] && ![string equal $impl ""] } { # We are creating a callback implementation so we invoke the