diff --git a/internal/action/bindings.go b/internal/action/bindings.go index b5667b77..73f17886 100644 --- a/internal/action/bindings.go +++ b/internal/action/bindings.go @@ -5,6 +5,7 @@ import ( "errors" "io/ioutil" "os" + "path/filepath" "strings" "unicode" @@ -27,7 +28,7 @@ func InitBindings() { var parsed map[string]string defaults := DefaultBindings() - filename := config.ConfigDir + "/bindings.json" + filename := filepath.Join(config.ConfigDir, "bindings.json") createBindingsIfNotExist(filename) if _, e := os.Stat(filename); e == nil { @@ -167,7 +168,7 @@ func TryBindKey(k, v string, overwrite bool) (bool, error) { var e error var parsed map[string]string - filename := config.ConfigDir + "/bindings.json" + filename := filepath.Join(config.ConfigDir, "bindings.json") createBindingsIfNotExist(filename) if _, e = os.Stat(filename); e == nil { input, err := ioutil.ReadFile(filename) @@ -217,7 +218,7 @@ func UnbindKey(k string) error { var e error var parsed map[string]string - filename := config.ConfigDir + "/bindings.json" + filename := filepath.Join(config.ConfigDir, "bindings.json") createBindingsIfNotExist(filename) if _, e = os.Stat(filename); e == nil { input, err := ioutil.ReadFile(filename) diff --git a/internal/action/command.go b/internal/action/command.go index 3a445caa..c92b782c 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -475,7 +475,7 @@ func SetGlobalOptionNative(option string, nativeValue interface{}) error { b.SetOptionNative(option, nativeValue) } - return config.WriteSettings(config.ConfigDir + "/settings.json") + return config.WriteSettings(filepath.Join(config.ConfigDir, "settings.json")) } func SetGlobalOption(option, value string) error { diff --git a/internal/buffer/backup.go b/internal/buffer/backup.go index 192ab638..56308843 100644 --- a/internal/buffer/backup.go +++ b/internal/buffer/backup.go @@ -4,6 +4,7 @@ import ( "fmt" "io" "os" + "path/filepath" "time" "github.com/zyedidia/micro/internal/config" @@ -42,12 +43,12 @@ func (b *Buffer) Backup(checkTime bool) error { b.lastbackup = time.Now() - backupdir := config.ConfigDir + "/backups/" + backupdir := filepath.Join(config.ConfigDir, "backups") if _, err := os.Stat(backupdir); os.IsNotExist(err) { os.Mkdir(backupdir, os.ModePerm) } - name := backupdir + util.EscapePath(b.AbsPath) + name := filepath.Join(backupdir, util.EscapePath(b.AbsPath)) err := overwriteFile(name, encoding.Nop, func(file io.Writer) (e error) { if len(b.lines) == 0 { @@ -81,7 +82,7 @@ func (b *Buffer) RemoveBackup() { if !b.Settings["backup"].(bool) || b.Path == "" || b.Type != BTDefault { return } - f := config.ConfigDir + "/backups/" + util.EscapePath(b.AbsPath) + f := filepath.Join(config.ConfigDir, "backups", util.EscapePath(b.AbsPath)) os.Remove(f) } @@ -89,7 +90,7 @@ func (b *Buffer) RemoveBackup() { // Returns true if a backup was applied func (b *Buffer) ApplyBackup(fsize int64) bool { if b.Settings["backup"].(bool) && len(b.Path) > 0 && b.Type == BTDefault { - backupfile := config.ConfigDir + "/backups/" + util.EscapePath(b.AbsPath) + backupfile := filepath.Join(config.ConfigDir, "backups", util.EscapePath(b.AbsPath)) if info, err := os.Stat(backupfile); err == nil { backup, err := os.Open(backupfile) if err == nil { diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index 402aeffa..a57a228b 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -272,8 +272,8 @@ func NewBuffer(r io.Reader, size int64, path string, startcursor Loc, btype BufT b.UpdateRules() config.InitLocalSettings(b.Settings, b.Path) - if _, err := os.Stat(config.ConfigDir + "/buffers/"); os.IsNotExist(err) { - os.Mkdir(config.ConfigDir+"/buffers/", os.ModePerm) + if _, err := os.Stat(filepath.Join(config.ConfigDir, "buffers")); os.IsNotExist(err) { + os.Mkdir(filepath.Join(config.ConfigDir, "buffers"), os.ModePerm) } if startcursor.X != -1 && startcursor.Y != -1 { diff --git a/internal/buffer/serialize.go b/internal/buffer/serialize.go index b11b7322..79c21f6e 100644 --- a/internal/buffer/serialize.go +++ b/internal/buffer/serialize.go @@ -31,7 +31,7 @@ func (b *Buffer) Serialize() error { return nil } - name := config.ConfigDir + "/buffers/" + util.EscapePath(b.AbsPath) + name := filepath.Join(config.ConfigDir, "buffers", util.EscapePath(b.AbsPath)) return overwriteFile(name, encoding.Nop, func(file io.Writer) error { err := gob.NewEncoder(file).Encode(SerializedBuffer{ diff --git a/internal/config/config.go b/internal/config/config.go index 17d9311d..d2ceb058 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -3,6 +3,7 @@ package config import ( "errors" "os" + "path/filepath" homedir "github.com/mitchellh/go-homedir" ) @@ -24,10 +25,10 @@ func InitConfigDir(flagConfigDir string) error { if err != nil { return errors.New("Error finding your home directory\nCan't load config files: " + err.Error()) } - xdgHome = home + "/.config" + xdgHome = filepath.Join(home, ".config") } - microHome = xdgHome + "/micro" + microHome = filepath.Join(xdgHome, "micro") } ConfigDir = microHome diff --git a/internal/config/settings.go b/internal/config/settings.go index 6b93d117..a9e8b70c 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -147,7 +147,7 @@ func RegisterCommonOptionPlug(pl string, name string, defaultvalue interface{}) if v, ok := GlobalSettings[name]; !ok { defaultCommonSettings[name] = defaultvalue GlobalSettings[name] = defaultvalue - err := WriteSettings(filepath.Join(ConfigDir, "/settings.json")) + err := WriteSettings(filepath.Join(ConfigDir, "settings.json")) if err != nil { return errors.New("Error writing settings.json file: " + err.Error()) } diff --git a/internal/info/history.go b/internal/info/history.go index e6d03fee..8668de10 100644 --- a/internal/info/history.go +++ b/internal/info/history.go @@ -3,6 +3,7 @@ package info import ( "encoding/gob" "os" + "path/filepath" "github.com/zyedidia/micro/internal/config" ) @@ -12,7 +13,7 @@ import ( // The savehistory option must be on func (i *InfoBuf) LoadHistory() { if config.GetGlobalOption("savehistory").(bool) { - file, err := os.Open(config.ConfigDir + "/buffers/history") + file, err := os.Open(filepath.Join(config.ConfigDir, "buffers", "history")) defer file.Close() var decodedMap map[string][]string if err == nil { @@ -46,7 +47,7 @@ func (i *InfoBuf) SaveHistory() { } } - file, err := os.Create(config.ConfigDir + "/buffers/history") + file, err := os.Create(filepath.Join(config.ConfigDir, "buffers", "history")) defer file.Close() if err == nil { encoder := gob.NewEncoder(file)