|
@@ -28,11 +28,7 @@ func settingsFileName() (string, error) {
|
28
|
28
|
if err != nil {
|
29
|
29
|
return "", err
|
30
|
30
|
}
|
31
|
|
- dir = filepath.Join(dir, "pprof")
|
32
|
|
- if err := os.MkdirAll(dir, 0755); err != nil {
|
33
|
|
- return "", err
|
34
|
|
- }
|
35
|
|
- return filepath.Join(dir, "settings.json"), nil
|
|
31
|
+ return filepath.Join(dir, "pprof", "settings.json"), nil
|
36
|
32
|
}
|
37
|
33
|
|
38
|
34
|
// readSettings reads settings from fname.
|
|
@@ -60,6 +56,14 @@ func writeSettings(fname string, settings *settings) error {
|
60
|
56
|
if err != nil {
|
61
|
57
|
return fmt.Errorf("could not encode settings: %w", err)
|
62
|
58
|
}
|
|
59
|
+
|
|
60
|
+ // create the settings directory if it does not exist
|
|
61
|
+ // XDG specifies permissions 0700 when creating settings dirs:
|
|
62
|
+ // https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
|
63
|
+ if err := os.MkdirAll(filepath.Dir(fname), 0700); err != nil {
|
|
64
|
+ return fmt.Errorf("failed to create settings directory: %w", err)
|
|
65
|
+ }
|
|
66
|
+
|
63
|
67
|
if err := ioutil.WriteFile(fname, data, 0644); err != nil {
|
64
|
68
|
return fmt.Errorf("failed to write settings: %w", err)
|
65
|
69
|
}
|