From a0cd16371432539c4f9aba48516eda9ac5d385f0 Mon Sep 17 00:00:00 2001 From: Andrej Kacian Date: Sat, 25 Feb 2017 11:43:26 +0100 Subject: [PATCH] Replace verbosity boolean flag with a bitfield of flags. Currently, there are two - whether or not to show error dialogs and whether or not to show a feed rename dialog after subscribing. We use same enum typedef for subscribing and fetching/updating for consistency, the second flag only has effect in rssyl_subscribe(). --- src/plugins/rssyl/opml_import.c | 2 +- src/plugins/rssyl/rssyl.c | 2 +- src/plugins/rssyl/rssyl_cb_menu.c | 4 ++-- src/plugins/rssyl/rssyl_feed.c | 2 +- src/plugins/rssyl/rssyl_feed.h | 6 ++++++ src/plugins/rssyl/rssyl_subscribe.c | 6 +++--- src/plugins/rssyl/rssyl_subscribe.h | 5 ++++- src/plugins/rssyl/rssyl_update_comments.c | 2 +- src/plugins/rssyl/rssyl_update_feed.c | 14 +++++++------- src/plugins/rssyl/rssyl_update_feed.h | 4 ++-- 10 files changed, 28 insertions(+), 19 deletions(-) diff --git a/src/plugins/rssyl/opml_import.c b/src/plugins/rssyl/opml_import.c index 8af767518..1c3790952 100644 --- a/src/plugins/rssyl/opml_import.c +++ b/src/plugins/rssyl/opml_import.c @@ -102,7 +102,7 @@ void rssyl_opml_import_func(gchar *title, gchar *url, gint depth, gpointer data) } else { /* We have URL, try to add new feed... */ new_item = rssyl_subscribe((FolderItem *)ctx->current->data, - url, TRUE); + url, RSSYL_SHOW_ERRORS); /* ...and rename it if needed */ if (new_item != NULL && strcmp(title, new_item->name)) { if (folder_item_rename(new_item, title) < 0) { diff --git a/src/plugins/rssyl/rssyl.c b/src/plugins/rssyl/rssyl.c index af71ae404..ea70028b0 100644 --- a/src/plugins/rssyl/rssyl.c +++ b/src/plugins/rssyl/rssyl.c @@ -866,7 +866,7 @@ static gboolean rssyl_subscribe_uri(Folder *folder, const gchar *uri) { if (folder->klass != rssyl_folder_get_class()) return FALSE; - return (rssyl_subscribe(FOLDER_ITEM(folder->node->data), uri, FALSE) ? + return (rssyl_subscribe(FOLDER_ITEM(folder->node->data), uri, 0) ? TRUE : FALSE); } diff --git a/src/plugins/rssyl/rssyl_cb_menu.c b/src/plugins/rssyl/rssyl_cb_menu.c index 826e1716c..3237e97a6 100644 --- a/src/plugins/rssyl/rssyl_cb_menu.c +++ b/src/plugins/rssyl/rssyl_cb_menu.c @@ -68,7 +68,7 @@ void rssyl_new_feed_cb(GtkAction *action, if( url == NULL ) /* User cancelled */ return; - rssyl_subscribe(item, url, TRUE); + rssyl_subscribe(item, url, RSSYL_SHOW_ERRORS | RSSYL_SHOW_RENAME_DIALOG); g_free(url); } @@ -256,7 +256,7 @@ void rssyl_refresh_feed_cb(GtkAction *action, } /* Update feed, displaying errors if any. */ - rssyl_update_feed(ritem, TRUE); + rssyl_update_feed(ritem, RSSYL_SHOW_ERRORS); } void rssyl_prop_cb(GtkAction *action, gpointer data) diff --git a/src/plugins/rssyl/rssyl_feed.c b/src/plugins/rssyl/rssyl_feed.c index c5f3e6c60..dde0a20b2 100644 --- a/src/plugins/rssyl/rssyl_feed.c +++ b/src/plugins/rssyl/rssyl_feed.c @@ -85,7 +85,7 @@ gboolean rssyl_refresh_timeout_cb(gpointer data) debug_print(" %s: refresh %s (%d)\n", tmpdate, ctx->ritem->url, ctx->ritem->refresh_id); g_free(tmpdate); - rssyl_update_feed(ctx->ritem, FALSE); + rssyl_update_feed(ctx->ritem, 0); return TRUE; } diff --git a/src/plugins/rssyl/rssyl_feed.h b/src/plugins/rssyl/rssyl_feed.h index 4e098a275..00f0792f3 100644 --- a/src/plugins/rssyl/rssyl_feed.h +++ b/src/plugins/rssyl/rssyl_feed.h @@ -16,6 +16,12 @@ #define RSSYL_LOG_ERROR_PROC _("RSSyl: Couldn't process feed at '%s'\n") #define RSSYL_LOG_ABORTED_EXITING _("RSSyl: Application is exiting, couldn't finish updating feed at '%s'\n") +typedef enum +{ + RSSYL_SHOW_ERRORS = 1 << 0, + RSSYL_SHOW_RENAME_DIALOG = 1 << 1 +} RSSylVerboseFlags; + MsgInfo *rssyl_feed_parse_item_to_msginfo(gchar *file, MsgFlags flags, gboolean a, gboolean b, FolderItem *item); diff --git a/src/plugins/rssyl/rssyl_subscribe.c b/src/plugins/rssyl/rssyl_subscribe.c index b5da74cdd..41747e69c 100644 --- a/src/plugins/rssyl/rssyl_subscribe.c +++ b/src/plugins/rssyl/rssyl_subscribe.c @@ -57,7 +57,7 @@ static void rssyl_subscribe_foreach_func(gpointer data, gpointer user_data) } FolderItem *rssyl_subscribe(FolderItem *parent, const gchar *url, - gboolean verbose) + RSSylVerboseFlags verbose) { gchar *myurl = NULL, *tmpname = NULL, *tmpname2 = NULL; RFetchCtx *ctx; @@ -94,7 +94,7 @@ FolderItem *rssyl_subscribe(FolderItem *parent, const gchar *url, return NULL; } - if (verbose) { + if (verbose & RSSYL_SHOW_RENAME_DIALOG) { sctx = g_new0(RSubCtx, 1); sctx->feed = ctx->feed; sctx->edit_properties = FALSE; @@ -154,7 +154,7 @@ FolderItem *rssyl_subscribe(FolderItem *parent, const gchar *url, g_free(tmpname2); if (!new_item) { - if (verbose) + if (verbose & RSSYL_SHOW_ERRORS) alertpanel_error(_("Couldn't create folder for new feed '%s'."), myurl); feed_free(ctx->feed); diff --git a/src/plugins/rssyl/rssyl_subscribe.h b/src/plugins/rssyl/rssyl_subscribe.h index 37139b50f..56e90949f 100644 --- a/src/plugins/rssyl/rssyl_subscribe.h +++ b/src/plugins/rssyl/rssyl_subscribe.h @@ -1,6 +1,9 @@ #ifndef __RSSYL_SUBSCRIBE_H #define __RSSYL_SUBSCRIBE_H -FolderItem *rssyl_subscribe(FolderItem *parent, const gchar *url, gboolean verbose); +#include + +FolderItem *rssyl_subscribe(FolderItem *parent, const gchar *url, + RSSylVerboseFlags verbose); #endif /* __RSSYL_SUBSCRIBE_H */ diff --git a/src/plugins/rssyl/rssyl_update_comments.c b/src/plugins/rssyl/rssyl_update_comments.c index 581d37902..ae831ed48 100644 --- a/src/plugins/rssyl/rssyl_update_comments.c +++ b/src/plugins/rssyl/rssyl_update_comments.c @@ -114,7 +114,7 @@ void rssyl_update_comments(RFolderItem *ritem) if (fetchctx != NULL) { feed_set_ssl_verify_peer(fetchctx->feed, ritem->ssl_verify_peer); - rssyl_fetch_feed(fetchctx, FALSE); + rssyl_fetch_feed(fetchctx, 0); if( fetchctx->success && feed_n_items(fetchctx->feed) > 0 ) { g_free(fetchctx->feed->title); diff --git a/src/plugins/rssyl/rssyl_update_feed.c b/src/plugins/rssyl/rssyl_update_feed.c index 1cf651ba4..a9d1129ab 100644 --- a/src/plugins/rssyl/rssyl_update_feed.c +++ b/src/plugins/rssyl/rssyl_update_feed.c @@ -61,7 +61,7 @@ static void *rssyl_fetch_feed_thr(void *arg) } /* rssyl_fetch_feed() */ -void rssyl_fetch_feed(RFetchCtx *ctx, gboolean verbose) +void rssyl_fetch_feed(RFetchCtx *ctx, RSSylVerboseFlags verbose) { #ifdef USE_PTHREAD pthread_t pt; @@ -116,12 +116,12 @@ void rssyl_fetch_feed(RFetchCtx *ctx, gboolean verbose) } } - /* Here we handle "imperfect" conditions. If verbose is TRUE, we also + /* Here we handle "imperfect" conditions. If requested, we also * display error dialogs for user. We always log the error. */ if( ctx->error != NULL ) { /* libcurl wasn't happy */ debug_print("RSSyl: Error: %s\n", ctx->error); - if( verbose ) { + if( verbose & RSSYL_SHOW_ERRORS) { gchar *msg = g_markup_printf_escaped( (const char *) C_("First parameter is URL, second is error text", "Error fetching feed at\n%s:\n\n%s"), @@ -135,7 +135,7 @@ void rssyl_fetch_feed(RFetchCtx *ctx, gboolean verbose) ctx->success = FALSE; } else { if( ctx->feed == NULL ) { - if( verbose ) { + if( verbose & RSSYL_SHOW_ERRORS) { gchar *msg = g_markup_printf_escaped( (const char *) _("No valid feed found at\n%s"), feed_get_url(ctx->feed)); @@ -213,7 +213,7 @@ RFetchCtx *rssyl_prep_fetchctx_from_url(gchar *url) /* rssyl_update_feed() */ -gboolean rssyl_update_feed(RFolderItem *ritem, gboolean verbose) +gboolean rssyl_update_feed(RFolderItem *ritem, RSSylVerboseFlags verbose) { RFetchCtx *ctx = NULL; MainWindow *mainwin = mainwindow_get_mainwindow(); @@ -253,7 +253,7 @@ gboolean rssyl_update_feed(RFolderItem *ritem, gboolean verbose) if( ctx->success && !(ctx->success = rssyl_parse_feed(ritem, ctx->feed)) ) { /* both libcurl and libfeed were happy, but we weren't */ debug_print("RSSyl: Error processing feed\n"); - if( verbose ) { + if( verbose & RSSYL_SHOW_ERRORS ) { gchar *msg = g_markup_printf_escaped( (const char *) _("Couldn't process feed at\n%s\n\n" "Please contact developers, this should not happen."), @@ -304,7 +304,7 @@ static gboolean rssyl_update_recursively_func(GNode *node, gpointer data) if( ritem->url != NULL ) { debug_print("RSSyl: Updating feed '%s'\n", item->name); - rssyl_update_feed(ritem, FALSE); + rssyl_update_feed(ritem, 0); } else debug_print("RSSyl: Updating in folder '%s'\n", item->name); diff --git a/src/plugins/rssyl/rssyl_update_feed.h b/src/plugins/rssyl/rssyl_update_feed.h index f72d04ad3..81722343f 100644 --- a/src/plugins/rssyl/rssyl_update_feed.h +++ b/src/plugins/rssyl/rssyl_update_feed.h @@ -5,12 +5,12 @@ #include "rssyl.h" -void rssyl_fetch_feed(RFetchCtx *ctx, gboolean verbose); +void rssyl_fetch_feed(RFetchCtx *ctx, RSSylVerboseFlags verbose); RFetchCtx *rssyl_prep_fetchctx_from_url(gchar *url); RFetchCtx *rssyl_prep_fetchctx_from_item(RFolderItem *ritem); -gboolean rssyl_update_feed(RFolderItem *ritem, gboolean verbose); +gboolean rssyl_update_feed(RFolderItem *ritem, RSSylVerboseFlags verbose); void rssyl_update_recursively(FolderItem *item); -- 2.25.1