summaryrefslogtreecommitdiff
path: root/diskio-windows.cc
diff options
context:
space:
mode:
authorsrs5694 <srs5694@users.sourceforge.net>2010-02-19 17:19:55 -0500
committersrs5694 <srs5694@users.sourceforge.net>2010-02-19 17:19:55 -0500
commit08bb0da07953af605b4918e268272de15ac151aa (patch)
tree401ff14b62ddfda4c4c64b3dfcee817ad8133971 /diskio-windows.cc
parentfad064250bf6c49eb4966bf0f617591a0821808e (diff)
downloadsgdisk-08bb0da07953af605b4918e268272de15ac151aa.tar.gz
Version 0.6.4
Diffstat (limited to 'diskio-windows.cc')
-rw-r--r--diskio-windows.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/diskio-windows.cc b/diskio-windows.cc
index d5cd84b..aaf5c64 100644
--- a/diskio-windows.cc
+++ b/diskio-windows.cc
@@ -19,7 +19,7 @@
#include <winioctl.h>
#define fstat64 fstat
#define stat64 stat
-//#define S_IRGRP 0
+#define S_IRGRP 0
#define S_IROTH 0
#include <stdio.h>
#include <string>
@@ -93,6 +93,14 @@ int DiskIO::OpenForWrite(void) {
fd = CreateFile(realFilename.c_str(), GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
+ // Preceding call can fail when creating backup files; if so, try
+ // again with different option...
+ if (fd == INVALID_HANDLE_VALUE) {
+ CloseHandle(fd);
+ fd = CreateFile(realFilename.c_str(), GENERIC_READ | GENERIC_WRITE,
+ FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS,
+ FILE_ATTRIBUTE_NORMAL, NULL);
+ } // if
if (fd == INVALID_HANDLE_VALUE) {
CloseHandle(fd);
isOpen = 0;