This avoids installing list.h to system.

Signed-off-by: MORITA Kazutaka <[email protected]>
---
 include/accord.h  |    3 ---
 libacrd/libacrd.c |   21 ++++++++++++++++-----
 test/test-aio.c   |    1 +
 test/test-io.c    |    1 +
 test/test-txn.c   |    1 +
 test/test-watch.c |    1 +
 6 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/include/accord.h b/include/accord.h
index 0861f49..72f250c 100644
--- a/include/accord.h
+++ b/include/accord.h
@@ -2,7 +2,6 @@
 #define __ACCORD_H__
 
 #include "proto.h"
-#include "list.h"
 #include "net.h"
 
 struct acrd_handle;
@@ -50,8 +49,6 @@ struct acrd_watch_info {
        acrd_watch_cb_t cb;
        uint32_t id;
        uint32_t mask;
-
-       struct list_head list;
 };
 
 struct acrd_aiocb {
diff --git a/libacrd/libacrd.c b/libacrd/libacrd.c
index 4015ade..a99c680 100644
--- a/libacrd/libacrd.c
+++ b/libacrd/libacrd.c
@@ -113,6 +113,12 @@ struct acrd_tx {
        struct acrd_read_info *read_info;
 };
 
+struct acrd_watch {
+       struct acrd_watch_info info;
+
+       struct list_head list;
+};
+
 static void set_request_info(struct acrd_req *req, int opcode, uint32_t flags)
 {
        req->type = ACRD_MSG_REQUEST;
@@ -262,6 +268,7 @@ static int acrd_aio_completion(struct acrd_handle *ah, 
struct acrd_rsp *rsp)
 
 static int acrd_ntfy_completion(struct acrd_handle *ah, struct acrd_ntfy *ntfy)
 {
+       struct acrd_watch *w;
        struct acrd_watch_info *wi;
        const struct acrd_arg *id_arg, *list_arg;
        const struct acrd_arg *path_arg, *data_arg;
@@ -292,7 +299,8 @@ static int acrd_ntfy_completion(struct acrd_handle *ah, 
struct acrd_ntfy *ntfy)
                                     nodeid, ah->ctx);
                break;
        default:
-               list_for_each_entry(wi, &ah->watch_list, list) {
+               list_for_each_entry(w, &ah->watch_list, list) {
+                       wi = &w->info;
                        if (wi->id == ntfy->id)  {
                                wi->path = path_arg->data;
                                wi->events = ntfy->events;
@@ -824,13 +832,15 @@ struct acrd_watch_info *acrd_add_watch(struct acrd_handle 
*h, const char *path,
                                     uint32_t mask, acrd_watch_cb_t cb, void 
*arg)
 {
        int ret;
+       struct acrd_watch *w;
        struct acrd_watch_info *wi;
 
-       wi = zalloc(sizeof(*wi));
-       if (unlikely(!wi)) {
+       w = zalloc(sizeof(*w));
+       if (unlikely(!w)) {
                eprintf("oom\n");
                return NULL;
        }
+       wi = &w->info;
        wi->handle = h;
        wi->cb = cb;
        wi->mask = mask;
@@ -842,19 +852,20 @@ struct acrd_watch_info *acrd_add_watch(struct acrd_handle 
*h, const char *path,
                free(wi);
                return NULL;
        }
-       list_add(&wi->list, &h->watch_list);
+       list_add(&w->list, &h->watch_list);
 
        return wi;
 }
 
 int acrd_rm_watch(struct acrd_handle *h, struct acrd_watch_info *wi)
 {
+       struct acrd_watch *w = container_of(wi, struct acrd_watch, info);
        int ret;
 
        ret = acrd_op(h, NULL, ACRD_OP_RM_WATCH, &wi->id, sizeof(wi->id),
                     NULL, 0, 0, 0, 0, NULL, NULL, NULL);
        if (ret == ACRD_SUCCESS)
-               list_del(&wi->list);
+               list_del(&w->list);
 
        return ret;
 }
diff --git a/test/test-aio.c b/test/test-aio.c
index 1d918c1..c27ea26 100644
--- a/test/test-aio.c
+++ b/test/test-aio.c
@@ -14,6 +14,7 @@
 
 #include "accord.h"
 #include "util.h"
+#include "list.h"
 
 struct acrd_fixture {
        struct acrd_handle *handle;
diff --git a/test/test-io.c b/test/test-io.c
index 063d313..a8296fa 100644
--- a/test/test-io.c
+++ b/test/test-io.c
@@ -14,6 +14,7 @@
 
 #include "accord.h"
 #include "util.h"
+#include "list.h"
 
 struct acrd_fixture {
        struct acrd_handle *handle;
diff --git a/test/test-txn.c b/test/test-txn.c
index b93cbdb..562befd 100644
--- a/test/test-txn.c
+++ b/test/test-txn.c
@@ -14,6 +14,7 @@
 
 #include "accord.h"
 #include "util.h"
+#include "list.h"
 
 struct acrd_fixture {
        struct acrd_handle *handle;
diff --git a/test/test-watch.c b/test/test-watch.c
index feebe9f..f92ba9b 100644
--- a/test/test-watch.c
+++ b/test/test-watch.c
@@ -14,6 +14,7 @@
 
 #include "accord.h"
 #include "util.h"
+#include "list.h"
 
 struct acrd_fixture {
        struct acrd_handle *handle;
-- 
1.7.1

-- 
sheepdog mailing list
[email protected]
http://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to