Write access is now checked for when working with cache files
This commit is contained in:
parent
e037fa7b4e
commit
2c034d5d09
36
src/wofi.c
36
src/wofi.c
@ -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);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user