Monday, November 08, 2010 at 12:02 AM.

system.verbs.builtins.backups.backupRoot

<<the backup goes into a "backups" folder in the Frontier folder
	<<first we create the backups folder if it doesn't already exist.
	<<then we copy the file
	<<then check to see that it exists and is the right size (pays to be paranoid!)
	<<then increment the backup serial number and save the root file (again paranoia)
	<<and finally report the success of the backup operation

backups.init ();
fileMenu.save (); <<make sure all changes are on disk
try {
	file.sureFolder (user.backups.folder)}
else {
	<<Frontier must have been moved or its folder re-named.
		<<Friday, January 02, 1998 at 10:21:09 PM by PBS
	user.backups.folder = Frontier.pathstring + "backups" + file.getPathChar ()};

local (source = Frontier.getFilePath (), dest);
case sys.os () {
	"MacOS" {
		dest = user.backups.folder + "Frontier.root." + user.backups.nextBackup}}
else {
	dest = user.backups.folder + "Frontier." + user.backups.nextBackup + ".root"};
if file.exists (dest) { //11/28/97 DW -- confirm file overwrite
	if not dialog.confirm ("The file \"" + dest + "\" exists. Replace it?") {
		return ("")};
	file.delete (dest)};
msg ("Copying...");
file.copy (source, dest);
msg ("");

bundle { <<check to see if the backup file exists and is the right size
	local (f = file.fileFromPath (dest));
	if not file.exists (dest) { <<user wants to know if ANYTHING went wrong
		scriptError (f + " wasn't created.")};
	local (diff = file.size (dest) - file.size (source));
	if diff != 0 { <<the user wants to know...
		scriptError (f + " isn't the correct size, difference = " + diff)}};

user.backups.nextBackup++; <<everything went as planned, the backup is cool
fileMenu.save (); <<be sure backups.nextbackup is correct on disk

bundle { //11/28/97 DW -- call the custom backup script if it's there
	try {
		user.backups.lastFname = file.fileFromPath (dest);
		user.backups.script ()}};

return (dest)



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.