File 0001-Problem-can-t-build-on-czmq-4.patch of Package zyre

From 5b86c78a8be76ef49fffd413ccdb3d1992448387 Mon Sep 17 00:00:00 2001
From: Michal Vyskocil <michalvyskocil@eaton.com>
Date: Sat, 5 Nov 2016 15:22:50 +0100
Subject: [PATCH] Problem: can't build on czmq 4

Solution: do not use removed zhash_foreach, butr zhash_first/zhash_next
---
 src/zyre_event.c |   10 ++++++--
 src/zyre_group.c |    8 +++++-
 src/zyre_node.c  |   67 +++++++++++++++++++++++++++++++++++++++++++++++--------
 3 files changed, 73 insertions(+), 12 deletions(-)

Index: zyre-1.2.0/src/zyre_event.c
===================================================================
--- zyre-1.2.0.orig/src/zyre_event.c
+++ zyre-1.2.0/src/zyre_event.c
@@ -131,7 +131,7 @@ zyre_event_destroy (zyre_event_t **self_
 }
 
 static int
-zyre_event_log_pair (const char *key, void *item, void *argument)
+zyre_event_log_pair (const char *key, void *item)
 {
     zsys_info ("   - %s: %s", key, (const char *)item);
     return 0;
@@ -150,7 +150,13 @@ zyre_event_print (zyre_event_t *self)
         case ZYRE_EVENT_ENTER:
             zsys_info (" - type=ENTER");
             zsys_info (" - headers=%zu:", zhash_size (self->headers));
-            zhash_foreach (self->headers, (zhash_foreach_fn *) zyre_event_log_pair, self);
+            void *value = zhash_first (self->headers);
+            while (value)
+            {
+                const char *key = zhash_cursor (self->headers);
+                zyre_event_log_pair (key, value);
+                value = zhash_first (self->headers);
+            }
             zsys_info (" - address=%s", zyre_event_address(self));
             break;
 
Index: zyre-1.2.0/src/zyre_group.c
===================================================================
--- zyre-1.2.0.orig/src/zyre_group.c
+++ zyre-1.2.0/src/zyre_group.c
@@ -114,7 +114,13 @@ void
 zyre_group_send (zyre_group_t *self, zre_msg_t **msg_p)
 {
     assert (self);
-    zhash_foreach (self->peers, (zhash_foreach_fn *) s_peer_send, *msg_p);
+    void *value = zhash_first (self->peers);
+    while (value)
+    {
+        const char *key = zhash_cursor (self->peers);
+        s_peer_send (key, value, *msg_p);
+        value = zhash_first (self->peers);
+    }
     zre_msg_destroy (msg_p);
 }
 
Index: zyre-1.2.0/src/zyre_node.c
===================================================================
--- zyre-1.2.0.orig/src/zyre_node.c
+++ zyre-1.2.0/src/zyre_node.c
@@ -244,7 +244,7 @@ zyre_node_stop (zyre_node_t *self)
 }
 
 
-//  Send message to one peer; called via zhash_foreach
+//  Send message to one peer
 
 static int
 zyre_node_send_peer (const char *key, void *item, void *argument)
@@ -291,13 +291,31 @@ zyre_node_dump (zyre_node_t *self)
             zsys_info ("   - connect endpoint=%s", self->gossip_connect);
     }
     zsys_info (" - headers=%zu:", zhash_size (self->headers));
-    zhash_foreach (self->headers, (zhash_foreach_fn *) zyre_node_log_pair, self);
+    void *value = zhash_first (self->headers);
+    while (value)
+    {
+        const char *key = zhash_cursor (self->headers);
+        zyre_node_log_pair (key, value, self);
+        value = zhash_first (self->headers);
+    }
 
     zsys_info (" - peers=%zu:", zhash_size (self->peers));
-    zhash_foreach (self->peers, (zhash_foreach_fn *) zyre_node_log_item, self);
+    value = zhash_first (self->peers);
+    while (value)
+    {
+        const char *key = zhash_cursor (self->peers);
+        zyre_node_log_item (key, value, self);
+        value = zhash_first (self->peers);
+    }
 
     zsys_info (" - groups=%zu:", zhash_size (self->own_groups));
-    zhash_foreach (self->own_groups, (zhash_foreach_fn *) zyre_node_log_item, self);
+    value = zhash_first (self->own_groups);
+    while (value)
+    {
+        const char *key = zhash_cursor (self->own_groups);
+        zyre_node_log_item (key, value, self);
+        value = zhash_first (self->own_groups);
+    }
 }
 
 
@@ -419,7 +437,13 @@ zyre_node_recv_api (zyre_node_t *self)
             zre_msg_set_group (msg, name);
             //  Update status before sending command
             zre_msg_set_status (msg, ++(self->status));
-            zhash_foreach (self->peers, (zhash_foreach_fn *) zyre_node_send_peer, msg);
+            void *value = zhash_first (self->peers);
+            while (value)
+            {
+                const char *key = zhash_cursor (self->peers);
+                zyre_node_send_peer (key, value, msg);
+                value = zhash_first (self->peers);
+            }
             zre_msg_destroy (&msg);
             if (self->verbose)
                 zsys_info ("(%s) JOIN group=%s", self->name, name);
@@ -436,7 +460,13 @@ zyre_node_recv_api (zyre_node_t *self)
             zre_msg_set_group (msg, name);
             //  Update status before sending command
             zre_msg_set_status (msg, ++(self->status));
-            zhash_foreach (self->peers, (zhash_foreach_fn *) zyre_node_send_peer, msg);
+            void *value = zhash_first (self->peers);
+            while (value)
+            {
+                const char *key = zhash_cursor (self->peers);
+                zyre_node_send_peer (key, value, msg);
+                value = zhash_first (self->peers);
+            }
             zre_msg_destroy (&msg);
             zhash_delete (self->own_groups, name);
             if (self->verbose)
@@ -518,7 +548,13 @@ zyre_node_require_peer (zyre_node_t *sel
     zyre_peer_t *peer = (zyre_peer_t *) zhash_lookup (self->peers, zuuid_str (uuid));
     if (!peer) {
         //  Purge any previous peer on same endpoint
-        zhash_foreach (self->peers, (zhash_foreach_fn *) zyre_node_purge_peer, (char *) endpoint);
+        void *value = zhash_first (self->peers);
+        while (value)
+        {
+            const char *key = zhash_cursor (self->peers);
+            zyre_node_purge_peer (key, value, (char*) endpoint);
+            value = zhash_first (self->peers);
+        }
 
         peer = zyre_peer_new (self->peers, uuid);
         assert (peer);
@@ -567,7 +603,14 @@ zyre_node_remove_peer (zyre_node_t *self
                 self->name, zyre_peer_name (peer), zyre_peer_endpoint (peer));
 
     //  Remove peer from any groups we've got it in
-    zhash_foreach (self->peer_groups, (zhash_foreach_fn *) zyre_node_delete_peer, peer);
+    void *value = zhash_first (self->peer_groups);
+    while (value)
+    {
+        const char *key = zhash_cursor (self->peer_groups);
+        zyre_node_delete_peer (key, value, peer);
+        value = zhash_first (self->peer_groups);
+    }
+
     //  To destroy peer, we remove from peers hash table
     zhash_delete (self->peers, zyre_peer_identity (peer));
 }
@@ -902,7 +945,13 @@ zyre_node_actor (zsock_t *pipe, void *ar
             if (zclock_mono () >= reap_at) {
                 reap_at = zclock_mono () + REAP_INTERVAL;
                 //  Ping all peers and reap any expired ones
-                zhash_foreach (self->peers, (zhash_foreach_fn *) zyre_node_ping_peer, self);
+                void *value = zhash_first (self->peers);
+                while (value)
+                {
+                    const char *key = zhash_cursor (self->peers);
+                    zyre_node_ping_peer (key, value, self);
+                    value = zhash_first (self->peers);
+                }
             }
         }
     }
openSUSE Build Service is sponsored by