From 759769131a4e5bd021ddb5e8fc5995a2af537e05 Mon Sep 17 00:00:00 2001 From: Pavel Sanda Date: Fri, 14 Dec 2018 18:50:36 +0100 Subject: [PATCH] Keep permissions of the saved files intact. (Backporting 04fe818b2239). Apparently this code helps for qt5 only. qt4 accepts setPermission, but does not seem to actually implement it. --- src/Buffer.cpp | 3 +++ src/support/FileName.cpp | 7 +++++++ src/support/FileName.h | 2 ++ 3 files changed, 12 insertions(+) diff --git a/src/Buffer.cpp b/src/Buffer.cpp index 29876787fc..6be7d0eab3 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -1431,6 +1431,9 @@ bool Buffer::save() const FileName savefile(tempfile->name()); LYXERR(Debug::FILES, "Saving to " << savefile.absFileName()); + if (!savefile.clonePermissions(fileName())) + LYXERR0("Failed to clone the permission from " << fileName().absFileName() << " to " << savefile.absFileName()); + if (!writeFile(savefile)) return false; diff --git a/src/support/FileName.cpp b/src/support/FileName.cpp index 890c95af10..9d00de3d44 100644 --- a/src/support/FileName.cpp +++ b/src/support/FileName.cpp @@ -278,6 +278,13 @@ bool FileName::changePermission(unsigned long int mode) const return true; } +bool FileName::clonePermissions(FileName const & source) +{ + QFile fin(toqstr(source.absFileName())); + QFile f(toqstr(absFileName())); + + return f.setPermissions(fin.permissions()); +} string FileName::toFilesystemEncoding() const { diff --git a/src/support/FileName.h b/src/support/FileName.h index 8264d8087b..3bfdf13f26 100644 --- a/src/support/FileName.h +++ b/src/support/FileName.h @@ -150,6 +150,8 @@ public: /// support this. /// \return true on success. bool changePermission(unsigned long int mode) const; + // sets permission based on the file given as an argument + bool clonePermissions(FileName const & source); /// remove pointed directory and all contents. /// \return true on success. -- 2.39.5