File tree 1 file changed +7
-22
lines changed
1 file changed +7
-22
lines changed Original file line number Diff line number Diff line change @@ -103,30 +103,15 @@ ImageWriter::ImageWriter(QObject *parent)
103
103
#ifdef Q_OS_WIN
104
104
_taskbarButton = nullptr ;
105
105
#endif
106
-
107
- if (!_settings.isWritable () && !_settings.fileName ().isEmpty ())
108
106
{
109
- /* Settings file is not writable, probably run by root previously */
110
- QString settingsFile = _settings.fileName ();
111
- qDebug () << " Settings file" << settingsFile << " not writable. Recreating it" ;
112
- QFile f (_settings.fileName ());
113
- QByteArray oldsettings;
107
+ const auto expectedPermissions = (QFileDevice::WriteOwner | QFileDevice::ReadOwner);
108
+ auto settingsFile = QFile (_settings.fileName ());
114
109
115
- if (f.open (f.ReadOnly ))
116
- {
117
- oldsettings = f.readAll ();
118
- f.close ();
119
- }
120
- f.remove ();
121
- if (f.open (f.WriteOnly ))
122
- {
123
- f.write (oldsettings);
124
- f.close ();
125
- _settings.sync ();
126
- }
127
- else
128
- {
129
- qDebug () << " Error deleting and recreating settings file. Please remove manually." ;
110
+ if (settingsFile.exists () && settingsFile.permissions () != expectedPermissions) {
111
+ if (!settingsFile.setPermissions (expectedPermissions)) {
112
+ qDebug () << " Failed to set expected permissions for settings file. Errant behaviour may follow, including settings failing to persist" ;
113
+ qDebug () << " To prevent future messages of this form, please delete " << _settings.fileName ();
114
+ }
130
115
}
131
116
}
132
117
You can’t perform that action at this time.
0 commit comments