summaryrefslogtreecommitdiff
path: root/src/Fl_Preferences.cxx
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2010-12-02 22:07:29 +0000
committerManolo Gouy <Manolo>2010-12-02 22:07:29 +0000
commitc5ef8d13d1cb13313a161b0010bae864563d78b0 (patch)
tree2c95345d7ffb0314b0a6a4c5003dfbcd30392454 /src/Fl_Preferences.cxx
parenta343f7555b23074237b08518c9dab7b51fe33777 (diff)
Fix for STR #2465: make sure that system preference files are user readable (unix).
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7941 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Preferences.cxx')
-rw-r--r--src/Fl_Preferences.cxx15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/Fl_Preferences.cxx b/src/Fl_Preferences.cxx
index d17f4cb08..9832a2ed3 100644
--- a/src/Fl_Preferences.cxx
+++ b/src/Fl_Preferences.cxx
@@ -1321,6 +1321,21 @@ int Fl_Preferences::RootNode::write()
fprintf( f, "; application: %s\n", application_ );
prefs_->node->write( f );
fclose( f );
+#if !(defined(__APPLE__) || defined(WIN32))
+ // unix: make sure that system prefs are user-readable
+ if (strncmp(filename_, "/etc/fltk/", 10) == 0) {
+ char *p;
+ p = filename_ + 9;
+ do { // for each directory to the pref file
+ *p = 0;
+ fl_chmod(filename_, 0755); // rwxr-xr-x
+ *p = '/';
+ p = strchr(p+1, '/');
+ }
+ while (p);
+ fl_chmod(filename_, 0644); // rw-r--r--
+ }
+#endif
return 0;
}