summaryrefslogtreecommitdiff
path: root/windows/cache.c
diff options
context:
space:
mode:
authorlouie <lshprung@yahoo.com>2020-12-30 11:03:02 -0800
committerlouie <lshprung@yahoo.com>2020-12-30 11:03:02 -0800
commite7c5382d71339d15f2b96e7ee06e5ef3639df837 (patch)
treef2de46d281532f4b505cbbea4ec3504c9aa98013 /windows/cache.c
parent9875aaebf2d44c3f38be3c72b0c9c0af9422f8cc (diff)
Improved cache.c organization
Diffstat (limited to 'windows/cache.c')
-rw-r--r--windows/cache.c73
1 files changed, 10 insertions, 63 deletions
diff --git a/windows/cache.c b/windows/cache.c
index c6fa3ef..313b16a 100644
--- a/windows/cache.c
+++ b/windows/cache.c
@@ -1,3 +1,4 @@
+#include <assert.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
@@ -8,77 +9,23 @@
#include "../include/cache.h"
#include "../include/read_cfg.h"
-void save_to_cache(int g_hover, int e_hover, int true_hover, char *cfg_name){
- FILE *fp;
- char path[BUF_LEN];
-
+char *get_cache_path(bool create){
+ char *path = malloc(sizeof(char) * BUF_LEN);
char *appdata = getenv("APPDATA");
if(appdata == NULL){
printf("Failed to save cache data: APPDATA is not set\n");
- return;
- }
-
- sprintf(path, "%s%ctml%c", appdata, sep, sep);
- mkdir(path);
-
- sprintf(path, "%s%ctml%ccache.bin", appdata, sep, sep);
-
- //open cache file for writing
- fp = fopen(path, "wb");
- if(fp == NULL){
- printf("Failed to save cache data: could not open \"%s\"\n", path);
- return;
+ free(path);
+ return NULL;
}
- //write to file
- fwrite(&g_hover, sizeof(int), 1, fp);
- fwrite(&e_hover, sizeof(int), 1, fp);
- fwrite(&true_hover, sizeof(int), 1, fp);
- fwrite(cfg_name, sizeof(char), BUF_LEN, fp);
-
- fclose(fp);
- return;
-}
-
-void load_cache(int *g_hover, int *e_hover, int *true_hover, char *new_cfg_name){
- FILE *fp;
- char path[BUF_LEN];
- char saved_cfg_name[BUF_LEN];
-
- char *appdata = getenv("APPDATA");
-
- if(appdata == NULL){
- printf("Failed to load cached data: HOME is not set\n");
- return;
+ //if create is asserted, build the path to the file
+ if(create){
+ sprintf(path, "%s%ctml%c", appdata, sep, sep);
+ mkdir(path);
}
sprintf(path, "%s%ctml%ccache.bin", appdata, sep, sep);
- //open cache file for reading
- fp = fopen(path, "rb");
- if(fp == NULL){
- printf("Failed to load cached data: could not open \"%s\"\n", path);
- return;
- }
-
- //check if cfg_name matches; if not, do not load from cache
- fseek(fp, sizeof(int) * 3, SEEK_SET);
- fread(saved_cfg_name, sizeof(char), BUF_LEN, fp);
-
- if(!(strcmp(saved_cfg_name, new_cfg_name))){
- fseek(fp, 0, SEEK_SET);
- fread(g_hover, sizeof(int), 1, fp);
- fread(e_hover, sizeof(int), 1, fp);
- fread(true_hover, sizeof(int), 1, fp);
- }
-
- else{
- *g_hover = 0;
- *e_hover = 0;
- *true_hover = 0;
- }
-
- fclose(fp);
- return;
+ return path;
}