summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouie Shprung <lshprung@scu.edu>2023-01-04 12:24:25 -0800
committerLouie Shprung <lshprung@scu.edu>2023-01-04 12:24:25 -0800
commit3f2e3cbfb2b4e1996a88a81ae8630868b6d77c0c (patch)
tree7047dbd9ff092bb80923d45d12d2986359f25d22
parent42807fa75746d991d0d4cae907c86cf52f973044 (diff)
Fix save paths for Windows
-rw-r--r--src/draw.c43
1 files changed, 30 insertions, 13 deletions
diff --git a/src/draw.c b/src/draw.c
index e49d636..607c786 100644
--- a/src/draw.c
+++ b/src/draw.c
@@ -213,9 +213,11 @@ int loadScore(){
FILE *savedata;
char *path = malloc(sizeof(char) * 256);
int hs = 0;
- char *home = getenv("HOME");
- sprintf(path, "%s/.local/share/simple-snake/save.bin", home);
+ if(getenv("HOME") != NULL)
+ sprintf(path, "%s/.local/share/simple-snake/save.bin", getenv("HOME"));
+ else if(getenv("APPDATA") != NULL)
+ sprintf(path, "%s/simple-snake/save.bin", getenv("APPDATA"));
savedata = fopen(path, "rb");
if(savedata != NULL){
@@ -230,26 +232,41 @@ int loadScore(){
void saveScore(int highscore){
FILE *savedata;
char *path = malloc(sizeof(char) * 256);
- char *home = getenv("HOME");
+ bool has_appdata = false; //set to true if appdata is defined (implying WIN32)
- sprintf(path, "%s/.local/share/simple-snake/save.bin", home);
+ if(getenv("HOME") != NULL)
+ sprintf(path, "%s/.local/share/simple-snake/save.bin", getenv("HOME"));
+ else if(getenv("APPDATA") != NULL){
+ sprintf(path, "%s/simple-snake/save.bin", getenv("APPDATA"));
+ has_appdata = true;
+ }
+ else return;
savedata = fopen(path, "wb");
//if the file does not exist, create it
if(savedata == NULL){
- if(home == NULL) return;
+ if(!has_appdata){
+ sprintf(path, "%s/.local/", getenv("HOME"));
+ mkdir(path, 0700);
+
+ sprintf(path, "%s/.local/share/", getenv("HOME"));
+ mkdir(path, 0755);
- sprintf(path, "%s/.local/", home);
- mkdir(path, 0700);
+ sprintf(path, "%s/.local/share/simple-snake/", getenv("HOME"));
+ mkdir(path, 0755);
- sprintf(path, "%s/.local/share/", home);
- mkdir(path, 0755);
+ sprintf(path, "%s/.local/share/simple-snake/save.bin", getenv("HOME"));
+ savedata = fopen(path, "wb");
+ }
- sprintf(path, "%s/.local/share/simple-snake/", home);
- mkdir(path, 0755);
+ else {
+ sprintf(path, "%s/simple-snake/", getenv("APPDATA"));
+ mkdir(path, 0755);
+
+ sprintf(path, "%s/simple-snake/save.bin", getenv("APPDATA"));
+ savedata = fopen(path, "wb");
+ }
- sprintf(path, "%s/.local/share/simple-snake/save.bin", home);
- savedata = fopen(path, "wb");
if(savedata == NULL) return;
}