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

on sdoc (pathArgs, kfor="", user="", pass="", frmu="", addr="", svpt="",  svnm="", scnm="", meth="", refr="", Kcid="", Kact="", Kapt="", ctyp="", post="", Kcip="", Kfrq="", Agnt="", DIRE="") {
	local (paramtable, appID, appName, websiteFolderPath, serverPath);
	new (tableType, @paramtable);
	<<The binaryID should be used in send-partial commands
		<<in place of the appID or appName. The binaryID specifies
		<<the application that sent the CGI sdoc event
		<<specifically. This way you can have two copies of WebSTAR
		<<(for instance) running at the same time.
			<<webstar.sendpartial (myData, adrparams^.connectionID, true, adrparams^.binaryID)
		<<[Technically: the binaryID is always either a ProcessSerialNumber or a Target ID Record
			<<('psn ' or 'targ'), but you don't need to know that to use it.]
	local (binaryID = getEventSender ());
	<<Get info about the server app.
	bundle {
		<<Get the website folder path.
		if DIRE != "" { <<DIRE is the website folder parameter
			websiteFolderPath = DIRE}
		else {
			websiteFolderPath = webserver.getPref ("websiteFolderPath")};
		<<Get the server app path and name
		serverPath = webserver.getPref ("serverPath");
		try {
			appName = file.fileFromPath (serverPath)};
		<<Get the server appID
		try {
			appID = file.creator (serverPath)}};
	bundle { <<Set up CGI params table
		paramtable.action = Kact;
		paramtable.actionPath = Kapt;
		paramtable.appID = appID;
		paramtable.appName = appName;
		paramtable.binaryID = binaryID;
		paramtable.clientAddress = addr;
		paramtable.clientIP = Kcip;
		paramtable.connectionID = Kcid;
		paramtable.contentType = ctyp;
		paramtable.fromUser = frmu;
		paramtable.fullRequest = Kfrq;
		paramtable.httpSearchArgs = kfor;
		paramtable.method = meth;
		paramtable.password = pass;
		paramtable.pathArgs = pathArgs;
		paramtable.postargs = post;
		paramtable.referer = refr;
		paramtable.scriptName = scnm;
		paramtable.serverName = svnm;
		paramtable.serverPath = serverPath;
		paramtable.serverPort = svpt;
		paramtable.userAgent = Agnt;
		paramtable.username = user;
		paramtable.websiteFolder = websiteFolderPath;
		<<Parse the post args, if they exist.
		if paramtable.postargs != "" {
			new (tabletype, @paramtable.argtable);
			webserver.parseArgs (post, @paramtable.argtable)}};
	return (webserver.handler (@paramtable))}

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.