From 82523456664ca4d032c733cfef9163c17c5559aa Mon Sep 17 00:00:00 2001 From: Andrew Borodin Date: Fri, 29 Apr 2016 14:52:33 +0300 Subject: [PATCH] Allow search be interruptible. Signed-off-by: Andrew Borodin --- lib/search.h | 6 ++++-- lib/search/regex.c | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/search.h b/lib/search.h index f0fe751ca..1c246c354 100644 --- a/lib/search.h +++ b/lib/search.h @@ -36,7 +36,8 @@ typedef enum MC_SEARCH_E_REGEX_COMPILE, MC_SEARCH_E_REGEX, MC_SEARCH_E_REGEX_REPLACE, - MC_SEARCH_E_NOTFOUND + MC_SEARCH_E_NOTFOUND, + MC_SEARCH_E_ABORT } mc_search_error_t; typedef enum @@ -53,7 +54,8 @@ enum mc_search_cbret_t MC_SEARCH_CB_OK = 0, MC_SEARCH_CB_INVALID = -1, MC_SEARCH_CB_ABORT = -2, - MC_SEARCH_CB_SKIP = -3 + MC_SEARCH_CB_SKIP = -3, + MC_SEARCH_CB_NOTFOUND = -4 }; /*** structures declarations (and typedefs of structures)*****************************************/ diff --git a/lib/search/regex.c b/lib/search/regex.c index 90d057aee..bd6442322 100644 --- a/lib/search/regex.c +++ b/lib/search/regex.c @@ -872,7 +872,7 @@ gboolean mc_search__run_regex (mc_search_t * lc_mc_search, const void *user_data, gsize start_search, gsize end_search, gsize * found_len) { - mc_search_cbret_t ret = MC_SEARCH_CB_ABORT; + mc_search_cbret_t ret = MC_SEARCH_CB_NOTFOUND; gsize current_pos, virtual_pos; gint start_pos; gint end_pos; @@ -965,7 +965,7 @@ mc_search__run_regex (mc_search_t * lc_mc_search, const void *user_data, ((lc_mc_search->update_fn) (user_data, current_pos) == MC_SEARCH_CB_ABORT)) ret = MC_SEARCH_CB_ABORT; - if (ret == MC_SEARCH_CB_ABORT) + if (ret == MC_SEARCH_CB_ABORT || ret == MC_SEARCH_CB_NOTFOUND) break; } @@ -973,7 +973,7 @@ mc_search__run_regex (mc_search_t * lc_mc_search, const void *user_data, lc_mc_search->regex_buffer = NULL; if (ret == MC_SEARCH_CB_ABORT) - mc_search_set_error (lc_mc_search, MC_SEARCH_E_NOTFOUND, NULL); + mc_search_set_error (lc_mc_search, MC_SEARCH_E_ABORT, NULL); else mc_search_set_error (lc_mc_search, MC_SEARCH_E_NOTFOUND, "%s", _(STR_E_NOTFOUND)); -- 2.11.4.GIT