Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/elfmz/far2l.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelfmz <fenix1905@tut.by>2022-04-10 11:50:48 +0300
committerelfmz <fenix1905@tut.by>2022-04-10 11:52:53 +0300
commit3eae0641730ab012bc6d75d90937e6bba558a3fa (patch)
tree3416cb848d31a0e4c5fd24b20e42460e038fcab4 /far2l/src/fileedit.cpp
parentfb7dbafab9013ea4cc14aea9f2313e16437e42ad (diff)
editor: save fallback to FILE_CREATE if OPEN_ALWAYS caused ERROR_NOT_SUPPORTED (touch #1309)
Diffstat (limited to 'far2l/src/fileedit.cpp')
-rw-r--r--far2l/src/fileedit.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/far2l/src/fileedit.cpp b/far2l/src/fileedit.cpp
index 72021e5f..028b3cf1 100644
--- a/far2l/src/fileedit.cpp
+++ b/far2l/src/fileedit.cpp
@@ -1999,8 +1999,18 @@ int FileEditor::SaveFile(const wchar_t *Name,int Ask, bool bSaveAs, int TextForm
try
{
File EditFile;
- if (!EditFile.Open(Name, GENERIC_WRITE, FILE_SHARE_READ, nullptr, OPEN_ALWAYS, FILE_ATTRIBUTE_ARCHIVE|FILE_FLAG_SEQUENTIAL_SCAN))
+ bool EditFileOpened = EditFile.Open(Name, GENERIC_WRITE, FILE_SHARE_READ,
+ nullptr, OPEN_ALWAYS, FILE_ATTRIBUTE_ARCHIVE|FILE_FLAG_SEQUENTIAL_SCAN);
+ if (!EditFileOpened && WINPORT(GetLastError)() == ERROR_NOT_SUPPORTED) {
+ EditFileOpened = EditFile.Open(Name, GENERIC_WRITE, FILE_SHARE_READ,
+ nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_ARCHIVE|FILE_FLAG_SEQUENTIAL_SCAN);
+ if (EditFileOpened) {
+ fprintf(stderr, "FileEditor::SaveFile: CREATE_ALWAYS for '%ls'\n", Name);
+ }
+ }
+ if (!EditFileOpened) {
throw WINPORT(GetLastError)();
+ }
if (!Flags.Check(FFILEEDIT_NEW))
{