Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.utilities.backup
<<Changes
<<11/21/01; 6:35:23 PM by JES
<<Changed smurf references to radio71 references.
semaphore.lock ("radio.upstream", 7200); //lock for two minutes
window.about ();
local (oldRunThreads = user.scheduler.prefs.runThreads);
user.scheduler.prefs.runThreads = false;
scheduler.monitorThreads ();
radio.data.flinstall = true;
table.emptytable (@radio.data.website.["#glossary"]);
radio.utilities.systemFolderTextFiles.save ();
radio.utilities.homeFolderTextFiles.save ();
local (pc = file.getPathChar ());
local (folder = user.radio.prefs.wwwfolder + "system" + pc + "upstream" + pc);
if defined (user.prefs.radio71BackupFolder) {
folder = user.prefs.radio71BackupFolder};
bundle { //save smurfTurfInstaller
local (f = folder + "smurfTurfInstaller.ftsc");
workspace.radio71Installer = radio.utilities.radio71Installer;
file.surefilepath (f);
export.sendobject (@workspace.radio71Installer, f)};
<<bundle //Dave's backup code
<<local (downloadsfolder = "I:\\Guest Databases\\www\\downloads\\") //on Pebbles, http://64.220.161.55/
<<bundle //copy data files
<<local (f)
<<fileloop (f in "c:\\program files\\radio userland\\guest databases\\ops\\datafiles\\")
<<msg (f)
<<file.copy (f, "c:\\program files\\radio userland\\www\\downloads\\" + file.filefrompath (f))
local (backupsfolder = Frontier.pathString + "backups" + pc + "Radio UserLand 7.1" + pc, archives = backupsfolder + "archives" + pc, f);
<<bundle //move all non-folders into the archives folder
<<file.sureFilePath (archives)
<<file.sureFolder (archives)
<<fileloop (f in folder)
<<if not file.isfolder (f)
<<if string.lower (f) endsWith ".fttb" or string.lower (f) endsWith ".ftsc"
<<msg (f)
<<file.copy (f, archives + file.filefrompath (f))
<<file.delete (f)
on dobackup (adr) {
local (extension);
bundle { //get file extension
case typeOf (adr^) {
tableType {
extension = ".fttb"};
scriptType {
extension = ".ftsc"}}};
<<local (fname = (string (adr) - "system.verbs.") + string.padwithzeros (scratchpad.radiobackupserialnum, 3) + extension)
local (fname);
bundle { //build fname
fname = string.popFileFromAddress (adr);
on popFirstField (s) {
return (s - (string.nthField (fname, '.', 1) + "."))};
while string.countFields (fname, '.') > 2 {
fname = popFirstField (fname)};
if sizeOf (fname) > 26 {
fname = popFirstField (fname)};
if sizeOf (fname) > 26 {
fname = string.mid (fname, 1, 26)};
fname = fname + extension};
local (f = folder + fname);
msg (f);
file.surefilepath (f);
if file.exists (f) {
file.delete (f)};
export.sendobject (adr, f)};
<<bundle //export to downloadsfolder
<<f = downloadsfolder + (string (adr) - "system.verbs.") + ".fttb"
<<msg (f)
<<file.surefilepath (f)
<<export.sendobject (adr, f)
bundle { //do the backups
dobackup (@agents.statusMessage);
try {
dobackup (@playlist.init)};
dobackup (@weblogsCom);
dobackup (@xmlStorageSystem);
dobackup (@bookmarksMenu);
dobackup (@chatClient);
dobackup (@radio);
dobackup (@file.getSpecialFolderPath);
dobackup (@Frontier.clickers.typeOPML);
dobackup (@Frontier.clickers.typeTEXT);
dobackup (@html.prefs);
dobackup (@html.editor);
dobackup (@manila);
dobackup (@op.rssToOutline);
dobackup (@pike.init);
dobackup (@pike.runFileMenuScript);
dobackup (@pike.runEditMenuScript);
dobackup (@scheduler.monitorThreads);
dobackup (@startup.startupScript);
dobackup (@tcp.httpClient);
dobackup (@xml.aggregator);
dobackup (@xml.rpc);
dobackup (@Frontier.tools)};
user.scheduler.prefs.runThreads = oldRunThreads;
scheduler.monitorThreads ();
if not defined (scratchpad.radiobackupserialnum) {
scratchpad.radiobackupserialnum = 0};
scratchpad.radiobackupserialnum++;
scratchpad.radiobackupdate = clock.now ();
msg ("");
semaphore.unlock ("radio.upstream")
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.