feat(是否存在): 新增分区和配置项存在性判断

This commit is contained in:
2026-08-31 16:42:14 +08:00
parent 333eff36a2
commit 99c0d37995
2 files changed
+56 -36

No files matched your search

+38
View File
@@ -1,6 +1,8 @@
package goini
import (
"errors"
"os"
"reflect"
"regexp"
"strconv"
@@ -143,6 +145,42 @@ func hasSurroundingQuotes(value string) bool {
return first == last && (first == '"' || first == '\'' || first == '`')
}
func (ini *GoINI) save(data string) error {
if ini.filename == "" {
return errFilenameRequired
}
info, err := os.Stat(ini.filename)
if err != nil {
return err
}
return ini.saveFile(ini.filename, data, info.Mode().Perm())
}
func (ini *GoINI) saveFile(filename string, data string, perm os.FileMode) error {
if filename == "" {
return errFilenameRequired
}
perm = perm.Perm()
writePerm := perm | 0o200
if info, err := os.Stat(filename); err == nil {
if info.Mode().IsRegular() {
if err := os.Chmod(filename, writePerm); err != nil {
return err
}
}
} else if !errors.Is(err, os.ErrNotExist) {
return err
}
if err := os.WriteFile(filename, []byte(data), writePerm); err != nil {
return err
}
if err := os.Chmod(filename, perm); err != nil {
return err
}
ini.filename = filename
return nil
}
func (ini *GoINI) rebuildIndexes() {
ini.sectionKeys = make(map[string][]string)
ini.sectionOrder = nil