From 15afbb8b87e742f76ca6a693d4d4d7d9efd16b61 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Sun, 1 May 2022 21:32:19 +0200 Subject: [PATCH] settings: Use pointer --- admin/api/settings.go | 6 +++--- admin/main.go | 2 +- backend/main.go | 2 +- frontend/settings.go | 2 +- settings/settings.go | 14 +++++++------- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/admin/api/settings.go b/admin/api/settings.go index 43edfe8a..19e44b00 100644 --- a/admin/api/settings.go +++ b/admin/api/settings.go @@ -54,7 +54,7 @@ func getSettings(_ httprouter.Params, body []byte) (interface{}, error) { } func saveSettings(_ httprouter.Params, body []byte) (interface{}, error) { - var config settings.FICSettings + var config *settings.FICSettings if err := json.Unmarshal(body, &config); err != nil { return nil, err } @@ -67,7 +67,7 @@ func saveSettings(_ httprouter.Params, body []byte) (interface{}, error) { } } -func ApplySettings(config settings.FICSettings) { +func ApplySettings(config *settings.FICSettings) { fic.PartialValidation = config.PartialValidation fic.UnlockedChallengeDepth = config.UnlockedChallengeDepth fic.DisplayAllFlags = config.DisplayAllFlags @@ -83,7 +83,7 @@ func ApplySettings(config settings.FICSettings) { } func ResetSettings() error { - return settings.SaveSettings(path.Join(settings.SettingsDir, settings.SettingsFile), settings.FICSettings{ + return settings.SaveSettings(path.Join(settings.SettingsDir, settings.SettingsFile), &settings.FICSettings{ Title: "Challenge FIC", Authors: "Laboratoire SRS, ÉPITA", WorkInProgress: IsProductionEnv, diff --git a/admin/main.go b/admin/main.go index 31d8b446..d4ba4fd1 100644 --- a/admin/main.go +++ b/admin/main.go @@ -203,7 +203,7 @@ func main() { log.Fatal("Unable to initialize settings.json:", err) } } else { - var config settings.FICSettings + var config *settings.FICSettings if config, err = settings.ReadSettings(path.Join(settings.SettingsDir, settings.SettingsFile)); err != nil { log.Fatal("Unable to read settings.json:", err) } else { diff --git a/backend/main.go b/backend/main.go index 998c0770..857225e0 100644 --- a/backend/main.go +++ b/backend/main.go @@ -67,7 +67,7 @@ var ChStarted = false var lastRegeneration time.Time var skipInitialGeneration = false -func reloadSettings(config settings.FICSettings) { +func reloadSettings(config *settings.FICSettings) { allowRegistration = config.AllowRegistration canJoinTeam = config.CanJoinTeam denyTeamCreation = config.DenyTeamCreation diff --git a/frontend/settings.go b/frontend/settings.go index 3e067c2e..44304f3c 100644 --- a/frontend/settings.go +++ b/frontend/settings.go @@ -27,7 +27,7 @@ func touchStartedFile() { } } -func reloadSettings(config settings.FICSettings) { +func reloadSettings(config *settings.FICSettings) { // Copy the new settings file for distribution if data, err := ioutil.ReadFile(path.Join(settings.SettingsDir, settings.SettingsFile)); err != nil { log.Println("Unable to read settings file:", err) diff --git a/settings/settings.go b/settings/settings.go index 36c00562..fcf28d88 100644 --- a/settings/settings.go +++ b/settings/settings.go @@ -92,24 +92,24 @@ func ExistsSettings(settingsPath string) bool { } // ReadSettings parses the file at the given location. -func ReadSettings(path string) (FICSettings, error) { +func ReadSettings(path string) (*FICSettings, error) { var s FICSettings if fd, err := os.Open(path); err != nil { - return s, err + return nil, err } else { defer fd.Close() jdec := json.NewDecoder(fd) if err := jdec.Decode(&s); err != nil { - return s, err + return &s, err } - return s, nil + return &s, nil } } // SaveSettings saves settings at the given location. -func SaveSettings(path string, s FICSettings) error { +func SaveSettings(path string, s *FICSettings) error { if fd, err := os.Create(path); err != nil { return err } else { @@ -139,7 +139,7 @@ func ForceRegeneration() error { // Giving the location and a callback, this function will first call your reload function // before returning (if the file can be parsed); then it starts watching modifications made to // this file. Your callback is then run each time the file is modified. -func LoadAndWatchSettings(settingsPath string, reload func(FICSettings)) { +func LoadAndWatchSettings(settingsPath string, reload func(*FICSettings)) { // First load of configuration if it exists if _, err := os.Stat(settingsPath); !os.IsNotExist(err) { if config, err := ReadSettings(settingsPath); err != nil { @@ -184,7 +184,7 @@ func LoadAndWatchSettings(settingsPath string, reload func(FICSettings)) { } } -func tryReload(settingsPath string, reload func(FICSettings)) { +func tryReload(settingsPath string, reload func(*FICSettings)) { if config, err := ReadSettings(settingsPath); err != nil { log.Println("ERROR: Unable to read challenge settings:", err) } else if time.Until(config.ActivateTime) > 0 {