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


on errorMessage (errMsg, dataAdr = nil) {
	try {
		<<PBS 2/8/97: call string.iso8859encode rather than toys.cleanForExport
		errMsg = string.iso8859encode (errMsg,;
		bundle { <<log error
			local {
				fPath = file.folderFromPath (Frontier.getProgramPath ()) + "Error.log";
				logString = string.replace ( (), "; ", tab) + tab + errMsg};
			if !file.exists (fPath) { <<create file with field name in first line (fPath);
				file.setType (fPath, 'TEXT');
				file.setCreator (fPath, 'R*ch')};
			semaphores.lock ("error.log", 3600);
			try {
				file.writeLine (fPath, logString);
				if (dataAdr != nil) and (defined (dataAdr)) and (webserver.getPref ("verboseLogging")) { <<verbose logging -- still testing
					local (i);
					for i = 1 to sizeOf (dataAdr^) {
						file.writeLine (fPath, nameOf (dataAdr^[i]) + ": " + dataAdr^[i])}};
				semaphores.unlock ("error.log")}
			else {
				semaphores.unlock ("error.log")}};
		local (x);
		if typeOf (dataAdr) != addressType { <<create an address to a table
			new (tableType, @x);
			dataAdr = @x};
		dataAdr^.errorMessage = errMsg;
		local (htmltext = webserver.httpHeader (), errPage = string (webserver.getPref ("errorPage")));
		htmltext = htmltext + webserver.processMacros (errPage, dataAdr);
		return (htmltext)}
	else {
		return ("An unknown error occurred in Frontier.")}}

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.