diff options
author | srs5694 <srs5694@users.sourceforge.net> | 2010-02-19 17:19:55 -0500 |
---|---|---|
committer | srs5694 <srs5694@users.sourceforge.net> | 2010-02-19 17:19:55 -0500 |
commit | 08bb0da07953af605b4918e268272de15ac151aa (patch) | |
tree | 401ff14b62ddfda4c4c64b3dfcee817ad8133971 /diskio-windows.cc | |
parent | fad064250bf6c49eb4966bf0f617591a0821808e (diff) | |
download | sgdisk-08bb0da07953af605b4918e268272de15ac151aa.tar.gz |
Version 0.6.4
Diffstat (limited to 'diskio-windows.cc')
-rw-r--r-- | diskio-windows.cc | 10 |
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; |