]> git.meshlink.io Git - catta/blobdiff - avahi-client/browser.c
strip glib usage from avahi-dnsconfd
[catta] / avahi-client / browser.c
index 6e0ed5d364bc6200f39e09d8f21fe907bd586c35..01608d09d8b7e3edfe5963bbd8181437d606dcea 100644 (file)
 #include <config.h>
 #endif
 
-#include <avahi-client/client.h>
-#include <avahi-common/dbus.h>
-#include <avahi-common/llist.h>
-#include <avahi-common/error.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
 
-#define DBUS_API_SUBJECT_TO_CHANGE
 #include <dbus/dbus.h>
-#include <dbus/dbus-glib-lowlevel.h>
 
-#include <stdlib.h>
+#include <avahi-client/client.h>
+#include <avahi-common/dbus.h>
+#include <avahi-common/llist.h>
+#include <avahi-common/error.h>
+#include <avahi-common/malloc.h>
 
 #include "client.h"
 #include "internal.h"
 
 /* AvahiDomainBrowser */
 
-AvahiDomainBrowser* avahi_domain_browser_new (AvahiClient *client, AvahiIfIndex interface, AvahiProtocol protocol, char *domain, AvahiDomainBrowserType btype, AvahiDomainBrowserCallback callback, void *user_data)
+AvahiDomainBrowser* avahi_domain_browser_new (AvahiClient *client, AvahiIfIndex interface, AvahiProtocol protocol, const char *domain, AvahiDomainBrowserType btype, AvahiDomainBrowserCallback callback, void *user_data)
 {
     AvahiDomainBrowser *tmp = NULL;
     DBusMessage *message = NULL, *reply;
@@ -71,7 +69,7 @@ AvahiDomainBrowser* avahi_domain_browser_new (AvahiClient *client, AvahiIfIndex
     if (dbus_error_is_set (&error) || path == NULL)
         goto dbus_error;
 
-    tmp = malloc (sizeof (AvahiDomainBrowser));
+    tmp = avahi_new (AvahiDomainBrowser, 1);
     tmp->client = client;
     tmp->callback = callback;
     tmp->user_data = user_data;
@@ -88,28 +86,32 @@ dbus_error:
     return NULL;
 }
 
-void
+int
 avahi_domain_browser_free (AvahiDomainBrowser *b)
 {
+    AvahiClient *client = b->client;
     DBusMessage *message = NULL;
 
     if (b == NULL || b->path == NULL)
-        return;
+        return avahi_client_set_errno (client, AVAHI_ERR_INVALID_OBJECT);
 
     message = dbus_message_new_method_call (AVAHI_DBUS_NAME,
             b->path,
             AVAHI_DBUS_INTERFACE_DOMAIN_BROWSER, "Free");
 
-    dbus_connection_send (b->client->bus, message, NULL);
+    if (message == NULL)
+        return avahi_client_set_errno (client, AVAHI_ERR_DBUS_ERROR);
 
-    AVAHI_LLIST_REMOVE(AvahiDomainBrowser, domain_browsers, b->client->domain_browsers, b);
+    dbus_connection_send (client->bus, message, NULL);
 
-    free (b);
+    AVAHI_LLIST_REMOVE(AvahiDomainBrowser, domain_browsers, client->domain_browsers, b);
 
-    return;
+    avahi_free (b);
+
+    return avahi_client_set_errno (client, AVAHI_OK);
 }
 
-char*
+const char*
 avahi_domain_browser_path (AvahiDomainBrowser *b)
 {
     return b->path;
@@ -133,7 +135,6 @@ avahi_domain_browser_event (AvahiClient *client, AvahiBrowserEvent event, DBusMe
 
     for (n = client->domain_browsers; n != NULL; n = n->domain_browsers_next)
     {
-        printf ("cmp: %s, %s\n", n->path, path);
         if (strcmp (n->path, path) == 0) {
             db = n;
             break;
@@ -159,7 +160,7 @@ out:
 }
 
 /* AvahiServiceTypeBrowser */
-AvahiServiceTypeBrowser* avahi_service_type_browser_new (AvahiClient *client, AvahiIfIndex interface, AvahiProtocol protocol, char *domain, AvahiServiceTypeBrowserCallback callback, void *user_data)
+AvahiServiceTypeBrowser* avahi_service_type_browser_new (AvahiClient *client, AvahiIfIndex interface, AvahiProtocol protocol, const char *domain, AvahiServiceTypeBrowserCallback callback, void *user_data)
 {
     AvahiServiceTypeBrowser *tmp = NULL;
     DBusMessage *message = NULL, *reply;
@@ -190,7 +191,7 @@ AvahiServiceTypeBrowser* avahi_service_type_browser_new (AvahiClient *client, Av
     if (dbus_error_is_set (&error) || path == NULL)
         goto dbus_error;
 
-    tmp = malloc (sizeof (AvahiServiceTypeBrowser));
+    tmp = avahi_new(AvahiServiceTypeBrowser, 1);
     tmp->client = client;
     tmp->callback = callback;
     tmp->user_data = user_data;
@@ -207,28 +208,32 @@ dbus_error:
     return NULL;
 }
 
-void
+int
 avahi_service_type_browser_free (AvahiServiceTypeBrowser *b)
 {
+    AvahiClient *client = b->client;
     DBusMessage *message = NULL;
 
     if (b == NULL || b->path == NULL)
-        return;
+        return avahi_client_set_errno (client, AVAHI_ERR_INVALID_OBJECT);
 
     message = dbus_message_new_method_call (AVAHI_DBUS_NAME,
             b->path,
             AVAHI_DBUS_INTERFACE_SERVICE_TYPE_BROWSER, "Free");
 
+    if (message == NULL)
+        return avahi_client_set_errno (client, AVAHI_ERR_DBUS_ERROR);
+
     dbus_connection_send (b->client->bus, message, NULL);
 
     AVAHI_LLIST_REMOVE(AvahiServiceTypeBrowser, service_type_browsers, b->client->service_type_browsers, b);
 
-    free (b);
+    avahi_free (b);
 
-    return;
+    return avahi_client_set_errno (client, AVAHI_OK);
 }
 
-char*
+const char*
 avahi_service_type_browser_path (AvahiServiceTypeBrowser *b)
 {
     return b->path;
@@ -252,7 +257,6 @@ avahi_service_type_browser_event (AvahiClient *client, AvahiBrowserEvent event,
 
     for (n = client->service_type_browsers; n != NULL; n = n->service_type_browsers_next)
     {
-        printf ("cmp: %s, %s\n", n->path, path);
         if (strcmp (n->path, path) == 0) {
             db = n;
             break;
@@ -283,7 +287,7 @@ out:
 
 /* AvahiServiceBrowser */
 
-AvahiServiceBrowser* avahi_service_browser_new (AvahiClient *client, AvahiIfIndex interface, AvahiProtocol protocol, char *type, char *domain, AvahiServiceBrowserCallback callback, void *user_data)
+AvahiServiceBrowser* avahi_service_browser_new (AvahiClient *client, AvahiIfIndex interface, AvahiProtocol protocol, const char *type, const char *domain, AvahiServiceBrowserCallback callback, void *user_data)
 {
     AvahiServiceBrowser *tmp = NULL;
     DBusMessage *message = NULL, *reply;
@@ -317,7 +321,7 @@ AvahiServiceBrowser* avahi_service_browser_new (AvahiClient *client, AvahiIfInde
     if (dbus_error_is_set (&error) || path == NULL)
         goto dbus_error;
 
-    tmp = malloc (sizeof (AvahiServiceBrowser));
+    tmp = avahi_new(AvahiServiceBrowser, 1);
     tmp->client = client;
     tmp->callback = callback;
     tmp->user_data = user_data;
@@ -334,30 +338,32 @@ dbus_error:
     return NULL;
 }
     
-void
+int
 avahi_service_browser_free (AvahiServiceBrowser *b)
 {
+    AvahiClient *client = b->client;
     DBusMessage *message = NULL;
-
+    
     if (b == NULL || b->path == NULL)
-        return;
-
-    printf ("Freeing %s\n", b->path);
+        return avahi_client_set_errno (client, AVAHI_ERR_INVALID_OBJECT);
 
     message = dbus_message_new_method_call (AVAHI_DBUS_NAME,
             b->path,
             AVAHI_DBUS_INTERFACE_SERVICE_BROWSER, "Free");
 
+    if (message == NULL)
+        return avahi_client_set_errno (client, AVAHI_ERR_DBUS_ERROR);
+
     dbus_connection_send (b->client->bus, message, NULL);
 
     AVAHI_LLIST_REMOVE(AvahiServiceBrowser, service_browsers, b->client->service_browsers, b);
 
-    free (b);
+    avahi_free (b);
 
-    return;
+    return avahi_client_set_errno (client, AVAHI_OK);
 }
 
-char*
+const char*
 avahi_service_browser_path (AvahiServiceBrowser *b)
 {
     return b->path;
@@ -381,7 +387,6 @@ avahi_service_browser_event (AvahiClient *client, AvahiBrowserEvent event, DBusM
 
     for (n = client->service_browsers; n != NULL; n = n->service_browsers_next)
     {
-        printf ("cmp: %s, %s\n", n->path, path);
         if (strcmp (n->path, path) == 0) {
             db = n;
             break;