diff options
author | dec05eba <dec05eba@protonmail.com> | 2020-07-31 22:30:16 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2020-07-31 22:30:16 +0200 |
commit | 14d0e432238f058d7bc854e5051ee2bcec6e2b62 (patch) | |
tree | d7feebbba860970fcf2cc6fb9a65fe13923e7c1f | |
parent | 4b8b6cce11623d208c03595a241d9af21fba04ba (diff) |
Fix add html/rss not working if previous add failed and .in_progress still exists
-rwxr-xr-x | automedia | bin | 112552 -> 112552 bytes | |||
-rw-r--r-- | src/html.c | 13 | ||||
-rw-r--r-- | src/rss.c | 13 |
3 files changed, 17 insertions, 9 deletions
Binary files differ @@ -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) { @@ -299,6 +299,8 @@ static int get_rss_url_from_episode_info(const char *episode_name, EpisodeInfo * return 0; } +/* TODO: Fix the remove() calls. They wont work since they are not recursive and the directories has files in them */ +/* Same for add_html */ int add_rss(const char *name, const char *url, char *rss_config_dir, const char *start_after) { int result = 0; @@ -364,7 +366,11 @@ int add_rss(const char *name, const char *url, char *rss_config_dir, const char strcat(rss_tracked_dir, "/tracked/"); strcat(rss_tracked_dir, name); - if(file_exists(rss_tracked_dir) == 0) { + char in_progress_filepath[PATH_MAX]; + strcpy(in_progress_filepath, rss_tracked_dir); + strcat(in_progress_filepath, "/.in_progress"); + + if(file_exists(rss_tracked_dir) == 0 && file_exists(in_progress_filepath) != 0) { fprintf(stderr, "You are already tracking %s\n", url); result = -1; goto cleanup; @@ -380,12 +386,11 @@ int add_rss(const char *name, const char *url, char *rss_config_dir, const char 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, rss_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", rss_tracked_dir); + remove(rss_tracked_dir); goto cleanup; } |