the tree_* and dict_* api's in smtpd can be used standalone, do not have
authorgilles <gilles@openbsd.org>
Sun, 23 Dec 2018 16:06:24 +0000 (16:06 +0000)
committergilles <gilles@openbsd.org>
Sun, 23 Dec 2018 16:06:24 +0000 (16:06 +0000)
them depend on smtpd.h, it makes it hard to reuse them elsewhere

ok eric@

usr.sbin/smtpd/dict.c
usr.sbin/smtpd/dict.h [new file with mode: 0644]
usr.sbin/smtpd/smtpd-api.h
usr.sbin/smtpd/tree.c
usr.sbin/smtpd/tree.h [new file with mode: 0644]

index 2d65812..91156d5 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: dict.c,v 1.5 2015/01/20 17:37:54 deraadt Exp $        */
+/*     $OpenBSD: dict.c,v 1.6 2018/12/23 16:06:24 gilles Exp $ */
 
 /*
  * Copyright (c) 2012 Gilles Chehade <gilles@poolp.org>
 #include <sys/types.h>
 #include <sys/tree.h>
 
-#include <sys/socket.h>        /* for smtpd.h */
-#include <sys/queue.h> /* for smtpd.h */
-#include <stdio.h>     /* for smtpd.h */
-#include <imsg.h>      /* for smtpd.h */
-
 #include <err.h>
 #include <stdlib.h>
 #include <string.h>
 #include <limits.h>
 
-#include "smtpd.h"
+#include "dict.h"
 
 struct dictentry {
        SPLAY_ENTRY(dictentry)  entry;
diff --git a/usr.sbin/smtpd/dict.h b/usr.sbin/smtpd/dict.h
new file mode 100644 (file)
index 0000000..c5d47e1
--- /dev/null
@@ -0,0 +1,48 @@
+/*     $OpenBSD: dict.h,v 1.1 2018/12/23 16:06:24 gilles Exp $ */
+
+/*
+ * Copyright (c) 2013 Eric Faurot <eric@openbsd.org>
+ * Copyright (c) 2011 Gilles Chehade <gilles@poolp.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef        _DICT_H_
+#define        _DICT_H_
+
+SPLAY_HEAD(_dict, dictentry);
+
+struct dict {
+       struct _dict    dict;
+       size_t          count;
+};
+
+
+/* dict.c */
+#define dict_init(d) do { SPLAY_INIT(&((d)->dict)); (d)->count = 0; } while(0)
+#define dict_empty(d) SPLAY_EMPTY(&((d)->dict))
+#define dict_count(d) ((d)->count)
+int dict_check(struct dict *, const char *);
+void *dict_set(struct dict *, const char *, void *);
+void dict_xset(struct dict *, const char *, void *);
+void *dict_get(struct dict *, const char *);
+void *dict_xget(struct dict *, const char *);
+void *dict_pop(struct dict *, const char *);
+void *dict_xpop(struct dict *, const char *);
+int dict_poproot(struct dict *, void **);
+int dict_root(struct dict *, const char **, void **);
+int dict_iter(struct dict *, void **, const char **, void **);
+int dict_iterfrom(struct dict *, void **, const char *, const char **, void **);
+void dict_merge(struct dict *, struct dict *);
+
+#endif
index 00f6207..f83edd0 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: smtpd-api.h,v 1.35 2018/11/01 10:47:46 gilles Exp $   */
+/*     $OpenBSD: smtpd-api.h,v 1.36 2018/12/23 16:06:24 gilles Exp $   */
 
 /*
  * Copyright (c) 2013 Eric Faurot <eric@openbsd.org>
 #ifndef        _SMTPD_API_H_
 #define        _SMTPD_API_H_
 
+#include "dict.h"
+#include "tree.h"
+
 struct mailaddr {
        char    user[SMTPD_MAXLOCALPARTSIZE];
        char    domain[SMTPD_MAXDOMAINPARTSIZE];
 };
 
-SPLAY_HEAD(_dict, dictentry);
-SPLAY_HEAD(_tree, treeentry);
-
-struct tree {
-       struct _tree    tree;
-       size_t          count;
-};
-
-struct dict {
-       struct _dict    dict;
-       size_t          count;
-};
-
 #define PROC_QUEUE_API_VERSION 2
 
 enum {
@@ -244,23 +234,6 @@ msgid_to_evpid(uint32_t msgid)
         return ((uint64_t)msgid << 32);
 }
 
-/* dict.c */
-#define dict_init(d) do { SPLAY_INIT(&((d)->dict)); (d)->count = 0; } while(0)
-#define dict_empty(d) SPLAY_EMPTY(&((d)->dict))
-#define dict_count(d) ((d)->count)
-int dict_check(struct dict *, const char *);
-void *dict_set(struct dict *, const char *, void *);
-void dict_xset(struct dict *, const char *, void *);
-void *dict_get(struct dict *, const char *);
-void *dict_xget(struct dict *, const char *);
-void *dict_pop(struct dict *, const char *);
-void *dict_xpop(struct dict *, const char *);
-int dict_poproot(struct dict *, void **);
-int dict_root(struct dict *, const char **, void **);
-int dict_iter(struct dict *, void **, const char **, void **);
-int dict_iterfrom(struct dict *, void **, const char *, const char **, void **);
-void dict_merge(struct dict *, struct dict *);
-
 
 /* esc.c */
 const char *esc_code(enum enhanced_status_class, enum enhanced_status_code);
@@ -314,21 +287,4 @@ void table_api_on_fetch(int(*)(int, struct dict *, char *, size_t));
 int table_api_dispatch(void);
 const char *table_api_get_name(void);
 
-/* tree.c */
-#define tree_init(t) do { SPLAY_INIT(&((t)->tree)); (t)->count = 0; } while(0)
-#define tree_empty(t) SPLAY_EMPTY(&((t)->tree))
-#define tree_count(t) ((t)->count)
-int tree_check(struct tree *, uint64_t);
-void *tree_set(struct tree *, uint64_t, void *);
-void tree_xset(struct tree *, uint64_t, void *);
-void *tree_get(struct tree *, uint64_t);
-void *tree_xget(struct tree *, uint64_t);
-void *tree_pop(struct tree *, uint64_t);
-void *tree_xpop(struct tree *, uint64_t);
-int tree_poproot(struct tree *, uint64_t *, void **);
-int tree_root(struct tree *, uint64_t *, void **);
-int tree_iter(struct tree *, void **, uint64_t *, void **);
-int tree_iterfrom(struct tree *, void **, uint64_t, uint64_t *, void **);
-void tree_merge(struct tree *, struct tree *);
-
 #endif
index 2022eba..70aef04 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: tree.c,v 1.5 2015/01/20 17:37:54 deraadt Exp $        */
+/*     $OpenBSD: tree.c,v 1.6 2018/12/23 16:06:24 gilles Exp $ */
 
 /*
  * Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
 #include <sys/types.h>
 #include <sys/tree.h>
 
-#include <sys/socket.h>        /* for smtpd.h */
-#include <sys/queue.h> /* for smtpd.h */
-#include <stdio.h>     /* for smtpd.h */
-#include <imsg.h>      /* for smtpd.h */
-
 #include <err.h>
 #include <inttypes.h>
 #include <stdlib.h>
 #include <limits.h>
 
-#include "smtpd.h"
+#include "tree.h"
 
 struct treeentry {
        SPLAY_ENTRY(treeentry)   entry;
diff --git a/usr.sbin/smtpd/tree.h b/usr.sbin/smtpd/tree.h
new file mode 100644 (file)
index 0000000..3d719f0
--- /dev/null
@@ -0,0 +1,48 @@
+/*     $OpenBSD: tree.h,v 1.1 2018/12/23 16:06:24 gilles Exp $ */
+
+/*
+ * Copyright (c) 2013 Eric Faurot <eric@openbsd.org>
+ * Copyright (c) 2011 Gilles Chehade <gilles@poolp.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef        _TREE_H_
+#define        _TREE_H_
+
+SPLAY_HEAD(_tree, treeentry);
+
+struct tree {
+       struct _tree    tree;
+       size_t          count;
+};
+
+
+/* tree.c */
+#define tree_init(t) do { SPLAY_INIT(&((t)->tree)); (t)->count = 0; } while(0)
+#define tree_empty(t) SPLAY_EMPTY(&((t)->tree))
+#define tree_count(t) ((t)->count)
+int tree_check(struct tree *, uint64_t);
+void *tree_set(struct tree *, uint64_t, void *);
+void tree_xset(struct tree *, uint64_t, void *);
+void *tree_get(struct tree *, uint64_t);
+void *tree_xget(struct tree *, uint64_t);
+void *tree_pop(struct tree *, uint64_t);
+void *tree_xpop(struct tree *, uint64_t);
+int tree_poproot(struct tree *, uint64_t *, void **);
+int tree_root(struct tree *, uint64_t *, void **);
+int tree_iter(struct tree *, void **, uint64_t *, void **);
+int tree_iterfrom(struct tree *, void **, uint64_t, uint64_t *, void **);
+void tree_merge(struct tree *, struct tree *);
+
+#endif