Monday, November 08, 2010 at 12:06 AM.
system.verbs.builtins.userland.cleanRoot
<<Changes
<<10/20/09; 10:29:10 AM by DW
<<Open the about window by default at startup in the OPML Editor.
<<2/11/09; 10:48:54 AM by DW
<<Delete user.flickr.
<<8/15/08; 5:54:28 AM by DW
<<Don't init user.rootupdates, delete the prefs table and the flags table.
<<8/4/08; 10:09:12 AM by DW
<<Delete user.opmlEditor.
<<8/4/08; 7:32:34 AM by DW
<<Delete user.bookmarksMenu.
<<7/30/08; 8:29:57 AM by DW
<<Missed one use of shipfolder. Commented out.
<<7/30/08; 8:07:23 AM by DW
<<shipfolder is obsolete. Don't save the bundled tools (there are none).
<<7/27/08; 6:42:43 PM by DW
<<Init user.webserver.stats.domains.
<<7/27/08; 2:21:28 PM by DW
<<To nuke the scheduler startup dialog, set user.scheduler.prefs.confirmStartupTasks to false.
<<7/27/08; 10:28:18 AM by DW
<<On Windows, load mascot.jpg into userland table.
<<7/27/08; 9:44:17 AM by DW
<<Allow for the possibility that there is no dotOpml.root, programmersMenu.root or newsRiver.root.
<<6/2/06; 8:19:53 AM by DW
<<Save the notepad in the parent folder of the ship folder.
<<Clean up various stuff in dotOpml.root.
<<6/11/05; 9:42:27 AM by DW
<<Delete various opml.root stuff.
<<6/7/05; 10:27:15 AM by DW
<<Delete bookmarks menu, custom menu.
<<2/1/05; 10:22:48 AM by DW
<<Update for the OPML editor.
<<8/18/02; 5:05:04 PM by JES
<<Delete the RCS Backups, Manila Backups and backups folders from the Frontier folder. Initialize user.prefs.serialNumber to the empty string. Set up the port 5335 HTTP server at user.inetd.config.http2.
<<run this script to clean up the root for release
<<DW 1/1/96: MacBird 1.0 Release
<<DW 4/1/96: Brought back stuff from 3.0
<<DW 4/20/96: Frontier 4.0b5 release
<<DW 11/5/97 Frontier 5.0a11
local (pc = file.getpathchar ());
bundle { //before anything save-copy this root
local (oldtarget = target.set (@root));
if system.environment.isMac {
filemenu.savecopy ("Macintosh HD:safe.root")};
if system.environment.isWindows {
filemenu.savecopy ("C:\\safe.root")};
target.set (oldtarget)};
local (savedprefs = user.prefs);
local (savedwebeditprefs = user.webedit);
<<local (shipfolder)
<<if system.environment.isMac
<<shipfolder = "Macintosh HD:OPML Work:Shipping:OPML:"
<<if system.environment.isWindows
<<shipfolder = "C:\\OPML Work\\Shipping\\OPML\\"
<<try //disable threads
<<user.scheduler.prefs.runThreads = false
<<scheduler.monitorThreads ()
try {delete (@user.flickr)}; //2/11/09 by DW
try {delete (@user.bookmarksMenu)}; //8/4/08 by DW
try {delete (@user.opmlEditor)}; //8/4/08 by DW
try {delete (@user.menus.bookmarkMenu)};
try {delete (@user.menus.customMenu)};
try {delete (@user.webBrowser.winDefaultBrowserApp)};
bundle { //init user.webbrowser.proxy
user.webbrowser.proxy.domain = "";
user.webbrowser.proxy.enabled = false;
user.webbrowser.proxy.password = "";
user.webbrowser.proxy.username = ""};
bundle { //load the image from the Appearance folder, 7/27/08 by DW
if system.environment.iswindows {
local (f = frontier.pathstring + "Appearance" + pc + "html" + pc + "mascot.jpg");
if file.exists (f) {
local (adrimage = @userland.opmlEditorMascotImage);
adrimage^ = file.readwholefile (f);
setBinaryType (adrimage, "JPEG")}}};
Frontier.enableAgents (false);
inetd.stop ();
bundle { <<initialize the quick script window
window.quickScript ();
clipboard.putvalue ("dialog.notify (\"Hello World!\")");
editmenu.selectall ();
editmenu.paste ();
window.close ("Quick Script")};
<<bundle //set up the root window
<<local (oldtarget = target.set ("root"))
<<op.firstSummit ()
<<op.fullCollapse ()
<<op.findNext ("suites")
<<wp.setTextMode (false)
<<op.expand (1)
<<window.zoom (window.frontmost ())
<<op.collapse ()
<<target.set (oldtarget)
bundle { //save a copy of notepad outline, then empty it, 2/1/05; 10:22:48 AM by DW
local (pc = file.getpathchar ());
local (f = file.folderfrompath (frontier.pathstring) + "Saved notedpads" + pc + "notepad" + clock.ticks () + ".opml");
local (xmltext = op.outlinetoxml (@workspace.notepad));
file.surefilepath (f);
file.writewholefile (f, xmltext);
new (outlineType, @workspace.notepad)};
bundle { <<clear the path for all apps in the apps table
local (adrappstable = @system.verbs.apps, i);
for i = 1 to sizeof (adrappstable^) {
local (adrappinfo = @adrappstable^ [i].appInfo);
if defined (adrappinfo^) {
adrappinfo^.path = ""}}};
bundle { <<clean passwords out of user.html.sites table
local (i);
for i = 1 to sizeof (user.html.sites) {
if defined (user.html.sites [i].password) {
user.html.sites [i].password = ""}}};
<<bundle <<initialize stuff in the webServer suite
<<webServer.preferences.hostname = ""
<<webServer.preferences.rootPath = ""
bundle { <<set up user.html
user.html.prefs = userland.htmlprefs; <<initialize user.html.prefs table
new (outlinetype, @user.html.changedPages);
new (tableType, @user.html.images)};
<<edit (@frontier.version)
Frontier.shipdate = clock.now ();
userland.initialLastUpdateTime = date.netStandardString (Frontier.shipDate);
user.prefs.search.winStandardFindCommand = false;
user.prefs.agentsEnabled = true;
user.prefs.dialogs.jumpAddress = "workspace";
user.prefs.firstRootRun = true;
user.prefs.serialNumber = "";
user.prefs.frontierIsServer = false;
user.prefs.flShortTimeStamp = false;
user.prefs.flWinStandardMaximize = true;
try {delete (@user.prefs.portForwardingAdminPassword)};
bundle { //set up trial version info
try {delete (@userland.trialVersion)};
user.prefs.serialNumber = ""};
bundle { //set up webserver, betty, rootUpdates, people, custody, and WebEdit
on nuke (name) {
if defined (user.[name]) {
delete (@user.[name])};
return (true)};
<<nuke ("webserver")
nuke ("betty");
nuke ("people");
nuke ("custody");
nuke ("webEdit");
nuke ("webEditServer");
<<nuke ("rootUpdates")
nuke ("databases");
nuke ("backups");
nuke ("batchExporter");
nuke ("export");
nuke ("xmlStorageSystem");
nuke ("photoFan"); //7/30/08 by DW
try {delete (@user.scheduler.tasks)}; //PBS 07/06/00: let the user.scheduler.tasks table get re-initialized
try {delete (@user.scheduler.everyMinute)};
try {delete (@user.scheduler.threads)};
try {delete (@user.scheduler.hourly)};
try {delete (@user.scheduler.overnight)};
bundle { //user.manila
new (tableType, @user.manila);
new (tableType, @user.manila.data);
new (tableType, @user.manila.data.sites);
new (tableType, @user.manila.prefs);
user.manila.prefs.lastSiteUrl = "http://"};
webserver.init ();
betty.init ();
people.init ();
custody.init ();
webEdit.init ();
webEditServer.init ();
<<rootUpdates.init ()
try {delete (@user.rootupdates.prefs)}; //8/15/08 by DW
try {delete (@user.rootupdates.flags)}}; //8/15/08 by DW
<<bundle //disabled -- 4/17/05; 9:07:38 AM by DW
<<user.inetd.config.http = webserver.data.inetd.config.http
<<user.inetd.config.http2 = webserver.data.inetd.config.http2 //port 5335 server
<<if system.environment.isCarbon
<<user.inetd.config.http.port = 8080
<<user.inetd.config.http.apparentPort = 80
<<user.inetd.config.http.timeout = 30
<<user.inetd.config.http.startup = true
<<user.inetd.config.http.count = 30
<<user.inetd.config.http2.timeout = 30
<<user.inetd.config.http2.startup = true
<<user.inetd.config.http2.count = 30
<<new (tableType, @user.inetd.listens)
<<bundle //initialize responders
<<user.webserver.responders.websiteFramework.data.docTree.samples = @websites.samples
<<try
<<delete (@user.webserver.responders.websiteFramework.data.docTree.allSites)
<<try
<<delete (@user.webserver.responders.websiteFramework.data.docTree.contents)
filemenu.save ();
bundle { //8.0 stuff
<<bundle //user.odbEditors
<<new (tableType, @user.odbEditors)
<<new (tableType, @user.odbEditors.data)
<<new (tableType, @user.odbEditors.data.openFiles)
<<user.odbEditors.openFiles.data.serialnum = 1
<<user.odbEditors.openFiles.data.TextEditor = ""
<<user.odbEditors.textFileExtension = ".html"
try {delete (@user.odbEditors)};
bundle { //user.netEvents
try {delete (@user.netEvents)}};
bundle { //user.xmlStorageSystem
try {delete (@user.xmlStorageSystem)}};
try {delete (@user.tools)};
new (tabletype, @user.scheduler.threads);
frontier.tools.init ();
Frontier.tools.thread.ct = 0;
Frontier.tools.thread.enabled = true};
bundle { //7/27/08 by DW
user.scheduler.prefs.confirmStartupTasks = false;
user.webserver.stats.domains.default.bytes = 0;
user.webserver.stats.domains.default.hits = 0;
user.webserver.stats.domains.default.ticks = 0};
bundle { //OPML editor stuff, 2/1/05; 10:29:04 AM by
user.prefs.flShortTimeStamp = true;
user.prefs.flWinStandardMaximize = false;
user.prefs.openAboutWindow = true; //10/20/09 by DW
try {delete (@user.mdiWindow)};
try {delete (@user.folderWatcher)}};
bundle { //Delete various opml.root stuff, 6/11/05; 9:43:00 AM by DW
try {delete (@Frontier.tools.data.nodeTypes.buddyOutlineElement)};
try {delete (@Frontier.tools.data.nodeTypes.buddySubscriberElement)}};
bundle { //clean up various stuff in dotOpml.root, 6/2/06 by DW
try {delete (@dotOpmlSuite.mdiWindow.images.newsRiver)};
try {delete (@dotOpmlSuite.mdiWindow.pages.newsRiver)}};
bundle { //save-copy shipping databases
local (oldtarget = target.set (@root));
local (fsave = frontier.pathstring + "virgin.root");
file.surefilepath (fsave);
filemenu.savecopy (fsave);
<<file.copy (fsave, frontier.pathstring + "virgin.root")
<<if defined (dotOpmlSuite) //7/27/08 by DW
<<target.set (@dotOpmlSuite)
<<fsave = shipfolder + "Guest Databases" + pc + "apps" + pc + "Tools" + pc + "dotOpml.root"
<<file.surefilepath (fsave)
<<filemenu.savecopy (fsave)
<<if defined (programmersMenuSuite) //7/27/08 by DW
<<target.set (@programmersMenuSuite)
<<filemenu.savecopy (shipfolder + "Guest Databases" + pc + "apps" + pc + "Tools" + pc + "programmersMenu.root")
<<if defined (newsRiverSuite) //7/27/08 by DW
<<target.set (@newsRiverSuite)
<<filemenu.savecopy (shipfolder + "Guest Databases" + pc + "apps" + pc + "Tools" + pc + "newsRiver.root")
target.set (oldtarget);
};
<<file.openfolder (shipfolder)
user.webedit = savedwebeditprefs;
user.prefs = savedprefs;
<<bundle //copy shipfolder to place to test it
<<try
<<file.deletefolder ("H:\\Junk\\OPML\\")
<<file.copy (shipfolder, "H:\\Junk\\OPML\\")
<<file.openfolder ("H:\\Junk\\OPML\\")
<<bundle //PBS 07/05/00: delete unwanted databases
<<on visitProc (f)
<<if not (string.lower (f) == string.lower (Frontier.getFilePath ()))
<<fileMenu.close (f)
<<table.visitOpenDatabases (@visitProc, true) //close open gdbs
<<local (f)
<<local (folder = Frontier.getSubFolder ("")) //path to Guest Databases folder
<<fileloop (f in folder, infinity)
<<local (fname = file.fileFromPath (f))
<<local (lowerName = string.lower (fname))
<<lowerName = lowerName - file.getPathChar ()
<<case lowerName
<<"thexmlfiles.root"
<<"manila.root"
<<"mainresponder.root"
<<"prefs.root"
<<continue
<<file.delete (f)
<<folder = Frontier.getSubFolder ("ops")
<<fileloop (f in folder)
<<local (fname = file.fileFromPath (f))
<<if f endsWith ".root"
<<try {file.delete (f)}
<<if file.isFolder (f)
<<if f contains "theme"
<<continue
<<try {file.deleteFolder (f)}
<<file.emptyFolder (folder) //delete everything in the ops folder
<<folder = Frontier.getSubFolder ("www")
<<fileloop (f in folder)
<<local (fname = file.fileFromPath (f))
<<if f endsWith ".root"
<<if not (f contains "prefs")
<<try {file.delete (f)}
<<if file.isFolder (f)
<<if f contains "theme"
<<continue
<<try {file.deleteFolder (f)}
<<local (pc = file.getPathChar ())
<<local (sourceFolder = file.getSystemDisk () + "VirginDatabases" + pc)
<<folder = Frontier.getSubFolder ("apps")
<<file.emptyFolder (folder)
<<file.copy (sourceFolder + "mainResponder.root", folder)
<<file.copy (sourceFolder + "manila.root", folder)
<<folder = Frontier.getSubFolder ("apps/Tools/")
<<file.copy (sourceFolder + "TheXmlFiles.root", folder)
<<file.copy (sourceFolder + "serverMonitor.root", folder)
<<file.copy (sourceFolder + "radioCommunityServer.root", folder)
<<
<<folder = Frontier.getSubFolder ("www")
<<file.emptyFolder (folder)
<<file.copy (sourceFolder + "prefs.root", folder)
<<
<<folder = Frontier.getSubFolder ("ops")
<<file.emptyFolder (folder)
<<file.copy (sourceFolder + "ops" + pc, folder)
<<
<<try {file.deleteFolder (frontier.pathString + "RCS Backups" + file.getPathChar ())}
<<try {file.deleteFolder (frontier.pathString + "Manila Backups" + file.getPathChar ())}
<<try {file.deleteFolder (frontier.pathString + "backups" + file.getPathChar ())}
msg ("Finished.");
return (true)
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.