On 2005.02.06, Dan Chak <[EMAIL PROTECTED]> wrote: > > Also, the namespace stuff isn't stripping namespace away, but simply > making the namespace explicit when the proc was defined in one. For > some reason, _not_doing_this_ breaks code in namespaces. I plucked > that snippet from OACS's ad_proc.
This is interesting. I'd like to see a test case demonstrating this breakage. I wonder if we'd be better off doing: rename proc _proc _proc proc {name args body} { uplevel [list _proc $name $args $body] } That should work correctly with namespaces. Another thing that should be done is examining [lindex [info level 0] 0] to ensure we invoke the real proc in the right namespace, if it's appropriate: maybe this is unnecessary. I'd have to see a code example where it failed to work correctly because it didn't do this. > First, I want to make sure our terminology is matching. When you say > "master interp," you are referring to the interpreter that is > processing the private tcl library, correct? Correct. > I actually _do_ want the private library to load using the redefined > proc. The only time I do not want my version of proc to be used is > during the "cloning" which causes all the defined procs to be > redefined with whatever is the current proc command. So, then, what you want is: --- 000-redefine-proc.tcl --- rename proc _proc _proc proc {name args body} { # your new proc def here } --- 999-redefine-proc.tcl --- rename proc {} rename _proc proc --- This way, your private Tcl library sources with your custom [proc] definition, but blows it away at the end so before AOLserver dumps the contents of the master interp's proc definitions, your custom [proc] is gone, so future child interps don't contain your redefined proc, and instead use the real thing. > Next, I tried to use ns_ictl get/save, but it doens't seem to do > anything. E.g., I had this load early in my private tcl library, but > when I print out the value of [ns_ictl get] in a .tcl page, I don't see > my ns_log calls, and I never see the messages in the log itself, > either. If this worked, it would seem like it could take the place of > 'oncreate' and the 'postcreate' which I am looking for. Ah, yes - silly me. You can't use [ns_ictl get] or [ns_ictl save] during startup because the script is only formed once all of the Tcl libraries are done sourcing. I tested this from the control port ... sorry about that. Yeah, there really isn't a good way to do a "postcreate" script. But then, I often think when your approach requires one, you're probably doing wrong ... :-) "Doctor, it hurts when do I this ..." "Well, then, don't do that." -- Dossy -- Dossy Shiobara mail: [EMAIL PROTECTED] Panoptic Computer Network web: http://www.panoptic.com/ "He realized the fastest way to change is to laugh at your own folly -- then you can let go and quickly move on." (p. 70) -- AOLserver - http://www.aolserver.com/ To Remove yourself from this list, simply send an email to <[EMAIL PROTECTED]> with the body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: field of your email blank.