diff options
author | elfmz <fenix1905@tut.by> | 2022-04-10 11:50:48 +0300 |
---|---|---|
committer | elfmz <fenix1905@tut.by> | 2022-04-10 11:52:53 +0300 |
commit | 3eae0641730ab012bc6d75d90937e6bba558a3fa (patch) | |
tree | 3416cb848d31a0e4c5fd24b20e42460e038fcab4 /far2l/src/fileedit.cpp | |
parent | fb7dbafab9013ea4cc14aea9f2313e16437e42ad (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.cpp | 12 |
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)) { |