[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