Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.radio.backup.writeDirectory
on writeDirectory () { <<Changes <<11/26/02; 10:22:10 PM by JES <<Skip invisible files and files whose names begin with the '.' character. <<11/16/02; 12:04:28 PM by DW <<Instead of writing out a fttb file, write an XML file. <<11/12/02; 6:08:13 PM by DW <<Created. To allow for restoration, we need to have a structure stored in the cloud that tells us what is in the cloud. We store that in directory.fttb, in the top level of the backup directory. local (folder = user.radio.backup.prefs.folder); local (xmltext = "", indentlevel = 0); on add (s) { xmltext = xmltext + (string.filledstring ("\t", indentlevel) + s + "\r\n");}; on encode (s) { if system.environment.isMac { //02/22/2001 JES: convert to Latin text return (xml.entityEncode (latinToMac.macToLatin (s), true))} else { return (xml.entityEncode (s, true))}}; add ("<?xml version=\"1.0\"?>"); add ("<files>"); indentlevel++; fileloop (f in folder, infinity) { if file.filefrompath (f) beginswith "#" { continue}; if file.filefrompath (f) beginswith "." { continue}; if not file.isVisible (f) { continue}; partialpath = string.replaceall (string.delete (f, 1, sizeof (folder)), file.getpathchar (), "/"); add ("<file path=\"" + encode (partialpath) + "\" created=\"" + date.netstandardstring (file.created (f)) + "\" modified=\"" + date.netstandardstring (file.modified (f)) + "\" size=\"" + file.size (f) + "\"/>")}; add ("</files>"); indentlevel--; f = folder + "files.xml"; file.surefilepath (f); file.writetextfile (f, xmltext)}; <<bundle //old code, writes an fttb file <<local (adrdirectory = @system.temp.radioBackupDirectory) <<new (tabletype, adrdirectory) <<new (tabletype, @adrdirectory^.files) <<local (f, partialpath, adritem) <<fileloop (f in folder, infinity) <<partialpath = string.replaceall (string.delete (f, 1, sizeof (folder)), file.getpathchar (), "/") <<adritem = @adrdirectory^.files.[partialpath] <<new (tabletype, adritem) <<adritem^.whenCreated = date.netstandardstring (file.created (f)) <<adritem^.whenModified = date.netstandardstring (file.modified (f)) <<adritem^.size = file.size (f) <<export.sendobject (adrdirectory, folder + "directory.fttb") bundle { //test code writeDirectory ()}
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.