Write access is now checked for when working with cache files

This commit is contained in:
Scoopta 2020-01-02 15:24:30 -08:00
parent e037fa7b4e
commit 2c034d5d09

View File

@ -342,7 +342,7 @@ void wofi_write_cache(const gchar* mode, const gchar* cmd) {
struct wl_list lines; struct wl_list lines;
wl_list_init(&lines); wl_list_init(&lines);
bool inc_count = false; bool inc_count = false;
if(access(cache_path, R_OK) == 0) { if(access(cache_path, R_OK | W_OK) == 0) {
FILE* file = fopen(cache_path, "r"); FILE* file = fopen(cache_path, "r");
char* line = NULL; char* line = NULL;
size_t size = 0; size_t size = 0;
@ -380,30 +380,30 @@ void wofi_write_cache(const gchar* mode, const gchar* cmd) {
} }
free(line); free(line);
fclose(file); fclose(file);
}
if(!inc_count) {
struct cache_line* node = malloc(sizeof(struct cache_line));
node->line = utils_concat(3, "1 ", cmd, "\n");
wl_list_insert(&lines, &node->link);
}
FILE* file = fopen(cache_path, "w"); if(!inc_count) {
struct cache_line* node, *tmp; struct cache_line* node = malloc(sizeof(struct cache_line));
wl_list_for_each_safe(node, tmp, &lines, link) { node->line = utils_concat(3, "1 ", cmd, "\n");
fwrite(node->line, 1, strlen(node->line), file); wl_list_insert(&lines, &node->link);
free(node->line); }
wl_list_remove(&node->link);
free(node); file = fopen(cache_path, "w");
struct cache_line* node, *tmp;
wl_list_for_each_safe(node, tmp, &lines, link) {
fwrite(node->line, 1, strlen(node->line), file);
free(node->line);
wl_list_remove(&node->link);
free(node);
}
fclose(file);
} }
fclose(file);
free(cache_path); free(cache_path);
} }
void wofi_remove_cache(const gchar* mode, const gchar* cmd) { void wofi_remove_cache(const gchar* mode, const gchar* cmd) {
char* cache_path = get_cache_path(mode); char* cache_path = get_cache_path(mode);
if(access(cache_path, R_OK) == 0) { if(access(cache_path, R_OK | W_OK) == 0) {
struct wl_list lines; struct wl_list lines;
wl_list_init(&lines); wl_list_init(&lines);