[Box Backup-dev] COMMIT r825 - box/chris/merge/bin/bbstored

boxbackup-dev at fluffy.co.uk boxbackup-dev at fluffy.co.uk
Wed Aug 30 19:24:04 BST 2006


Author: chris
Date: 2006-08-30 19:24:04 +0100 (Wed, 30 Aug 2006)
New Revision: 825

Modified:
   box/chris/merge/bin/bbstored/BackupContext.cpp
Log:
* bin/bbstored/BackupContext.cpp
- Removed locking on Win32, there is no housekeeping process to lock 
  against
- Open files with O_BINARY on Win32
- Fixed a cosmetic spelling mistake in a comment
- Unlink file later on Windows, since we can't do it while it's open


Modified: box/chris/merge/bin/bbstored/BackupContext.cpp
===================================================================
--- box/chris/merge/bin/bbstored/BackupContext.cpp	2006-08-30 18:20:08 UTC (rev 824)
+++ box/chris/merge/bin/bbstored/BackupContext.cpp	2006-08-30 18:24:04 UTC (rev 825)
@@ -125,6 +125,7 @@
 // --------------------------------------------------------------------------
 bool BackupContext::AttemptToGetWriteLock()
 {
+#ifndef WIN32
 	// Make the filename of the write lock file
 	std::string writeLockFile;
 	StoreStructure::MakeWriteLockFilename(mStoreRoot, mStoreDiscSet, writeLockFile);
@@ -150,7 +151,7 @@
 			
 		} while(!gotLock && tries > 0);
 	}
-	
+
 	if(gotLock)
 	{
 		// Got the lock, mark as not read only
@@ -158,6 +159,10 @@
 	}
 	
 	return gotLock;
+#else // WIN32
+	// no housekeeping process, we do have the lock
+	return true;
+#endif // !WIN32
 }
 
 
@@ -453,13 +458,21 @@
 			try
 			{
 				// Open it twice
+#ifdef WIN32
+				FileStream diff(tempFn.c_str(), 
+					O_RDWR | O_CREAT | O_BINARY);
+				FileStream diff2(tempFn.c_str(), 
+					O_RDWR | O_BINARY);
+#else
 				FileStream diff(tempFn.c_str(), O_RDWR | O_CREAT | O_EXCL);
 				FileStream diff2(tempFn.c_str(), O_RDONLY);
-				// Unlink it immediately, so it definately goes away
+
+				// Unlink it immediately, so it definitely goes away
 				if(::unlink(tempFn.c_str()) != 0)
 				{
 					THROW_EXCEPTION(CommonException, OSFileError);
 				}
+#endif
 				
 				// Stream the incoming diff to this temporary file
 				if(!rFile.CopyStreamTo(diff, BACKUP_STORE_TIMEOUT))
@@ -508,6 +521,14 @@
 				::unlink(tempFn.c_str());
 				throw;
 			}
+
+#ifdef WIN32
+			// we can't delete the file while it's open, above
+			if(::unlink(tempFn.c_str()) != 0)
+			{
+				THROW_EXCEPTION(CommonException, OSFileError);
+			}
+#endif
 		}
 		
 		// Get the blocks used




More information about the Boxbackup-dev mailing list