From 62a01366c9f00fc54639800a62f6a94042384762 Mon Sep 17 00:00:00 2001
From: pepak <pepak@pepak.net>
Date: Thu, 20 Jun 2019 06:01:05 +0200
Subject: [PATCH] Safe saving of editor files (build 5411) now optional

---
 far/config.cpp   | 1 +
 far/config.hpp   | 1 +
 far/dizlist.cpp  | 2 +-
 far/fileedit.cpp | 2 +-
 far/usermenu.cpp | 2 +-
 5 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/far/config.cpp b/far/config.cpp
index 15e41c313..27d6a4ad4 100644
--- a/far/config.cpp
+++ b/far/config.cpp
@@ -1776,6 +1776,7 @@ void Options::InitConfigsData()
 		{FSSF_PRIVATE,           NKeyEditor,                 L"FileSizeLimit"sv,                 EdOpt.FileSizeLimit, 0},
 		{FSSF_PRIVATE,           NKeyEditor,                 L"KeepEditorEOL"sv,                 EdOpt.KeepEOL, true},
 		{FSSF_PRIVATE,           NKeyEditor,                 L"NewFileUnixEOL"sv,                EdOpt.NewFileUnixEOL, false},
+		{FSSF_PRIVATE,           NKeyEditor,                 L"SafeSaving"sv,                    EdOpt.SafeSaving, true},
 		{FSSF_PRIVATE,           NKeyEditor,                 L"CreateBackups"sv,                 EdOpt.CreateBackups, false},
 		{FSSF_PRIVATE,           NKeyEditor,                 L"PersistentBlocks"sv,              EdOpt.PersistentBlocks, false},
 		{FSSF_PRIVATE,           NKeyEditor,                 L"ReadOnlyLock"sv,                  EdOpt.ReadOnlyLock, 0},
diff --git a/far/config.hpp b/far/config.hpp
index efff690e0..78be39c59 100644
--- a/far/config.hpp
+++ b/far/config.hpp
@@ -522,6 +522,7 @@ public:
 		BoolOption KeepEOL;
 		BoolOption AddUnicodeBOM;
 		BoolOption NewFileUnixEOL;
+		BoolOption SafeSaving;
 		BoolOption CreateBackups;
 	};
 
diff --git a/far/dizlist.cpp b/far/dizlist.cpp
index d0b4a2b4d..79a3fa4df 100644
--- a/far/dizlist.cpp
+++ b/far/dizlist.cpp
@@ -342,7 +342,7 @@ bool DizList::Flush(const string& Path,const string* DizName)
 		const auto IsFileExists = FileAttr != INVALID_FILE_ATTRIBUTES;
 		const auto IsHardLink = IsFileExists && GetNumberOfLinks(m_DizFileName) > 1;
 		const auto IsSymLink = IsFileExists && (FileAttr & FILE_ATTRIBUTE_REPARSE_POINT);
-		const auto SaveSafely = IsFileExists && !IsHardLink && !IsSymLink;
+		const auto SaveSafely = Global->Opt->EdOpt.SafeSaving && IsFileExists && !IsHardLink && !IsSymLink;
 		const auto OutFileName = SaveSafely? MakeTempInSameDir(m_DizFileName) : m_DizFileName;
 
 		{
diff --git a/far/fileedit.cpp b/far/fileedit.cpp
index c4d466243..09201ecf4 100644
--- a/far/fileedit.cpp
+++ b/far/fileedit.cpp
@@ -1924,7 +1924,7 @@ int FileEditor::SaveFile(const string& Name,int Ask, bool bSaveAs, error_state_e
 		const auto IsFileExists = m_FileAttributes != INVALID_FILE_ATTRIBUTES;
 		const auto IsHardLink = IsFileExists && GetNumberOfLinks(Name) > 1;
 		const auto IsSymLink = IsFileExists && (m_FileAttributes & FILE_ATTRIBUTE_REPARSE_POINT);
-		const auto SaveSafely = IsFileExists && !IsHardLink && !IsSymLink && !IsStream;
+		const auto SaveSafely = Global->Opt->EdOpt.SafeSaving && IsFileExists && !IsHardLink && !IsSymLink && !IsStream;
 		const auto OutFileName = SaveSafely? MakeTempInSameDir(Name) : Name;
 
 		{
diff --git a/far/usermenu.cpp b/far/usermenu.cpp
index 2e8f28799..752b8b7c2 100644
--- a/far/usermenu.cpp
+++ b/far/usermenu.cpp
@@ -345,7 +345,7 @@ void UserMenu::SaveMenu(const string& MenuFileName) const
 		const auto IsFileExists = FileAttr != INVALID_FILE_ATTRIBUTES;
 		const auto IsHardLink = IsFileExists && GetNumberOfLinks(MenuFileName) > 1;
 		const auto IsSymLink = IsFileExists && (FileAttr & FILE_ATTRIBUTE_REPARSE_POINT);
-		const auto SaveSafely = IsFileExists && !IsHardLink && !IsSymLink;
+		const auto SaveSafely = Global->Opt->EdOpt.SafeSaving && IsFileExists && !IsHardLink && !IsSymLink;
 		const auto OutFileName = SaveSafely? MakeTempInSameDir(MenuFileName) : MenuFileName;
 
 		{
-- 
2.21.0.windows.1

