Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.radio.backup.verifyAllPrefs
on verifyAllPrefs (adrErrorCallback=nil) {
<<Changes
<<1/15/03; 12:32:12 PM by JES
<<Verify files backed up as XML tables instead of fat-page files.
<<11/29/02; 4:37:49 PM by JES
<<Created. Verify all prefs backup files.
local (folder = user.radio.backup.prefs.folder + "prefs" + file.getPathChar ());
local (errormessage, flerror = false);
on error (s) { //call the error callback
flerror = true;
if adrErrorCallback != nil {
return (adrErrorCallback^ ("Verification of backup failed because " + s))}};
on verifyOneFile (name) { //return true for valid file, if not then set errormessage and return false
local (fname = name + ".xml");
<<local (fname = name + ".fttb")
local (f = folder + fname);
if file.exists (f) {
<<bundle //original code for verifying a fat-page format file
<<local (filetext = file.readWholeFile (f))
<<local (localtable, atts)
<<if fatPages.getPageAtts (@filetext, @atts)
<<if not defined (atts.pageData) //no embedded data
<<errormessage = "the file \"" + fname + "\" could not be imported."
<<return (false)
<<try //to extract the data and verify that it's a table
<<local (localtable)
<<fatPages.unpackOdbObject (@atts, @localtable, flRunnable:false, flEdit:false)
<<if typeOf (localtable) != tableType //there's data but it's not a table
<<errormessage = "the data contained in the file \"" + fname + "\" isn't the correct type."
<<return (false)
<<else //error extracting data
<<errormessage = "the file \"" + fname + "\" could not be imported."
<<return (false)
<<else //no embedded data
<<errormessage = "the file \"" + fname + "\" could not be imported."
<<return (false)
local (filetext = file.readWholeFile (f));
local (localtable, atts);
try { //to compile the XML and verify that it's a table
local (localtable);
table.xmlToTable (filetext, @localtable);
if sizeOf (localtable) == 0 {
errormessage = "the file \"" + fname + "\" contains no table data.";
return (false)};
if not (defined (localtable.data)) or (not defined (localtable.directory)) {
errormessage = "the file \"" + fname + "\" does not contain data of the correct type."}}
else { //error extracting data
errormessage = "the file \"" + fname + "\" could not be imported.";
return (false)}}
else { //file does not exist
errormessage = "the file \"" + fname + "\" does not exist.";
return (false)};
return (true)};
if not verifyOneFile ("weblogPrefs") {
if not error (errormessage) {return (false)}};
if not verifyOneFile ("weblogCategories") {
if not error (errormessage) {return (false)}};
if not verifyOneFile ("weblogShortcuts") {
if not error (errormessage) {return (false)}};
if not verifyOneFile ("weblogStats") {
if not error (errormessage) {return (false)}};
if not verifyOneFile ("aggregatorPrefs") {
if not error (errormessage) {return (false)}};
if not verifyOneFile ("aggregatorSettings") {
if not error (errormessage) {return (false)}};
if not verifyOneFile ("aggregatorStats") {
if not error (errormessage) {return (false)}};
if not verifyOneFile ("aggregatorServices") {
if not error (errormessage) {return (false)}};
if not verifyOneFile ("userPrefs") {
if not error (errormessage) {return (false)}};
if not verifyOneFile ("userIm") {
if not error (errormessage) {return (false)}};
if not verifyOneFile ("userBookmarksMenu") {
if not error (errormessage) {return (false)}};
if not verifyOneFile ("userRadioOutliner") {
if not error (errormessage) {return (false)}};
if not verifyOneFile ("userRadioStats") {
if not error (errormessage) {return (false)}};
if not verifyOneFile ("userRadioPrefs") {
if not error (errormessage) {return (false)}};
if not verifyOneFile ("weblogsComFavorites") {
if not error (errormessage) {return (false)}};
if not verifyOneFile ("weblogsComPrefs") {
if not error (errormessage) {return (false)}};
return (not flerror)};
bundle { //test code
on errorCallback (s) {
dialog.alert (s);
return (true)};
verifyAllPrefs (@errorcallback)}
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.