From 88ea7b1e960bfa75d57e4ad4671d2069c7eb17a3 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 23 Jan 2013 14:58:54 +0000 Subject: [PATCH] conf2 option ctx now stores update text to allow ignoring repeated updates, also remove tags from search lists when aliases are added SVN revision: 83179 --- src/bin/e_configure_option.c | 15 ++++++++++++++- src/bin/e_configure_option.h | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/bin/e_configure_option.c b/src/bin/e_configure_option.c index 4f06189e4..b09a88420 100644 --- a/src/bin/e_configure_option.c +++ b/src/bin/e_configure_option.c @@ -2578,10 +2578,18 @@ e_configure_option_ctx_update(E_Configure_Option_Ctx *ctx, const char *str) if ((!ctx->tags) && (ctx->opts)) return EINA_FALSE; ctx->tags = eina_list_free(ctx->tags); ctx->opts = eina_list_free(ctx->opts); + E_FREE(ctx->text); return ctx->changed = EINA_TRUE; } - update = strdupa(str); + update = strdup(str); eina_str_tolower(&update); + if (!e_util_strcmp(ctx->text, update)) + { + free(update); + return EINA_FALSE; + } + free(ctx->text); + ctx->text = update; alist = eina_list_clone(tags_alias_list); tlist = eina_list_clone(tags_list); for (s = e = strdupa(update); e[0]; e++) @@ -2606,10 +2614,12 @@ e_configure_option_ctx_update(E_Configure_Option_Ctx *ctx, const char *str) if (strncmp(s, alias, e - s)) { tmp = eina_list_append(tmp, tag); + tlist = eina_list_remove(tlist, tag); continue; } tmp = eina_list_free(tmp); tmp = eina_list_append(tmp, tag); + tlist = eina_list_remove(tlist, tag); skip = EINA_TRUE; break; } @@ -2657,10 +2667,12 @@ end: if (strncmp(s, alias, e - s)) { tmp = eina_list_append(tmp, tag); + tlist = eina_list_remove(tlist, tag); continue; } tmp = eina_list_free(tmp); tmp = eina_list_append(tmp, tag); + tlist = eina_list_remove(tlist, tag); skip = EINA_TRUE; break; } @@ -2791,6 +2803,7 @@ e_configure_option_ctx_free(E_Configure_Option_Ctx *ctx) eina_list_free(ctx->tags); eina_list_free(ctx->opts); eina_list_free(ctx->match_tags); + free(ctx->text); free(ctx); } diff --git a/src/bin/e_configure_option.h b/src/bin/e_configure_option.h index dc342fb4e..946726838 100644 --- a/src/bin/e_configure_option.h +++ b/src/bin/e_configure_option.h @@ -119,6 +119,7 @@ struct E_Configure_Option_Ctx Eina_List *match_tags; // Eina_Stringshare Eina_List *opts; // E_Configure_Option Eina_Stringshare *category; + char *text; Eina_Bool changed : 1; };