From 86d2cd91589da51e71648b92df95f2b0a1c16c8d Mon Sep 17 00:00:00 2001 From: Kyle Bostelmann Date: Thu, 29 Sep 2016 19:37:13 -0300 Subject: [PATCH] Bescause the working directory is set to where the go executable is running the absolute path should be used when creating a new map. --- src/handlers.go | 3 ++- src/server.go | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/handlers.go b/src/handlers.go index 928bf08..42b10fc 100644 --- a/src/handlers.go +++ b/src/handlers.go @@ -462,7 +462,8 @@ func CreateSaveHandler(w http.ResponseWriter, r *http.Request) { return } - cmdOut, err := createSave(saveName) + saveFile := filepath.Join(config.FactorioSavesDir, saveName) + cmdOut, err := createSave(saveFile) if err != nil { log.Printf("Error creating save: %s", err) resp.Data = "Error creating savefile." diff --git a/src/server.go b/src/server.go index 6b4a178..4cf9e0d 100644 --- a/src/server.go +++ b/src/server.go @@ -26,9 +26,14 @@ type FactorioServer struct { StdIn io.WriteCloser } -func createSave(saveName string) (string, error) { - args := []string{"--create", saveName} +func createSave(filePath string) (string, error) { + err := os.MkdirAll(filepath.Base(filePath), 0755) + if err != nil { + log.Printf("Error in creating Factorio save: %s", err) + return "", err + } + args := []string{"--create", filePath} cmdOutput, err := exec.Command(config.FactorioBinary, args...).Output() if err != nil { log.Printf("Error in creating Factorio save: %s", err)