summaryrefslogtreecommitdiffstats
path: root/avahi-client
diff options
context:
space:
mode:
authorTrent Lloyd <lathiat@bur.st>2005-08-08 18:03:51 +0000
committerTrent Lloyd <lathiat@bur.st>2005-08-08 18:03:51 +0000
commit7540df5ed6b383ec93f5a4f10ab2d08f9b9869e4 (patch)
treee2e023eabbf40d5ffa8716ba5985e25d440b3885 /avahi-client
parent9ad2a95c80ab0f9cf48d3f58e9a7ed6f06685c34 (diff)
* 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
Diffstat (limited to 'avahi-client')
-rw-r--r--avahi-client/Makefile.am6
-rw-r--r--avahi-client/client-test.c34
-rw-r--r--avahi-client/client.c137
-rw-r--r--avahi-client/client.h15
4 files changed, 125 insertions, 67 deletions
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 <avahi-client/client.h>
#include <stdio.h>
#include <glib.h>
@@ -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 <config.h>
+#endif
+
#include <avahi-client/client.h>
#include <avahi-common/dbus.h>
+#include <avahi-common/llist.h>
#include <stdlib.h>
#include <stdio.h>
-#include <glib.h>
#include <string.h>
#define DBUS_API_SUBJECT_TO_CHANGE
@@ -11,9 +36,16 @@
#include <stdlib.h>
-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