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,14 +380,14 @@ void wofi_write_cache(const gchar* mode, const gchar* cmd) {
} }
free(line); free(line);
fclose(file); fclose(file);
}
if(!inc_count) { if(!inc_count) {
struct cache_line* node = malloc(sizeof(struct cache_line)); struct cache_line* node = malloc(sizeof(struct cache_line));
node->line = utils_concat(3, "1 ", cmd, "\n"); node->line = utils_concat(3, "1 ", cmd, "\n");
wl_list_insert(&lines, &node->link); wl_list_insert(&lines, &node->link);
} }
FILE* file = fopen(cache_path, "w"); file = fopen(cache_path, "w");
struct cache_line* node, *tmp; struct cache_line* node, *tmp;
wl_list_for_each_safe(node, tmp, &lines, link) { wl_list_for_each_safe(node, tmp, &lines, link) {
fwrite(node->line, 1, strlen(node->line), file); fwrite(node->line, 1, strlen(node->line), file);
@ -397,13 +397,13 @@ void wofi_write_cache(const gchar* mode, const gchar* cmd) {
} }
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);