Skip to content

Commit 96d3a36

Browse files
author
Juan Ariza Toledano
authored
Avoid using 'safefile' (#4)
* Avoid using 'safefile' Signed-off-by: juan131 <[email protected]>
1 parent ddb7818 commit 96d3a36

File tree

1 file changed

+9
-31
lines changed

1 file changed

+9
-31
lines changed

ini.go

Lines changed: 9 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ package main
33
import (
44
"fmt"
55
"os"
6-
"syscall"
76

8-
"github.com/dchest/safefile"
97
"github.com/go-ini/ini"
108
)
119

@@ -38,44 +36,25 @@ func iniLoadOrEmpty(filename string) (*ini.File, error) {
3836
return nil, err
3937
}
4038

41-
// iniSave safely writes the ini file to the named file.
39+
// iniSave writes the ini file to the named file.
4240
func iniSave(filename string, iniFile *ini.File) error {
43-
mode := os.FileMode(0644)
44-
uid := -1
45-
gid := -1
46-
47-
finfo, err := os.Stat(filename)
48-
if err != nil {
49-
if !os.IsNotExist(err) {
50-
return err
51-
}
52-
} else {
53-
mode = finfo.Mode()
54-
uid = int(finfo.Sys().(*syscall.Stat_t).Uid)
55-
gid = int(finfo.Sys().(*syscall.Stat_t).Gid)
56-
}
57-
58-
f, err := safefile.Create(filename, mode)
41+
// The third argument, perm, is ignored when the file doesn't exist
42+
// So we can safely set it to '0644', it won't modify the existing permissions
43+
// if the file exists.
44+
f, err := os.OpenFile(filename, os.O_SYNC|os.O_RDWR|os.O_CREATE, os.FileMode(0644))
5945
if err != nil {
6046
return err
6147
}
62-
// Recover original ownership/permissions
63-
if err := os.Chmod(f.File.Name(), mode); err != nil {
48+
// Clear file content
49+
err = f.Truncate(0)
50+
if err != nil {
6451
return err
6552
}
66-
if os.Geteuid() != uid || os.Getegid() != gid {
67-
if err := os.Chown(f.File.Name(), uid, gid); err != nil {
68-
return err
69-
}
70-
}
71-
72-
defer f.Close()
73-
7453
_, err = iniFile.WriteTo(f)
7554
if err != nil {
7655
return err
7756
}
78-
return f.Commit()
57+
return f.Close()
7958
}
8059

8160
func iniFileGet(file string, s string, key string) (string, error) {
@@ -108,7 +87,6 @@ func iniFileSet(file string, s string, key string, value interface{}) error {
10887
default:
10988
return fmt.Errorf("invalid key type %T", v)
11089
}
111-
11290
return iniSave(file, iniFile)
11391
}
11492

0 commit comments

Comments
 (0)