func archiveAndSaveConfig(cfg *config.Wrapper) error { // Copy the existing config to an archive copy archivePath := cfg.ConfigPath() + fmt.Sprintf(".v%d", cfg.RawCopy().OriginalVersion) l.Infoln("Archiving a copy of old config file format at:", archivePath) if err := copyFile(cfg.ConfigPath(), archivePath); err != nil { return err } // Do a regular atomic config sve return cfg.Save() }
func archiveAndSaveConfig(cfg *config.Wrapper) error { // To prevent previous config from being cleaned up, quickly touch it too now := time.Now() _ = os.Chtimes(cfg.ConfigPath(), now, now) // May return error on Android etc; no worries archivePath := cfg.ConfigPath() + fmt.Sprintf(".v%d", cfg.Raw().OriginalVersion) l.Infoln("Archiving a copy of old config file format at:", archivePath) if err := osutil.Rename(cfg.ConfigPath(), archivePath); err != nil { return err } return cfg.Save() }