View Issue Details

IDProjectCategoryView StatusLast Update
0003626Far ManagerCopy/Movepublic2020-03-19 13:48
Reporterpepak Assigned To 
Status newResolutionopen 
Product Version3.0 
Summary0003626: Do not show error messages for Copy Access Rights errors
DescriptionAttached you will find two patches which handle the %subj%:

1) In the MCannotGetSecurity, MCannotSetSecurity dialogs, add a new button to never display another such message in this instance of FAR. Intended to be used when FAR is running as a non-privileged user with System.CopySecurityOptions = 27 - then some files may not allow setting access rights, but there's no point in displaying a message because the user is not privileged enough to do anything about it anyway.

2) Extend System.CopySecurityOptions with flag 0x80000000 which will always disable the error dialogs from #1, even without pressing that new button.

Patches created using git format-patch for build 3.0.5233.
TagsNo tags attached.



2018-06-29 18:58

reporter (2,790 bytes)


2018-08-09 16:03

reporter   bugnote:0016197

Hmm. I can't help but feel disappointed. What the hell, lesson learned - next time don't bother sending improvements to FAR, because no one cares.


2018-08-09 16:50

administrator   bugnote:0016198

Please calm down and consider creating pull requests on github if you want more attention to your proposals.

It's more visible to us and to others and literally infinitely times more convenient.


2019-06-20 05:06

reporter   bugnote:0016526

An updated patch to solve this ticket. Copy it to FAR source directory and run 'git apply patch.diff'. IMO, much more convenient than Github pull request.
patch.diff (2,869 bytes)   
From 308b48b6a96c226d09d65e7a3b554396d6722449 Mon Sep 17 00:00:00 2001
From: pepak <>
Date: Tue, 12 Mar 2019 17:32:06 +0100
Subject: [PATCH] Option to prevent display of file rights errors

 extra/Documentation/eng/TechInfo.txt | 2 ++
 far/copy.cpp                         | 8 ++++++++
 2 files changed, 10 insertions(+)

diff --git a/extra/Documentation/eng/TechInfo.txt b/extra/Documentation/eng/TechInfo.txt
index 14745b7f9..ed4e96ba1 100644
--- a/extra/Documentation/eng/TechInfo.txt
+++ b/extra/Documentation/eng/TechInfo.txt
@@ -552,6 +552,8 @@ the main help file, that is actual for the current Far Manager version.
                bit 4 is set to 0) or "Move" (both bits 3 and 4 are  set  to
                1) by default;
      5 - Copy dialog: remember option state for the current Far session.
+    31 - Do not display  any  error  messages  related  to  setting  access
+               rights.
    The effect of bits 0 and 1 depends on the state of bit 2:
    1. If bit 2 is set to 1 then the "Access  rights"  option  will  be  set
       according to bits 0 and 1 only in the first time the Move  dialog  is
diff --git a/far/copy.cpp b/far/copy.cpp
index b5fa8a44a..0025ad244 100644
--- a/far/copy.cpp
+++ b/far/copy.cpp
@@ -138,10 +138,12 @@ enum COPYSECURITYOPTIONS
 	CSO_COPY_SETCOPYSECURITY       = 3_bit,          // Copy: по умолчанию выставлять опцию "Copy access rights"?
 	CSO_COPY_SETINHERITSECURITY    = 3_bit | 4_bit, // Copy: по умолчанию выставлять опцию "Inherit access rights"?
 	CSO_COPY_SESSIONSECURITY       = 5_bit,          // Copy: сохранять состояние "access rights" внутри сессии?
+	CSO_NOERRORMESSAGE             = 31_bit,         // Do not display any error messages related to access rights settings
 static int CopySecurityCopy=-1;
 static int CopySecurityMove=-1;
+static bool DefaultSkipSecurityErrors = false;
 static bool ZoomedState, IconicState;
@@ -516,6 +518,7 @@ ShellCopy::ShellCopy(panel_ptr SrcPanel,     // исходная панель (
 	string SingleSelName;
 	DWORD SingleSelAttributes = 0;
 	unsigned long long SingleSelectedFileSize = 0;
+	SkipSecurityErrors = DefaultSkipSecurityErrors;
 	if (SelCount==1)
@@ -995,6 +998,11 @@ ShellCopy::ShellCopy(panel_ptr SrcPanel,     // исходная панель (
+	if (Global->Opt->CMOpt.CopySecurityOptions&CSO_NOERRORMESSAGE)
+	{
+		SkipSecurityErrors = true;
+		DefaultSkipSecurityErrors = true;
+	}
 	// в любом случае сохраняем сессионное запоминание (не для Link, т.к. для Link временное состояние - "ВСЕГДА!")
 	if (!Link)

patch.diff (2,869 bytes)   


2019-08-06 15:10

reporter   bugnote:0016552



2020-03-19 13:48

administrator   bugnote:0016752

run 'git apply patch.diff'. IMO, much more convenient than Github pull request

To accept your changes we need to:
1. See what has actually been changed.
2. Review the changes.
3. Provide a feedback, optionally request additional changes in particular places or in general.
4. goto #1.
N. Make sure that the changes don't break the build (multiple compilers x multiple configurations). Otherwise goto #3.

I'm not saying that it can't be done using git.exe, diff files, comments like "there's an issue on line 1337 of version 42 of your patch attached 69 comments above in this thread a fortnight ago" or even sticks and stones. Of course it can. However, I wouldn't be surprised if no one is willing to do that.

Issue History

Date Modified Username Field Change
2018-06-29 18:58 pepak New Issue
2018-06-29 18:58 pepak File Added:
2018-08-09 16:03 pepak Note Added: 0016197
2018-08-09 16:50 DrKnS Note Added: 0016198
2019-06-20 05:06 pepak File Added: patch.diff
2019-06-20 05:06 pepak Note Added: 0016526
2019-08-06 15:10 cmdorexe Note Added: 0016552
2020-03-19 13:48 DrKnS Note Added: 0016752