From 14d0e432238f058d7bc854e5051ee2bcec6e2b62 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Fri, 31 Jul 2020 22:30:16 +0200 Subject: Fix add html/rss not working if previous add failed and .in_progress still exists --- src/html.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/html.c') diff --git a/src/html.c b/src/html.c index 6977770..6442188 100644 --- a/src/html.c +++ b/src/html.c @@ -259,7 +259,11 @@ int add_html(const char *name, const char *url, char *html_config_dir, char *pro strcat(html_tracked_dir, "/tracked/"); strcat(html_tracked_dir, name); - if(file_exists(html_tracked_dir) == 0) { + char in_progress_filepath[PATH_MAX]; + strcpy(in_progress_filepath, html_tracked_dir); + strcat(in_progress_filepath, "/.in_progress"); + + if(file_exists(html_tracked_dir) == 0 && file_exists(in_progress_filepath) != 0) { fprintf(stderr, "You are already tracking %s\n", url); result = -1; goto cleanup; @@ -275,12 +279,11 @@ int add_html(const char *name, const char *url, char *html_config_dir, char *pro Create an ".in_progress" file to prevent periodic sync from reading rss data before we have finished adding all the data. */ - char in_progress_filepath[PATH_MAX]; - strcpy(in_progress_filepath, html_tracked_dir); - strcat(in_progress_filepath, "/.in_progress"); + remove(in_progress_filepath); result = create_lock_file(in_progress_filepath); if(result != 0) { fprintf(stderr, "Failed to create %s/.in_progress\n", html_tracked_dir); + remove(html_tracked_dir); goto cleanup; } @@ -300,7 +303,7 @@ int add_html(const char *name, const char *url, char *html_config_dir, char *pro } char updated[32]; - assert(sizeof(time_t) == 4); + assert(sizeof(time_t) == sizeof(long)); sprintf(updated, "%ld", time(NULL)); result = file_overwrite_in_dir(html_tracked_dir, "updated", updated, strlen(updated)); if(result != 0) { -- cgit v1.2.3