From 72151d9c01b998d2a4379aeb56df2203ea75eb8f Mon Sep 17 00:00:00 2001 From: maru Date: Thu, 11 Apr 2024 00:15:07 -0400 Subject: [PATCH] Fix new save reader/writer functions --- api/savedata-helper.go | 4 ++-- api/savedata.go | 14 +++++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/api/savedata-helper.go b/api/savedata-helper.go index 0b8f65e..f499e8e 100644 --- a/api/savedata-helper.go +++ b/api/savedata-helper.go @@ -16,7 +16,7 @@ func readSystemSaveData(uuid []byte) (defs.SystemSaveData, error) { file, err := os.Open("userdata/" + hex.EncodeToString(uuid) + "/system.pzs") if err != nil { - return system, fmt.Errorf("failed to open save file: %s", err) + return system, fmt.Errorf("failed to open save file for reading: %s", err) } defer file.Close() @@ -46,7 +46,7 @@ func readSessionSaveData(uuid []byte, slotID int) (defs.SessionSaveData, error) file, err := os.Open(fmt.Sprintf("userdata/%s/%s.pzs", hex.EncodeToString(uuid), fileName)) if err != nil { - return session, fmt.Errorf("failed to open save file: %s", err) + return session, fmt.Errorf("failed to open save file for reading: %s", err) } defer file.Close() diff --git a/api/savedata.go b/api/savedata.go index 7f096b7..79f8753 100644 --- a/api/savedata.go +++ b/api/savedata.go @@ -76,16 +76,20 @@ func handleSavedataUpdate(uuid []byte, slot int, save any) error { return fmt.Errorf("failed to create userdata folder: %s", err) } - file, err := os.OpenFile("userdata/"+hexUUID+"/system.pzs", os.O_WRONLY | os.O_TRUNC, 0644) + file, err := os.OpenFile("userdata/"+hexUUID+"/system.pzs", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) if err != nil { return fmt.Errorf("failed to open save file for writing: %s", err) } + defer file.Close() + zstdEncoder, err := zstd.NewWriter(file) if err != nil { return fmt.Errorf("failed to create zstd encoder: %s", err) } + defer zstdEncoder.Close() + err = gob.NewEncoder(zstdEncoder).Encode(save) if err != nil { return fmt.Errorf("failed to serialize save: %s", err) @@ -105,16 +109,20 @@ func handleSavedataUpdate(uuid []byte, slot int, save any) error { return fmt.Errorf(fmt.Sprintf("failed to create userdata folder: %s", err)) } - file, err := os.OpenFile(fmt.Sprintf("userdata/%s/%s.pzs", hexUUID, fileName), os.O_WRONLY | os.O_TRUNC, 0644) + file, err := os.OpenFile(fmt.Sprintf("userdata/%s/%s.pzs", hexUUID, fileName), os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) if err != nil { return fmt.Errorf("failed to open save file for writing: %s", err) } - + + defer file.Close() + zstdEncoder, err := zstd.NewWriter(file) if err != nil { return fmt.Errorf("failed to create zstd encoder: %s", err) } + defer zstdEncoder.Close() + err = gob.NewEncoder(zstdEncoder).Encode(save) if err != nil { return fmt.Errorf("failed to serialize save: %s", err)