Monday, November 08, 2010 at 12:04 AM.


on openRoot (pta=nil) {
	<<Adds another level to mainResponder.discuss.openFile. 
		<<We return the address of the root of the discussion group referenced by rootname. This is the central routine for allowing multiple discussion roots.
		<<1/10/99; 9:50:54 AM by DW
			<<Wed, 03 Mar 1999 21:19:08 GMT by AR
				<<Fixed scriptError message to use the correct variable name.
			<<Mon, Aug 2, 1999 at 2:14:13 PM by PBS
				<<Optional pta parameter allows us to circumvent the try statement if pta is passed. Try statements should be avoided when possible. (mainResponder profiling showed that this verb was a minor performance bottleneck in its previous state.)
				<<Removed local declaration of f -- it was unused.
				<<Added several comments to the script.
			<<10/2/99; 10:38:00 PM by PBS
				<<Addresses (and strings that can be coerced to addresses) are allowed in discuss.root. These addresses point to discussion group storage. This was implemented to allow for greater portability: a website guest database can contain its discussion group.
	local (rootName = config.mainResponder.prefs.defaultDiscussRoot, adr);
	if pta == nil { //if the address of the page table wasn't passed...
		try {pta = html.getPageTableAddress ()}}; //...get the address of the page table
	if defined (pta^.discussionRoot) { //is the name of dg in the page table?
		rootName = pta^.discussionRoot}; //get the name of the dg from the page table
	adr = @[system.temp.mainResponder.discussRootFile].[rootName]; //get the address of the discussion group
	on error () {
		scriptError ("There is no discussion root named \"" + rootName + "\".")}; //It doesn't exist: generate a script error
	if not defined (adr^) { //does this discussion group exist?
		error ()};
	if typeOf (adr^) == addressType or typeOf (adr^) == stringType { //PBS 10/2/99: handle addresses in discuss.root
		if not defined (adr^^) { //make sure this address points somewhere
			error ()};
		adr = adr^}; //de-reference the address
	return (adr)} //return the address of the discussion group

This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.