re-organize matcher part 5; more to come
authorAlfons Hoogervorst <alfons@proteus.demon.nl>
Fri, 27 Dec 2002 22:56:17 +0000 (22:56 +0000)
committerAlfons Hoogervorst <alfons@proteus.demon.nl>
Fri, 27 Dec 2002 22:56:17 +0000 (22:56 +0000)
* src/matcher.c
hash keywords in matchparser_tab

ChangeLog.claws
configure.in
src/matcher.c

index da6479937d2870c2432ad55cb6386a2327921532..99c86a975280ec439f019c8f875dca0576b320e2 100644 (file)
@@ -1,3 +1,10 @@
+2002-12-27 [alfons]    0.8.8claws17
+
+       re-organize matcher part 5; more to come
+
+       * src/matcher.c
+               hash keywords in matchparser_tab 
+
 2002-12-27 [alfons]    0.8.8claws16
 
        re-organize matcher part 4; more to come
 2002-12-27 [alfons]    0.8.8claws16
 
        re-organize matcher part 4; more to come
index 58dde4298fb8f1db02a5cfb86aadce16741f5ca4..580f180c7eb56e42669de23280417e6b8f96b28d 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=8
 MICRO_VERSION=8
 INTERFACE_AGE=0
 BINARY_AGE=0
 MICRO_VERSION=8
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=claws16
+EXTRA_VERSION=claws17
 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
 
 dnl set $target
 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
 
 dnl set $target
index 0f6c0968c7958a52a5ebc92ceecaaf82a4fbf973..47eadcf2ce01d002259fa51e0471f2de7c525979 100644 (file)
@@ -118,9 +118,11 @@ static MatchParser matchparser_tab[] = {
        {MATCHACTION_DELETE_ON_SERVER, "delete_on_server"}
 };
 
        {MATCHACTION_DELETE_ON_SERVER, "delete_on_server"}
 };
 
+static GHashTable *matchparser_hashtab;
+
 /* get_matchparser_tab_str() - used by filtering.c to translate 
  * actions to debug strings */
 /* get_matchparser_tab_str() - used by filtering.c to translate 
  * actions to debug strings */
-gchar * get_matchparser_tab_str(gint id)
+gchar *get_matchparser_tab_str(gint id)
 {
        gint i;
 
 {
        gint i;
 
@@ -131,18 +133,27 @@ gchar * get_matchparser_tab_str(gint id)
        return NULL;
 }
 
        return NULL;
 }
 
+static void create_matchparser_hashtab(void)
+{
+       int i;
+       
+       if (matchparser_hashtab) return;
+       matchparser_hashtab = g_hash_table_new(g_str_hash, g_str_equal);
+       for (i = 0; i < sizeof matchparser_tab / sizeof matchparser_tab[0]; i++)
+               g_hash_table_insert(matchparser_hashtab,
+                                   matchparser_tab[i].str,
+                                   &matchparser_tab[i]);
+}
+
 gint get_matchparser_tab_id(const gchar *str)
 {
        gint i;
 gint get_matchparser_tab_id(const gchar *str)
 {
        gint i;
+       MatchParser *res;
 
 
-       /*
-        * begs for a hash table
-        */
-       for (i = 0; i < sizeof matchparser_tab / sizeof matchparser_tab[0]; i++) {
-               if (g_strcasecmp(matchparser_tab[i].str, str) == 0)
-                       return matchparser_tab[i].id;
-       }
-       return -1;
+       if (NULL != (res = g_hash_table_lookup(matchparser_hashtab, str))) {
+               return res->id;
+       } else
+               return -1;
 }
 
 /* matcher_escape_str() - escapes a string returns newly allocated escaped string */
 }
 
 /* matcher_escape_str() - escapes a string returns newly allocated escaped string */
@@ -1290,6 +1301,7 @@ void prefs_matcher_read_config(void)
        gchar *rcpath;
        FILE *f;
 
        gchar *rcpath;
        FILE *f;
 
+       create_matchparser_hashtab();
        prefs_scoring_clear();
        prefs_filtering_clear();
 
        prefs_scoring_clear();
        prefs_filtering_clear();