]> granicus.if.org Git - neomutt/commitdiff
init.c: convert MyVars to use TAILQ
authorVladimir Zakharov <zakharov.vv@gmail.com>
Sat, 21 Apr 2018 22:15:36 +0000 (01:15 +0300)
committerRichard Russon <rich@flatcap.org>
Mon, 23 Apr 2018 23:04:26 +0000 (00:04 +0100)
init.c

diff --git a/init.c b/init.c
index bc40173a63ad0c2e30a94a8ac09813fb6911f542..08e23b20bb0c204b6177c4b6e7f8da94ad98bdbd 100644 (file)
--- a/init.c
+++ b/init.c
@@ -99,44 +99,44 @@ struct MyVar
 {
   char *name;
   char *value;
-  struct MyVar *next;
+  TAILQ_ENTRY(MyVar) entries;
 };
 
-static struct MyVar *MyVars;
+static TAILQ_HEAD(, MyVar) MyVars = TAILQ_HEAD_INITIALIZER(MyVars);
 
 void myvar_set(const char *var, const char *val)
 {
-  struct MyVar **cur = NULL;
-
-  for (cur = &MyVars; *cur; cur = &((*cur)->next))
-    if (mutt_str_strcmp((*cur)->name, var) == 0)
-      break;
-
-  if (!*cur)
-    *cur = mutt_mem_calloc(1, sizeof(struct MyVar));
+  struct MyVar *myv = NULL;
 
-  if (!(*cur)->name)
-    (*cur)->name = mutt_str_strdup(var);
+  TAILQ_FOREACH(myv, &MyVars, entries)
+  {
+    if (mutt_str_strcmp(myv->name, var) == 0)
+    {
+      mutt_str_replace(&myv->value, val);
+      return;
+    }
+  }
 
-  mutt_str_replace(&(*cur)->value, val);
+  myv = mutt_mem_calloc(1, sizeof(struct MyVar));
+  myv->name = mutt_str_strdup(var);
+  myv->value = mutt_str_strdup(val);
+  TAILQ_INSERT_TAIL(&MyVars, myv, entries);
 }
 
 static void myvar_del(const char *var)
 {
-  struct MyVar **cur = NULL;
-  struct MyVar *tmp = NULL;
-
-  for (cur = &MyVars; *cur; cur = &((*cur)->next))
-    if (mutt_str_strcmp((*cur)->name, var) == 0)
-      break;
+  struct MyVar *myv = NULL;
 
-  if (*cur)
+  TAILQ_FOREACH(myv, &MyVars, entries)
   {
-    tmp = (*cur)->next;
-    FREE(&(*cur)->name);
-    FREE(&(*cur)->value);
-    FREE(cur);
-    *cur = tmp;
+    if (mutt_str_strcmp(myv->name, var) == 0)
+    {
+      TAILQ_REMOVE(&MyVars, myv, entries);
+      FREE(&myv->name);
+      FREE(&myv->value);
+      FREE(&myv);
+      return;
+    }
   }
 }
 
@@ -3218,8 +3218,10 @@ int mutt_command_complete(char *buffer, size_t len, int pos, int numtabs)
       memset(Completed, 0, sizeof(Completed));
       for (num = 0; MuttVars[num].name; num++)
         candidate(Completed, UserTyped, MuttVars[num].name, sizeof(Completed));
-      for (myv = MyVars; myv; myv = myv->next)
+      TAILQ_FOREACH(myv, &MyVars, entries)
+      {
         candidate(Completed, UserTyped, myv->name, sizeof(Completed));
+      }
       matches_ensure_morespace(NumMatched);
       Matches[NumMatched++] = UserTyped;
 
@@ -4308,11 +4310,13 @@ static int parse_unsubscribe_from(struct Buffer *b, struct Buffer *s,
 
 const char *myvar_get(const char *var)
 {
-  struct MyVar *cur = NULL;
+  struct MyVar *myv = NULL;
 
-  for (cur = MyVars; cur; cur = cur->next)
-    if (mutt_str_strcmp(cur->name, var) == 0)
-      return NONULL(cur->value);
+  TAILQ_FOREACH(myv, &MyVars, entries)
+  {
+    if (mutt_str_strcmp(myv->name, var) == 0)
+      return NONULL(myv->value);
+  }
 
   return NULL;
 }