From 7540df5ed6b383ec93f5a4f10ab2d08f9b9869e4 Mon Sep 17 00:00:00 2001 From: Trent Lloyd Date: Mon, 8 Aug 2005 18:03:51 +0000 Subject: * Move avahi-core/llist.h to avahi-common/llist.h, not installed. * avahi-client/ - Add copyright notice - Remove glib, various cleanups - Remove alternative host/service functions (available in avahi-common) git-svn-id: file:///home/lennart/svn/public/avahi/trunk@275 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe --- avahi-client/Makefile.am | 6 +- avahi-client/client-test.c | 34 ++++++++++- avahi-client/client.c | 137 +++++++++++++++++++++++++++++---------------- avahi-client/client.h | 15 +---- 4 files changed, 125 insertions(+), 67 deletions(-) (limited to 'avahi-client') diff --git a/avahi-client/Makefile.am b/avahi-client/Makefile.am index 2d5a654..a01ede2 100644 --- a/avahi-client/Makefile.am +++ b/avahi-client/Makefile.am @@ -19,13 +19,9 @@ AM_CFLAGS=-I$(top_srcdir) -# GLIB 2.0 -AM_CFLAGS+=$(GLIB20_CFLAGS) -AM_LDADD=$(GLIB20_LIBS) - # DBUS AM_CFLAGS+=$(DBUS_CFLAGS) -AM_LDADD+=$(DBUS_LIBS) +AM_LDADD=$(DBUS_LIBS) # This cool debug trap works on i386/gcc only AM_CFLAGS+='-DDEBUG_TRAP=__asm__("int $$3")' diff --git a/avahi-client/client-test.c b/avahi-client/client-test.c index cc41f49..530394f 100644 --- a/avahi-client/client-test.c +++ b/avahi-client/client-test.c @@ -1,3 +1,24 @@ +/* $Id$ */ + +/*** + This file is part of avahi. + + avahi is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + avahi 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 Lesser General + Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with avahi; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. +***/ + #include #include #include @@ -17,13 +38,20 @@ main (int argc, char *argv[]) ret = avahi_client_get_version_string (avahi); printf ("Avahi Server Version: %s\n", ret); + g_free (ret); ret = avahi_client_get_host_name (avahi); printf ("Host Name: %s\n", ret); + g_free (ret); + + ret = avahi_client_get_domain_name (avahi); + printf ("Domain Name: %s\n", ret); + g_free (ret); + + ret = avahi_client_get_host_name_fqdn (avahi); + printf ("FQDN: %s\n", ret); + g_free (ret); - ret = avahi_client_get_alternative_host_name (avahi, "ubuntu"); - printf ("Alternative Host Name: %s\n", ret); - g_free (avahi); g_main_loop_run (loop); diff --git a/avahi-client/client.c b/avahi-client/client.c index 290d767..f5de858 100644 --- a/avahi-client/client.c +++ b/avahi-client/client.c @@ -1,8 +1,33 @@ +/* $Id$ */ + +/*** + This file is part of avahi. + + avahi is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + avahi 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 Lesser General + Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with avahi; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. +***/ + +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include +#include #include #include -#include #include #define DBUS_API_SUBJECT_TO_CHANGE @@ -11,9 +36,16 @@ #include -struct _AvahiClientPriv +struct _AvahiClient { DBusConnection *bus; + AVAHI_LLIST_HEAD(AvahiEntryGroup, groups); +}; + +struct _AvahiEntryGroup { + char *path; + AvahiClient *parent; + AVAHI_LLIST_FIELDS(AvahiEntryGroup, groups); }; static DBusHandlerResult @@ -56,28 +88,6 @@ out: return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } -static gint _dbus_add_match (DBusConnection *bus, char *type, char *interface, char *sender, char *path) -{ - DBusError error; - char *filter; - - g_assert (bus != NULL); - - dbus_error_init (&error); - filter = g_strdup_printf ("type='%s', interface='%s', sender='%s', path='%s'", type, interface, sender, path); - dbus_bus_add_match (bus, filter, &error); - g_free (filter); - - if (dbus_error_is_set (&error)) - { - fprintf (stderr, "Error adding filter match: %s\n", error.message); - dbus_error_free (&error); - return FALSE; - } - - return TRUE; -} - AvahiClient * avahi_client_new () { @@ -85,16 +95,17 @@ avahi_client_new () DBusError error; tmp = g_new (AvahiClient, 1); - tmp->priv = g_new (AvahiClientPriv, 1); - g_assert (tmp != NULL); - g_assert (tmp->priv != NULL); - + if (tmp == NULL) + goto fail; + + AVAHI_LLIST_HEAD_INIT(AvahiEntryGroup, tmp->groups); + dbus_error_init (&error); - tmp->priv->bus = dbus_bus_get (DBUS_BUS_SYSTEM, &error); + tmp->bus = dbus_bus_get (DBUS_BUS_SYSTEM, &error); - dbus_connection_setup_with_g_main (tmp->priv->bus, NULL); + dbus_connection_setup_with_g_main (tmp->bus, NULL); if (dbus_error_is_set (&error)) { fprintf(stderr, "Error getting system d-bus: %s\n", error.message); @@ -102,21 +113,47 @@ avahi_client_new () goto fail; } - dbus_connection_set_exit_on_disconnect (tmp->priv->bus, FALSE); + dbus_connection_set_exit_on_disconnect (tmp->bus, FALSE); - if (!dbus_connection_add_filter (tmp->priv->bus, filter_func, tmp, NULL)) + if (!dbus_connection_add_filter (tmp->bus, filter_func, tmp, NULL)) { fprintf (stderr, "Failed to add d-bus filter\n"); goto fail; } - if (!_dbus_add_match (tmp->priv->bus, "signal", AVAHI_DBUS_INTERFACE_SERVER, AVAHI_DBUS_NAME, AVAHI_DBUS_PATH_SERVER)) goto fail; - if (!_dbus_add_match (tmp->priv->bus, "signal", DBUS_INTERFACE_DBUS, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS)) goto fail; + dbus_bus_add_match (tmp->bus, + "type='signal', " + "interface='" AVAHI_DBUS_INTERFACE_SERVER "', " + "sender='" AVAHI_DBUS_NAME "', " + "path='" AVAHI_DBUS_PATH_SERVER "'", + &error); + + if (dbus_error_is_set (&error)) + { + fprintf (stderr, "Error adding filter match: %s\n", error.message); + dbus_error_free (&error); + goto fail; + + } + + dbus_bus_add_match (tmp->bus, + "type='signal', " + "interface='" DBUS_INTERFACE_DBUS "', " + "sender='" DBUS_SERVICE_DBUS "', " + "path='" DBUS_PATH_DBUS "'", + &error); + + if (dbus_error_is_set (&error)) + { + fprintf (stderr, "Error adding filter match: %s\n", error.message); + dbus_error_free (&error); + goto fail; + + } return tmp; fail: - if (tmp->priv) free (tmp->priv); if (tmp) free (tmp); return NULL; } @@ -127,7 +164,7 @@ avahi_client_get_string_reply_and_block (AvahiClient *client, char *method, char DBusMessage *message; DBusMessage *reply; DBusError error; - char *ret; + char *ret, *new; g_assert (client != NULL); g_assert (method != NULL); @@ -135,7 +172,6 @@ avahi_client_get_string_reply_and_block (AvahiClient *client, char *method, char dbus_error_init (&error); message = dbus_message_new_method_call (AVAHI_DBUS_NAME, AVAHI_DBUS_PATH_SERVER, AVAHI_DBUS_INTERFACE_SERVER, method); - fprintf (stderr, "message = dbus_message_new_method_call (%s, %s, %s, %s)\n", AVAHI_DBUS_NAME, AVAHI_DBUS_PATH_SERVER, AVAHI_DBUS_INTERFACE_SERVER, method); if (param != NULL) { @@ -146,7 +182,7 @@ avahi_client_get_string_reply_and_block (AvahiClient *client, char *method, char } } - reply = dbus_connection_send_with_reply_and_block (client->priv->bus, message, -1, &error); + reply = dbus_connection_send_with_reply_and_block (client->bus, message, -1, &error); if (dbus_error_is_set (&error)) { @@ -172,7 +208,9 @@ avahi_client_get_string_reply_and_block (AvahiClient *client, char *method, char return NULL; } - return ret; + new = strdup (ret); + + return new; } char* @@ -199,14 +237,19 @@ avahi_client_get_host_name_fqdn (AvahiClient *client) return avahi_client_get_string_reply_and_block (client, "GetHostNameFqdn", NULL); } -char* -avahi_client_get_alternative_host_name (AvahiClient *client, char *host) +AvahiEntryGroup* +avahi_entry_group_new (AvahiClient *client) { - return avahi_client_get_string_reply_and_block (client, "GetAlternativeHostName", host); -} + AvahiEntryGroup *tmp; -char* -avahi_client_get_alternative_service_name (AvahiClient *client, char *service) -{ - return avahi_client_get_string_reply_and_block (client, "GetAlternativeServiceName", service); + tmp = malloc (sizeof (AvahiEntryGroup)); + + tmp->parent = client; + + AVAHI_LLIST_PREPEND(AvahiEntryGroup, groups, client->groups, tmp); + + return tmp; +fail: + if (tmp) free (tmp); + return NULL; } diff --git a/avahi-client/client.h b/avahi-client/client.h index 5b0e910..0fb6419 100644 --- a/avahi-client/client.h +++ b/avahi-client/client.h @@ -1,7 +1,7 @@ #ifndef fooclienthfoo #define fooclienthfoo -/* $Id: core.h 98 2005-06-04 18:56:52Z lathiat $ */ +/* $Id$ */ /*** This file is part of avahi. @@ -28,12 +28,9 @@ AVAHI_C_DECL_BEGIN -typedef struct _AvahiClientPriv AvahiClientPriv; +typedef struct _AvahiClient AvahiClient; -typedef struct _AvahiClient { - int serverid; - AvahiClientPriv *priv; -} AvahiClient; +typedef struct _AvahiEntryGroup AvahiEntryGroup; /** Creates a new client instance */ AvahiClient* avahi_client_new (); @@ -50,12 +47,6 @@ char* avahi_client_get_domain_name (AvahiClient*); /** Get FQDN domain name */ char* avahi_client_get_host_name_fqdn (AvahiClient*); -/** Get alternative host name for a host name that is taken */ -char* avahi_client_get_alternative_host_name (AvahiClient*, char*); - -/** Get alternative service name for a service name that is taken */ -char* avahi_client_get_alternative_service_name (AvahiClient*, char*); - AVAHI_C_DECL_END #endif -- cgit