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.