]> granicus.if.org Git - neomutt/commitdiff
lib: move List and Queue into library
authorRichard Russon <rich@flatcap.org>
Sat, 21 Oct 2017 00:08:24 +0000 (01:08 +0100)
committerRichard Russon <rich@flatcap.org>
Tue, 24 Oct 2017 11:28:33 +0000 (12:28 +0100)
49 files changed:
Makefile.am
Makefile.autosetup
alias.c
attach.c
compose.c
copy.c
curs_main.c
envelope.c
envelope.h
globals.h
group.c
handler.c
hcache/Makefile.am
hcache/hcache.c
header.h
headers.c
hook.c
imap/imap.c
imap/imap_private.h
imap/message.c
imap/message.h
imap/util.c
init.c
lib/Makefile.am
lib/lib.h
lib/list.c [new file with mode: 0644]
lib/list.h [new file with mode: 0644]
lib/queue.h [moved from queue.h with 100% similarity]
list.h [deleted file]
main.c
mbox.c
mutt_curses.h
mutt_socket.h
mutt_tags.c
mutt_tags.h
muttlib.c
ncrypt/crypt_gpgme.c
ncrypt/crypt_mod.c
ncrypt/pgp.c
ncrypt/pgpinvoke.c
ncrypt/pgpkey.c
parse.c
pattern.c
po/POTFILES.in
postpone.c
remailer.c
send.c
sendlib.c
thread.c

index d3e125b41416a9b89b15df29f75757e7b122a08c..ee8c5975ec3e4d41a0e842da4495e5c1c06e8d4d 100644 (file)
@@ -48,7 +48,7 @@ neomutt_SOURCES = account.c addrbook.c address.h alias.c alias.h attach.c \
        curs_lib.c curs_main.c edit.c editmsg.c enter.c enter_state.h \
        envelope.c envelope.h filter.c flags.c format_flags.h from.c getdomain.c group.c \
        handler.c hdrline.c header.h headers.c help.c history.c hook.c \
-       init.c keymap.c list.h main.c mbox.c mbyte.c mbtable.h \
+       init.c keymap.c main.c mbox.c mbyte.c mbtable.h \
        menu.c mh.c muttlib.c mutt_idna.c mutt_sasl_plain.c mutt_socket.c \
        mutt_tunnel.c mx.c newsrc.c nntp.c options.h pager.c parameter.c parameter.h \
        parse.c pattern.c pattern.h pop.c pop_auth.c pop_lib.c postpone.c \
@@ -88,7 +88,7 @@ EXTRA_DIST = account.h attach.h bcache.h browser.h buffy.h \
        mutt_curses.h mutt_idna.h mutt_lua.h mutt_menu.h mutt_notmuch.h \
        mutt_options.h mutt_regex.h mutt_sasl.h mutt_sasl_plain.h \
        mutt_socket.h mutt_ssl.h mutt_tunnel.h mx.h myvar.h nntp.h opcodes.h pager.h \
-       pgpewrap.c pop.h protos.h queue.h README.md README.SSL remailer.c remailer.h \
+       pgpewrap.c pop.h protos.h README.md README.SSL remailer.c remailer.h \
        rfc1524.h rfc2047.h rfc2231.h rfc3676.h rfc822.h sidebar.h \
        sort.h txt2c.c txt2c.sh version.h mutt_tags.h
 
index e25eaab13cf5c5ee9573c983cea82475ceb268b4..f017c3f75fda545c0cbbbd31b39462493f43946a 100644 (file)
@@ -100,8 +100,8 @@ ALLOBJS+=   $(NEOMUTTOBJS)
 # libmutt
 LIBMUTT=       libmutt.a
 LIBMUTTOBJS=   lib/base64.o lib/buffer.o lib/date.o lib/debug.o lib/exit.o \
-               lib/file.o lib/hash.o lib/mapping.o lib/md5.o lib/memory.o \
-               lib/message.o lib/sha1.o lib/string.o
+               lib/file.o lib/hash.o lib/list.o lib/mapping.o lib/md5.o \
+               lib/memory.o lib/message.o lib/sha1.o lib/string.o
 CLEANFILES+=   $(LIBMUTT) $(LIBMUTTOBJS)
 MUTTLIBS+=     $(LIBMUTT)
 ALLOBJS+=      $(LIBMUTTOBJS)
@@ -248,13 +248,13 @@ git_ver.h: $(ALL_FILES)
        rm -f git_ver.h.tmp
 
 hcache/hcversion.h:    $(SRCDIR)/mutt.h $(SRCDIR)/address.h \
-                       $(SRCDIR)/list.h $(SRCDIR)/lib/buffer.h \
+                       $(SRCDIR)/lib/list.h $(SRCDIR)/lib/buffer.h \
                        $(SRCDIR)/parameter.h $(SRCDIR)/body.h \
                        $(SRCDIR)/envelope.h $(SRCDIR)/header.h \
                        $(SRCDIR)/hcache/hcachever.sh \
                        $(PWD)/hcache
        ( echo '#include "config.h"'; echo '#include "mutt.h"'; \
-       echo '#include "address.h"'; echo '#include "list.h"'; \
+       echo '#include "address.h"'; echo '#include "lib/list.h"'; \
        echo '#include "lib/buffer.h"'; echo '#include "parameter.h"'; \
        echo '#include "body.h"'; echo '#include "envelope.h"'; \
        echo '#include "header.h"';) | $(CPP) $(CFLAGS) - | \
diff --git a/alias.c b/alias.c
index af6dd73917ae04396717c6f1391e28c67acad81b..39bf695556f79f012713b92f523924227a3ef659 100644 (file)
--- a/alias.c
+++ b/alias.c
@@ -39,7 +39,6 @@
 #include "charset.h"
 #include "envelope.h"
 #include "globals.h"
-#include "list.h"
 #include "mutt_curses.h"
 #include "mutt_idna.h"
 #include "options.h"
index 47065f8e6eef08f87512b4ff25ad6dc0e57e7390..19a37ef932388fb0ae2250a082ca555e481e822b 100644 (file)
--- a/attach.c
+++ b/attach.c
@@ -37,7 +37,6 @@
 #include "filter.h"
 #include "globals.h"
 #include "header.h"
-#include "list.h"
 #include "mailbox.h"
 #include "mime.h"
 #include "mutt_curses.h"
index 07d5acc51c74d4fffde8cf717b290cbcf91778ae..4ac7c4e5a34c492b25788ec176cd734caaac15f3 100644 (file)
--- a/compose.c
+++ b/compose.c
@@ -44,7 +44,6 @@
 #include "globals.h"
 #include "header.h"
 #include "keymap.h"
-#include "list.h"
 #include "mailbox.h"
 #include "mime.h"
 #include "mutt_curses.h"
diff --git a/copy.c b/copy.c
index b59c957ed3a7e3728abf0f37d74574b5458cbe8e..e110f3e38ade3b5dab57a6dcdf79497711dfb77d 100644 (file)
--- a/copy.c
+++ b/copy.c
@@ -34,7 +34,6 @@
 #include "envelope.h"
 #include "globals.h"
 #include "header.h"
-#include "list.h"
 #include "mailbox.h"
 #include "mime.h"
 #include "mutt_curses.h"
index a0aba8f5649e868e10490a3dfec64f5aa58f5571..eb34ffb0ef7a6d624dd99c015dd6aa24c17e01bb 100644 (file)
@@ -42,7 +42,6 @@
 #include "globals.h"
 #include "header.h"
 #include "keymap.h"
-#include "list.h"
 #include "mailbox.h"
 #include "mutt_curses.h"
 #include "mutt_menu.h"
index 7001bcb80a06781670e33d1413149548ef5da50e..aa4c9539d24fbea9a78e957dabd04b4de9801fdd 100644 (file)
@@ -25,7 +25,7 @@
 #include "lib/buffer.h"
 #include "lib/memory.h"
 #include "envelope.h"
-#include "queue.h"
+#include "lib/queue.h"
 #include "rfc822.h"
 
 struct Envelope *mutt_new_envelope(void)
index e882f197d3bd3efedf7694814605ac0cebe367e5..e13f269cf0bac0bc2be5106b3069c6dc4e0c7f06 100644 (file)
@@ -24,7 +24,7 @@
 #define _MUTT_ENVELOPE_H
 
 #include <stdbool.h>
-#include "list.h"
+#include "lib/list.h"
 
 /**
  * struct Envelope - The header of an email
index c032afb90575f3592673d9dad45cd309f43be9e0..23421a15f8e7421209d42d4701cb872bb4fd9aac 100644 (file)
--- a/globals.h
+++ b/globals.h
@@ -25,7 +25,6 @@
 
 #include <signal.h>
 #include "lib/lib.h"
-#include "list.h"
 #include "where.h"
 #include "mutt_regex.h"
 
diff --git a/group.c b/group.c
index 462007c6e3c5960d8ecf55a54c6b0ef736ad4973..de83ae474c6febbdd02d9f706e81494074bf7f54 100644 (file)
--- a/group.c
+++ b/group.c
@@ -28,7 +28,6 @@
 #include "group.h"
 #include "address.h"
 #include "globals.h"
-#include "list.h"
 #include "protos.h"
 #include "rfc822.h"
 
index 91d940985c9651bb2d80b1dca2427e71a20424c4..f665e48730eeb5ac4172537fdef96192e23fb749 100644 (file)
--- a/handler.c
+++ b/handler.c
@@ -45,7 +45,6 @@
 #include "filter.h"
 #include "globals.h"
 #include "keymap.h"
-#include "list.h"
 #include "mime.h"
 #include "mutt_curses.h"
 #include "ncrypt/ncrypt.h"
index 4700d0e88b368a0cbe46549d9cecbfd8fced166d..ac3aefd20373ca7d0454e34342744b5fe0f755f8 100644 (file)
@@ -44,12 +44,12 @@ BUILT_SOURCES = $(HCVERSION)
 $(top_srcdir)/keymap_defs.h:
        +$(MAKE) -C $(top_srcdir) keymap_defs.h
 
-hcversion.h: $(top_srcdir)/mutt.h $(top_srcdir)/address.h $(top_srcdir)/list.h \
+hcversion.h: $(top_srcdir)/mutt.h $(top_srcdir)/address.h $(top_srcdir)/lib/list.h \
                $(top_srcdir)/lib/buffer.h $(top_srcdir)/parameter.h \
                $(top_srcdir)/body.h $(top_srcdir)/envelope.h \
                $(top_srcdir)/header.h $(srcdir)/hcachever.sh
        ( echo '#include "config.h"'; echo '#include "mutt.h"'; \
-       echo '#include "address.h"'; echo '#include "list.h"'; \
+       echo '#include "address.h"'; echo '#include "lib/list.h"'; \
        echo '#include "lib/buffer.h"'; echo '#include "parameter.h"'; \
        echo '#include "body.h"'; echo '#include "envelope.h"'; \
        echo '#include "header.h"'; \
index 643759fc0dad3668ea1da80ae22262e8e6982f57..0981504062c40a726cf4f932eaba92b5eed57cba 100644 (file)
@@ -57,7 +57,6 @@
 #include "hcache.h"
 #include "hcache/hcversion.h"
 #include "header.h"
-#include "list.h"
 #include "mbyte.h"
 #include "mutt_regex.h"
 #include "mutt_tags.h"
index 75c2df138e96e1ba5b1767d488abf81fd3f4fdf7..981975d62771efb5a2e0939b53d65d95be99806b 100644 (file)
--- a/header.h
+++ b/header.h
@@ -27,7 +27,6 @@
 #include <stdbool.h>
 #include <time.h>
 #include "lib/lib.h"
-#include "list.h"
 #include "mutt_tags.h"
 
 /**
index b315a0ebca75b491bbf18da88302b55d01738271..2418c3cd2aa6f67df910e24ba19cb7228262d66e 100644 (file)
--- a/headers.c
+++ b/headers.c
@@ -36,7 +36,6 @@
 #include "envelope.h"
 #include "globals.h"
 #include "header.h"
-#include "list.h"
 #include "mutt_idna.h"
 #include "ncrypt/ncrypt.h"
 #include "options.h"
diff --git a/hook.c b/hook.c
index bd68bace5022ebe1bf404bda7713630a8ecde728..a4f4c8f6c3175874065a81b867bf909d9420ad6d 100644 (file)
--- a/hook.c
+++ b/hook.c
@@ -35,7 +35,6 @@
 #include "envelope.h"
 #include "globals.h"
 #include "header.h"
-#include "list.h"
 #include "mailbox.h"
 #include "mutt_regex.h"
 #include "ncrypt/ncrypt.h"
index 6f5249a6d99d53bddc764916f86f3e720947cd27..c17bd6076c871a578608e83c4146e6cbe133098b 100644 (file)
@@ -46,7 +46,6 @@
 #include "globals.h"
 #include "header.h"
 #include "imap/imap.h"
-#include "list.h"
 #include "mailbox.h"
 #include "message.h"
 #include "mutt_curses.h"
index ad4bf0bc1ab85726598ab4d9474a24e7d6c8d894..7a01ba43de5828fe837d1734a24c62b5d5f031a0 100644 (file)
 #include <stdbool.h>
 #include <stdio.h>
 #include <time.h>
+#include "lib/list.h"
 #ifdef USE_HCACHE
 #include "hcache/hcache.h"
 #endif
-#include "list.h"
 
 struct Account;
 struct Buffer;
index b27de41995edeb024f4c2336cffd9bf15d1bad33..1b35fa8f9971e1f3e50e2585c23f7e43b9ae8b60 100644 (file)
@@ -42,7 +42,6 @@
 #include "globals.h"
 #include "header.h"
 #include "imap/imap.h"
-#include "list.h"
 #include "mailbox.h"
 #include "mutt_curses.h"
 #include "mutt_socket.h"
index 231cab28970b61ec8f3022f1eab5f69cf98959a3..e6c963668d763a497dfbe9c2d50356e1985aa3ee 100644 (file)
@@ -26,7 +26,7 @@
 
 #include <stdbool.h>
 #include <time.h>
-#include "list.h"
+#include "lib/list.h"
 
 /**
  * struct ImapHeaderData - IMAP-specific header data
index edfde0ed017abd3383f9be1eaafb46e3078e8127..0059026711b66ac63d613e1a05b47dbaa92d3764 100644 (file)
@@ -45,7 +45,6 @@
 #include "globals.h"
 #include "header.h"
 #include "imap/imap.h"
-#include "list.h"
 #include "mailbox.h"
 #include "message.h"
 #include "mutt_socket.h"
diff --git a/init.c b/init.c
index 66355e58b5fe61ddcd32cd8a7c9a6d12c425f0ec..3f5a166e57d954742ac42abddf187c752dc9a736 100644 (file)
--- a/init.c
+++ b/init.c
@@ -51,7 +51,6 @@
 #include "header.h"
 #include "history.h"
 #include "keymap.h"
-#include "list.h"
 #include "mailbox.h"
 #include "mbtable.h"
 #include "mbyte.h"
index ac7658a9c57f38be317f14db1dcef8332a6cbe94..e6522cdeb93a7de574a2cdfc546268938c80bb4c 100644 (file)
@@ -3,11 +3,11 @@ include $(top_srcdir)/flymake.am
 
 AUTOMAKE_OPTIONS = 1.6 foreign
 
-EXTRA_DIST = lib.h base64.h buffer.h date.h debug.h exit.h file.h hash.h mapping.h md5.h memory.h message.h sha1.h string2.h
+EXTRA_DIST = lib.h base64.h buffer.h date.h debug.h exit.h file.h hash.h list.h mapping.h md5.h memory.h message.h queue.h sha1.h string2.h
 
 AM_CPPFLAGS = -I$(top_srcdir)
 
 noinst_LIBRARIES = libmutt.a
 
-libmutt_a_SOURCES = base64.c buffer.c date.c debug.c exit.c file.c hash.c mapping.c md5.c memory.c message.c sha1.c string.c
+libmutt_a_SOURCES = base64.c buffer.c date.c debug.c exit.c file.c hash.c list.c mapping.c md5.c memory.c message.c sha1.c string.c
 
index 4f47709f338eef39dd3dee89247060bb75603fc4..e6e32f025093d3d0042ac89f5f2e489d5ed06c4f 100644 (file)
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -35,6 +35,7 @@
  * -# @subpage exit
  * -# @subpage file
  * -# @subpage hash
+ * -# @subpage list
  * -# @subpage mapping
  * -# @subpage md5
  * -# @subpage memory
@@ -53,6 +54,7 @@
 #include "exit.h"
 #include "file.h"
 #include "hash.h"
+#include "list.h"
 #include "mapping.h"
 #include "md5.h"
 #include "memory.h"
diff --git a/lib/list.c b/lib/list.c
new file mode 100644 (file)
index 0000000..b1c5f3d
--- /dev/null
@@ -0,0 +1,165 @@
+/**
+ * @file
+ * Singly-linked list type
+ *
+ * @authors
+ * Copyright (C) 2017 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2017 Pietro Cerutti <gahr@gahr.ch>
+ *
+ * @copyright
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 2 of the License, or (at your option) any later
+ * version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @page list Singly-linked list type
+ *
+ * Singly-linked list of strings.
+ *
+ * | Function                 | Description
+ * | :----------------------- | :-----------------------------------------
+ * | mutt_list_clear()        | Free a list, but NOT its strings
+ * | mutt_list_find()         | Find a string in a List
+ * | mutt_list_free()         | Free a List AND its strings
+ * | mutt_list_insert_after() | Insert a string after a given ListNode
+ * | mutt_list_insert_head()  | Insert a string at the beginning of a List
+ * | mutt_list_insert_tail()  | Append a string to the end of a List
+ * | mutt_list_match()        | Is the string in the list (see notes)
+ */
+
+#include "config.h"
+#include "list.h"
+#include "memory.h"
+#include "string2.h"
+
+/**
+ * mutt_list_insert_head - Insert a string at the beginning of a List
+ * @param h Head of the List
+ * @param s String to insert
+ * @retval ptr Newly inserted ListNode containing the string
+ */
+struct ListNode *mutt_list_insert_head(struct ListHead *h, char *s)
+{
+  struct ListNode *np = safe_calloc(1, sizeof(struct ListNode));
+  np->data = s;
+  STAILQ_INSERT_HEAD(h, np, entries);
+  return np;
+}
+
+/**
+ * mutt_list_insert_tail - Append a string to the end of a List
+ * @param h Head of the List
+ * @param s String to insert
+ * @retval ptr Newly appended ListNode containing the string
+ */
+struct ListNode *mutt_list_insert_tail(struct ListHead *h, char *s)
+{
+  struct ListNode *np = safe_calloc(1, sizeof(struct ListNode));
+  np->data = s;
+  STAILQ_INSERT_TAIL(h, np, entries);
+  return np;
+}
+
+/**
+ * mutt_list_insert_after - Insert a string after a given ListNode
+ * @param h Head of the List
+ * @parem n ListNode after which the string will be inserted
+ * @param s String to insert
+ * @retval ptr Newly created ListNode containing the string
+ */
+struct ListNode *mutt_list_insert_after(struct ListHead *h, struct ListNode *n, char *s)
+{
+  struct ListNode *np = safe_calloc(1, sizeof(struct ListNode));
+  np->data = s;
+  STAILQ_INSERT_AFTER(h, n, np, entries);
+  return np;
+}
+
+/**
+ * mutt_list_find - Find a string in a List
+ * @param h Head of the List
+ * @param s String to find
+ * @retval ptr ListNode containing the string
+ * @retval NULL if the string isn't found
+ */
+struct ListNode *mutt_list_find(struct ListHead *h, const char *data)
+{
+  struct ListNode *np;
+  STAILQ_FOREACH(np, h, entries)
+  {
+    if (np->data == data || mutt_strcmp(np->data, data) == 0)
+    {
+      return np;
+    }
+  }
+  return NULL;
+}
+
+/**
+ * mutt_list_free - Free a List AND its strings
+ * @param h Head of the List
+ */
+void mutt_list_free(struct ListHead *h)
+{
+  struct ListNode *np = STAILQ_FIRST(h), *next = NULL;
+  while (np)
+  {
+    next = STAILQ_NEXT(np, entries);
+    FREE(&np->data);
+    FREE(&np);
+    np = next;
+  }
+  STAILQ_INIT(h);
+}
+
+/**
+ * mutt_list_clear - Free a list, but NOT its strings
+ * @param h Head of the List
+ *
+ * This can be used when the strings have a different lifetime to the List.
+ */
+void mutt_list_clear(struct ListHead *h)
+{
+  struct ListNode *np = STAILQ_FIRST(h), *next = NULL;
+  while (np)
+  {
+    next = STAILQ_NEXT(np, entries);
+    FREE(&np);
+    np = next;
+  }
+  STAILQ_INIT(h);
+}
+
+/**
+ * mutt_list_match - Is the string in the list (see notes)
+ * @param s String to match
+ * @param h Head of the List
+ * @return true String matches a List item (or List contains "*")
+ *
+ * This is a very specific function.  It searches a List of strings looking for
+ * a match.  If the list contains a string "*", then it match any input string.
+ *
+ * @note The strings are compared to the length of the List item, e.g.
+ *       List: "Red" matches Param: "Redwood", but not the other way around.
+ * @note The case of the strings is ignored.
+ */
+bool mutt_list_match(const char *s, struct ListHead *h)
+{
+  struct ListNode *np;
+  STAILQ_FOREACH(np, h, entries)
+  {
+    if ((*np->data == '*') || (mutt_strncasecmp(s, np->data, strlen(np->data)) == 0))
+      return true;
+  }
+  return false;
+}
diff --git a/lib/list.h b/lib/list.h
new file mode 100644 (file)
index 0000000..c566538
--- /dev/null
@@ -0,0 +1,56 @@
+/**
+ * @file
+ * Singly-linked list type
+ *
+ * @authors
+ * Copyright (C) 2017 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2017 Pietro Cerutti <gahr@gahr.ch>
+ *
+ * @copyright
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 2 of the License, or (at your option) any later
+ * version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _LIB_LIST_H
+#define _LIB_LIST_H
+
+#include <string.h>
+#include <stdbool.h>
+#include "lib/queue.h"
+
+/**
+ * struct ListNode - A List node for strings
+ */
+struct ListNode
+{
+    char *data;
+    STAILQ_ENTRY(ListNode) entries;
+};
+
+/**
+ * struct ListHead - A generic list of strings
+ *
+ * The List is stored as a STAILQ.
+ * This means that insertions are quick at the head and tail of the list.
+ */
+STAILQ_HEAD(ListHead, ListNode);
+
+void             mutt_list_clear(struct ListHead *h);
+struct ListNode *mutt_list_find(struct ListHead *h, const char *data);
+void             mutt_list_free(struct ListHead *h);
+struct ListNode *mutt_list_insert_after(struct ListHead *h, struct ListNode *n, char *s);
+struct ListNode *mutt_list_insert_head(struct ListHead *h, char *s);
+struct ListNode *mutt_list_insert_tail(struct ListHead *h, char *s);
+bool             mutt_list_match(const char *s, struct ListHead *h);
+
+#endif /* _LIB_LIST_H */
similarity index 100%
rename from queue.h
rename to lib/queue.h
diff --git a/list.h b/list.h
deleted file mode 100644 (file)
index 774f3b0..0000000
--- a/list.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/**
- * @file
- * Singly-linked list type
- *
- * @authors
- * Copyright (C) 2017 Richard Russon <rich@flatcap.org>
- *
- * @copyright
- * This program is free software: you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation, either version 2 of the License, or (at your option) any later
- * version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef _MUTT_LIST_H
-#define _MUTT_LIST_H
-
-#include <string.h>
-#include "lib/lib.h"
-
-/**
- * New implementation using macros from queue.h
- */
-
-#include "queue.h"
-
-/**
- * struct ListNode - A generic List node
- */
-struct ListNode
-{
-    char *data;
-    STAILQ_ENTRY(ListNode) entries;
-};
-STAILQ_HEAD(ListHead, ListNode);
-
-static inline struct ListNode* mutt_list_insert_head(struct ListHead *h,
-                                                     char *s)
-{
-  struct ListNode *np = safe_calloc(1, sizeof(struct ListNode));
-  np->data = s;
-  STAILQ_INSERT_HEAD(h, np, entries);
-  return np;
-}
-
-static inline struct ListNode* mutt_list_insert_tail(struct ListHead *h,
-                                                     char *s)
-{
-  struct ListNode *np = safe_calloc(1, sizeof(struct ListNode));
-  np->data = s;
-  STAILQ_INSERT_TAIL(h, np, entries);
-  return np;
-}
-
-static inline struct ListNode* mutt_list_insert_after(struct ListHead *h,
-                                                      struct ListNode *n,
-                                                      char *s)
-{
-  struct ListNode *np = safe_calloc(1, sizeof(struct ListNode));
-  np->data = s;
-  STAILQ_INSERT_AFTER(h, n, np, entries);
-  return np;
-}
-
-static inline struct ListNode *mutt_list_find(struct ListHead *h,
-                                              const char *data)
-{
-  struct ListNode *np;
-  STAILQ_FOREACH(np, h, entries)
-  {
-    if (np->data == data || mutt_strcmp(np->data, data) == 0)
-    {
-      return np;
-    }
-  }
-  return NULL;
-}
-
-static inline void mutt_list_free(struct ListHead *h)
-{
-  struct ListNode *np = STAILQ_FIRST(h), *next = NULL;
-  while (np)
-  {
-      next = STAILQ_NEXT(np, entries);
-      FREE(&np->data);
-      FREE(&np);
-      np = next;
-  }
-  STAILQ_INIT(h);
-}
-
-static inline void mutt_list_clear(struct ListHead *h)
-{
-  struct ListNode *np = STAILQ_FIRST(h), *next = NULL;
-  while (np)
-  {
-      next = STAILQ_NEXT(np, entries);
-      FREE(&np);
-      np = next;
-  }
-  STAILQ_INIT(h);
-}
-
-/**
- * mutt_list_match - Is the string in the list
- * @return true if the header contained in "s" is in list "h"
- */
-static inline bool mutt_list_match(const char *s, struct ListHead *h)
-{
-  struct ListNode *np;
-  STAILQ_FOREACH(np, h, entries)
-  {
-    if (*np->data == '*' || mutt_strncasecmp(s, np->data, strlen(np->data)) == 0)
-      return true;
-  }
-  return false;
-}
-
-#endif /* _MUTT_LIST_H */
diff --git a/main.c b/main.c
index d3426414b4b09d6c01b04356054e1cf1bfdeb915..fc8e6a0116e3f79da3249b2355dd9b10703891c8 100644 (file)
--- a/main.c
+++ b/main.c
@@ -47,7 +47,6 @@
 #include "globals.h"
 #include "header.h"
 #include "keymap.h"
-#include "list.h"
 #include "mailbox.h"
 #include "mutt_curses.h"
 #include "mutt_idna.h"
diff --git a/mbox.c b/mbox.c
index ca1ae5694d3cae2cb994c42496945f6ba9d310ad..40245b7fcdd5661b89fdebfb30a72ab588b8da9b 100644 (file)
--- a/mbox.c
+++ b/mbox.c
@@ -42,7 +42,6 @@
 #include "envelope.h"
 #include "globals.h"
 #include "header.h"
-#include "list.h"
 #include "mailbox.h"
 #include "mutt_curses.h"
 #include "mx.h"
index 545f037fbf02cf4b7a980fd1a0b4955784f45d94..b0bb13d65e170f1d4230e0389a1f0f8ef45ce180 100644 (file)
@@ -27,7 +27,7 @@
 #include <regex.h>
 #include "lib/lib.h"
 #include "options.h"
-#include "queue.h"
+#include "lib/queue.h"
 
 #ifdef USE_SLANG_CURSES
 
index c770a9bfb964f4ef6b988378a172d1f27dd405f6..e766f5eb7be376fc490473bd498fc772b599c7b2 100644 (file)
@@ -26,7 +26,6 @@
 
 #include <stddef.h>
 #include "account.h"
-#include "list.h"
 #include "lib/lib.h"
 
 /* logging levels */
index 2a61417be1f6dc5adb1e959fb9798c2a576c64f4..29cc4386a9b19248a5929227ad35f645a72fcd99 100644 (file)
@@ -27,7 +27,7 @@
 #include "lib/string2.h"
 #include "globals.h"
 #include "mutt_tags.h"
-#include "queue.h"
+#include "lib/queue.h"
 
 /**
  * driver_tags_free - Free tags from a header
index ef840364bea405b0a601a357fdc94f80753335c9..02d483fd4608ae74144066fdbf0782825aa34251 100644 (file)
@@ -25,7 +25,7 @@
 
 #include <stdbool.h>
 #include <stddef.h>
-#include "queue.h"
+#include "lib/queue.h"
 
 /**
  * struct TagNode - LinkedList Tag Element
index 863352a24134a25c8b396cdae896dea7c96e0049..2a1e4c79e4772fc00c6c2969b065cdde3714bbd1 100644 (file)
--- a/muttlib.c
+++ b/muttlib.c
@@ -55,7 +55,6 @@
 #include "format_flags.h"
 #include "globals.h"
 #include "header.h"
-#include "list.h"
 #include "mailbox.h"
 #include "mime.h"
 #include "mutt_curses.h"
index 4511065e88406304a1abe3da3e124272c8d7e9e1..f0d2f289d9522bebcdd595a6077a0596b6dee939 100644 (file)
@@ -57,7 +57,6 @@
 #include "globals.h"
 #include "header.h"
 #include "keymap.h"
-#include "list.h"
 #include "mime.h"
 #include "mutt_curses.h"
 #include "mutt_menu.h"
index 0ad9c2aaa35c5d376b7e24e394ff209472ee4724..d59133c304d4fa00772b2647d293ff5d38ec3cb2 100644 (file)
@@ -23,7 +23,7 @@
 #include "config.h"
 #include "lib/lib.h"
 #include "crypt_mod.h"
-#include "queue.h"
+#include "lib/queue.h"
 
 /**
  * struct CryptModule - A crypto plugin module
index 4900d52875d9196a5f64ada744609c43ddb25dd0..5720830f8983bdd7b51f4cd93a67931afb80aa7a 100644 (file)
@@ -53,7 +53,6 @@
 #include "filter.h"
 #include "globals.h"
 #include "header.h"
-#include "list.h"
 #include "mime.h"
 #include "mutt_curses.h"
 #include "mutt_regex.h"
index f03bb3349e9f632ebb97ef7efeb972074f19f271..0ab8f6b3848a7b5cf8075916bde07d9fee32e4da 100644 (file)
@@ -35,7 +35,6 @@
 #include "filter.h"
 #include "format_flags.h"
 #include "globals.h"
-#include "list.h"
 #include "mutt_curses.h"
 #include "mutt_idna.h"
 #include "ncrypt.h"
index c7a3d45c33aeb35f89c5f555fbffbed4c57e6264..8aeebc386b4fc894490edbe7c9c5b944f1d83b26 100644 (file)
@@ -43,7 +43,6 @@
 #include "globals.h"
 #include "gnupgparse.h"
 #include "keymap.h"
-#include "list.h"
 #include "mime.h"
 #include "mutt_curses.h"
 #include "mutt_menu.h"
diff --git a/parse.c b/parse.c
index 4a0d318597e0e45cae7a580d74632c206e106dab..f2de884955864f7f452031712cdf064f936e30c8 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -35,7 +35,6 @@
 #include "envelope.h"
 #include "globals.h"
 #include "header.h"
-#include "list.h"
 #include "mailbox.h"
 #include "mime.h"
 #include "mutt_regex.h"
index 4f24abbf537988bd391c202c72fdb4f6b63ea945..dbf6c028c8b5a9ee66513e72e47867066c5d9458 100644 (file)
--- a/pattern.c
+++ b/pattern.c
@@ -48,7 +48,6 @@
 #include "globals.h"
 #include "group.h"
 #include "header.h"
-#include "list.h"
 #include "mailbox.h"
 #include "mutt_curses.h"
 #include "mutt_menu.h"
index 73ea469b833aa72681a330b66ca9f3d4b263fab8..93362aad332c622acdf75a74e826f6656a31cb4f 100644 (file)
@@ -63,6 +63,7 @@ lib/debug.c
 lib/exit.c
 lib/file.c
 lib/hash.c
+lib/list.c
 lib/md5.c
 lib/memory.c
 lib/message.c
index 43be8d68c08d2b093e49bdb1598d549feb96a8c5..8be27c2e763551c4de63f3783ea3824859559056 100644 (file)
@@ -38,7 +38,6 @@
 #include "globals.h"
 #include "header.h"
 #include "keymap.h"
-#include "list.h"
 #include "mailbox.h"
 #include "mime.h"
 #include "mutt_menu.h"
index e554202371baf39d51d801e88a80254e58a96349..c366d42779dd661e9a02ea9f593da9401fc4adeb 100644 (file)
@@ -40,7 +40,6 @@
 #include "globals.h"
 #include "header.h"
 #include "keymap.h"
-#include "list.h"
 #include "mutt_curses.h"
 #include "mutt_menu.h"
 #include "opcodes.h"
diff --git a/send.c b/send.c
index 17355e73e3b391f7b26288bcf45e24bbd264b16d..41bd0ec0015bbadd38f7d1789f72481359a860a1 100644 (file)
--- a/send.c
+++ b/send.c
@@ -43,7 +43,6 @@
 #include "filter.h"
 #include "globals.h"
 #include "header.h"
-#include "list.h"
 #include "mailbox.h"
 #include "mime.h"
 #include "mutt_curses.h"
index 75470972ae92e199e750d83a0c7717b35e1518ad..ab0d8c11696a5a2a1ae732283cd35b5e4ab05491 100644 (file)
--- a/sendlib.c
+++ b/sendlib.c
@@ -52,7 +52,6 @@
 #include "format_flags.h"
 #include "globals.h"
 #include "header.h"
-#include "list.h"
 #include "mailbox.h"
 #include "mime.h"
 #include "mutt_curses.h"
index 66a8b36930c4851dcf806cb7794334d1a4332d1f..ac41fc673e68ee1a73bc13d2ff00cafe2d15a810 100644 (file)
--- a/thread.c
+++ b/thread.c
@@ -33,7 +33,6 @@
 #include "envelope.h"
 #include "globals.h"
 #include "header.h"
-#include "list.h"
 #include "options.h"
 #include "protos.h"
 #include "sort.h"