summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2006-08-31 17:17:18 +0000
committerLennart Poettering <lennart@poettering.net>2006-08-31 17:17:18 +0000
commit59f3e8bef545762113c041a1ef5868e08b353045 (patch)
tree345b3d7b45f4a01c581cc340607fb3ba232a3442
parent16ede7fb33fde566f43390d8dcf22d49f52c80e4 (diff)
autoconf love:
* use autoconf to check whether dbus_connection_close() is available and use it if it is, don't do those checks based on the D-Bus version. * Make use of dbus_bus_get_private() if it is available. * Since D-Bus agreeed on a cononical way to write their name, use that way in configure.ac. * Add configure options to define the UNIX user/group for avahi-autoipd git-svn-id: file:///home/lennart/svn/public/avahi/trunk@1295 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
-rw-r--r--avahi-client/client.c21
-rw-r--r--avahi-daemon/dbus-protocol.c8
-rw-r--r--configure.ac64
3 files changed, 64 insertions, 29 deletions
diff --git a/avahi-client/client.c b/avahi-client/client.c
index 825e88f..f665613 100644
--- a/avahi-client/client.c
+++ b/avahi-client/client.c
@@ -67,7 +67,7 @@ static void client_set_state (AvahiClient *client, AvahiServerState state) {
switch (client->state) {
case AVAHI_CLIENT_FAILURE:
if (client->bus) {
-#if (DBUS_VERSION_MAJOR == 0) && (DBUS_VERSION_MINOR >= 62)
+#ifdef HAVE_DBUS_CONNECTION_CLOSE
dbus_connection_close(client->bus);
#else
dbus_connection_disconnect(client->bus);
@@ -441,12 +441,18 @@ static int init_server(AvahiClient *client, int *ret_error) {
}
/* This function acts like dbus_bus_get but creates a private
- * connection instead. Eventually this should be replaced by a DBUS
- * provided version. */
+ * connection instead. */
static DBusConnection* avahi_dbus_bus_get(DBusError *error) {
DBusConnection *c;
- const char *a;
+#ifdef HAVE_DBUS_BUS_GET_PRIVATE
+ if (!(c = dbus_bus_get_private(DBUS_BUS_SYSTEM, error)))
+ return NULL;
+
+ dbus_connection_set_exit_on_disconnect(c, FALSE);
+#else
+ const char *a;
+
if (!(a = getenv("DBUS_SYSTEM_BUS_ADDRESS")) || !*a)
a = DBUS_SYSTEM_BUS_DEFAULT_ADDRESS;
@@ -456,10 +462,15 @@ static DBusConnection* avahi_dbus_bus_get(DBusError *error) {
dbus_connection_set_exit_on_disconnect(c, FALSE);
if (!dbus_bus_register(c, error)) {
+#ifdef HAVE_DBUS_CONNECTION_CLOSE
dbus_connection_close(c);
+#else
+ dbus_connection_disconnect(c);
+#endif
dbus_connection_unref(c);
return NULL;
}
+#endif
return c;
}
@@ -602,7 +613,7 @@ void avahi_client_free(AvahiClient *client) {
if (client->bus)
/* Disconnect in advance, so that the free() functions won't
* issue needless server calls */
-#if (DBUS_VERSION_MAJOR == 0) && (DBUS_VERSION_MINOR >= 62)
+#ifdef HAVE_DBUS_CONNECTION_CLOSE
dbus_connection_close(client->bus);
#else
dbus_connection_disconnect(client->bus);
diff --git a/avahi-daemon/dbus-protocol.c b/avahi-daemon/dbus-protocol.c
index 4fb58d2..e74caa3 100644
--- a/avahi-daemon/dbus-protocol.c
+++ b/avahi-daemon/dbus-protocol.c
@@ -1130,7 +1130,7 @@ fail:
dbus_error_free(&error);
if (server->bus) {
-#if (DBUS_VERSION_MAJOR == 0) && (DBUS_VERSION_MINOR >= 62)
+#ifdef HAVE_DBUS_CONNECTION_CLOSE
dbus_connection_close(server->bus);
#else
dbus_connection_disconnect(server->bus);
@@ -1151,7 +1151,7 @@ static void dbus_disconnect(void) {
assert(server->n_clients == 0);
if (server->bus) {
-#if (DBUS_VERSION_MAJOR == 0) && (DBUS_VERSION_MINOR >= 62)
+#ifdef HAVE_DBUS_CONNECTION_CLOSE
dbus_connection_close(server->bus);
#else
dbus_connection_disconnect(server->bus);
@@ -1180,7 +1180,7 @@ int dbus_protocol_setup(const AvahiPoll *poll_api, int _disable_user_service_pub
if (!force)
goto fail;
- avahi_log_warn("WARNING: Failed to contact D-BUS daemon, retrying in %ims.", RECONNECT_MSEC);
+ avahi_log_warn("WARNING: Failed to contact D-Bus daemon, retrying in %ims.", RECONNECT_MSEC);
avahi_elapse_time(&tv, RECONNECT_MSEC, 0);
server->reconnect_timeout = server->poll_api->timeout_new(server->poll_api, &tv, reconnect_callback, NULL);
@@ -1190,7 +1190,7 @@ int dbus_protocol_setup(const AvahiPoll *poll_api, int _disable_user_service_pub
fail:
if (server->bus) {
-#if (DBUS_VERSION_MAJOR == 0) && (DBUS_VERSION_MINOR >= 62)
+#ifdef HAVE_DBUS_CONNECTION_CLOSE
dbus_connection_close(server->bus);
#else
dbus_connection_disconnect(server->bus);
diff --git a/configure.ac b/configure.ac
index 8c2b1b5..7cf15b2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -164,7 +164,7 @@ case $with_distro in
AC_MSG_ERROR([Linux distribution autodetection failed, you must specify the distribution to target using --with-distro=DISTRO, set DISTRO to none if your distribution is not supported.])
;;
*)
- AC_MSG_ERROR([Your distribution (${with_distro}) is not yet supported, init scripts and dbus configuration will not be installed! (patches welcome), you can specify --with-distro=none to skip this check])
+ AC_MSG_ERROR([Your distribution (${with_distro}) is not yet supported, init scripts and D-Bus configuration will not be installed! (patches welcome), you can specify --with-distro=none to skip this check])
;;
esac
@@ -372,10 +372,10 @@ fi
AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")
#
-# D-BUS
+# D-Bus
#
AC_ARG_ENABLE(dbus,
- AS_HELP_STRING([--disable-dbus],[Disable use of D-BUS]),
+ AS_HELP_STRING([--disable-dbus],[Disable use of D-Bus]),
[case "${enableval}" in
yes) HAVE_DBUS=yes ;;
no) HAVE_DBUS=no ;;
@@ -383,8 +383,8 @@ AC_ARG_ENABLE(dbus,
esac],
[HAVE_DBUS=yes])
-AC_ARG_WITH(dbus-sys, AS_HELP_STRING([--with-dbus-sys=<dir>], [where D-BUS system.d directory is]))
-AC_ARG_WITH(dbus-system-socket, AS_HELP_STRING([--with-dbus-system-address=<address>], [where the dbus system socket is, you probably want to put unix:path= at the start]))
+AC_ARG_WITH(dbus-sys, AS_HELP_STRING([--with-dbus-sys=<dir>], [Path to D-Bus system.d directory]))
+AC_ARG_WITH(dbus-system-socket, AS_HELP_STRING([--with-dbus-system-address=<address>], [Path to the D-Bus system socket, you probably want to put unix:path= at the start. Only needed for very old D-Bus releases]))
DBUS_VERSION="Disabled"
DBUS_SYS_DIR="Disabled"
@@ -392,7 +392,7 @@ DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="Disabled"
if test "x$HAVE_DBUS" = "xyes" ; then
PKG_CHECK_MODULES(DBUS, [ dbus-1 >= 0.34 ])
- AC_DEFINE(HAVE_DBUS, 1, [Whether we have D-BUS or not])
+ AC_DEFINE(HAVE_DBUS, 1, [Whether we have D-Bus or not])
DBUS_VERSION=`$PKG_CONFIG dbus-1 --modversion`
DBUS_VERSION_MAJOR=`echo $DBUS_VERSION | awk -F. '{print $1}'`
@@ -409,16 +409,16 @@ if test "x$HAVE_DBUS" = "xyes" ; then
fi
if test "z$DBUS_VERSION_MAJOR" = "z0" -a "z$DBUS_VERSION_MINOR" = "z0" -a "z$DBUS_VERSION_MICRO" = "z0"; then
- echo "Error: Couldn't determine the version of your DBUS package."
+ echo "Error: Couldn't determine the version of your D-Bus package."
echo " This is probably an error in this script, please report it"
echo " along with the following information:"
- echo " Base DBUS version ='$DBUS_VERSION'"
+ echo " Base D-Buss version ='$DBUS_VERSION'"
echo " DBUS_VERSION_MAJOR='$DBUS_VERSION_MAJOR'"
echo " DBUS_VERSION_MINOR='$DBUS_VERSION_MINOR'"
echo " DBUS_VERSION_MICRO='$DBUS_VERSION_MICRO'"
exit 1
else
- echo "Your dbus version is $DBUS_VERSION_MAJOR,$DBUS_VERSION_MINOR,$DBUS_VERSION_MICRO."
+ echo "Your D-Bus version is $DBUS_VERSION_MAJOR,$DBUS_VERSION_MINOR,$DBUS_VERSION_MICRO."
DBUS_CFLAGS="$DBUS_CFLAGS -DDBUS_VERSION_MAJOR=$DBUS_VERSION_MAJOR"
DBUS_CFLAGS="$DBUS_CFLAGS -DDBUS_VERSION_MINOR=$DBUS_VERSION_MINOR"
DBUS_CFLAGS="$DBUS_CFLAGS -DDBUS_VERSION_MICRO=$DBUS_VERSION_MICRO"
@@ -438,11 +438,11 @@ if test "x$HAVE_DBUS" = "xyes" ; then
if ! test -z "$with_dbus_system_address" ; then
DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="$with_dbus_system_address"
else
- # This is ugly, but D-BUS doesn't export this address for us
+ # This is ugly, but D-Bus doesn't export this address for us
# so we have to guess, pretty much all setups i've seen have
# it in /var/lib/dbus or /var/run/dbus, and its defaulted to
# /var/run upstream so we will try guess first then default
- # to /var/run/dbus
+ # to /var/run/dbus.
DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="unix:path=/var/run/dbus/system_bus_socket"
TRY_SOCKETS="/var/lib/dbus/system_bus_socket /var/run/dbus/system_bus_socket ${localstatedir}/run/dbus/system_bus_socket ${prefix}/var/run/dbus/system_bus_socket"
@@ -454,6 +454,10 @@ if test "x$HAVE_DBUS" = "xyes" ; then
fi
AC_SUBST(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS)
+ SAVED_LIBS="$LIBS"
+ LIBS="$LIBS $DBUS_LIBS"
+ AC_CHECK_FUNCS([dbus_connection_close dbus_bus_get_private])
+ LIBS="$SAVED_LIBS"
fi
AM_CONDITIONAL(HAVE_DBUS, test "x$HAVE_DBUS" = "xyes")
@@ -577,7 +581,7 @@ if test "x$HAVE_PYTHON" = "xyes" ; then
if test "x$HAVE_DBUS" = "xyes" ; then
AC_ARG_ENABLE(python-dbus,
- AS_HELP_STRING([--disable-python-dbus],[Disable use of D-BUS in Python]),
+ AS_HELP_STRING([--disable-python-dbus],[Disable use of D-Bus in Python]),
[case "${enableval}" in
yes) HAVE_PYTHON_DBUS=yes ;;
no) HAVE_PYTHON_DBUS=no ;;
@@ -674,9 +678,9 @@ AC_ARG_ENABLE(autoipd,
AM_CONDITIONAL(ENABLE_AUTOIPD, test "x$ENABLE_AUTOIPD" = "xyes")
#
-# Defining Avahi User and Group.
+# Defining users and groups
#
-AC_ARG_WITH(avahi_user, AS_HELP_STRING([--with-avahi-user=<user>],[User for running the Avahi daemon (avahi)]))
+AC_ARG_WITH(avahi_user, AS_HELP_STRING([--with-avahi-user=<user>],[User for running avahi-daemon (avahi)]))
if test -z "$with_avahi_user" ; then
AVAHI_USER=avahi
else
@@ -685,7 +689,7 @@ fi
AC_SUBST(AVAHI_USER)
AC_DEFINE_UNQUOTED(AVAHI_USER,"$AVAHI_USER", [User for running the Avahi daemon])
-AC_ARG_WITH(avahi_group,AS_HELP_STRING([--with-avahi-group=<group>],[Group for Avahi (avahi)]))
+AC_ARG_WITH(avahi_group,AS_HELP_STRING([--with-avahi-group=<group>],[Group for running avahi-daemon (avahi)]))
if test -z "$with_avahi_group" ; then
AVAHI_GROUP=avahi
else
@@ -703,6 +707,24 @@ fi
AC_SUBST(AVAHI_PRIV_ACCESS_GROUP)
AC_DEFINE_UNQUOTED(AVAHI_PRIV_ACCESS_GROUP,"$AVAHI_PRIV_ACCESS_GROUP", [Privileged access group for Avahi clients])
+AC_ARG_WITH(autoipd_user, AS_HELP_STRING([--with-autipd-user=<user>],[User for running the avahi-autoipd daemon (avahi-autoipd)]))
+if test -z "$with_autoipd_user" ; then
+ AVAHI_AUTOIPD_USER=avahi-autoipd
+else
+ AVAHI_AUTOIPD_USER=$with_autoipd_user
+fi
+AC_SUBST(AVAHI_AUTOIPD_USER)
+AC_DEFINE_UNQUOTED(AVAHI_AUTOIPD_USER,"$AVAHI_AUTOIPD_USER", [User for running the avahi-autoipd daemon])
+
+AC_ARG_WITH(autoipd_group,AS_HELP_STRING([--with-autoipd-group=<group>],[Group for running the avahi-autoipd daemon (avahi-autoipd)]))
+if test -z "$with_autoipd_group" ; then
+ AVAHI_AUTOIPD_GROUP=avahi-autoipd
+else
+ AVAHI_AUTOIPD_GROUP=$with_autoipd_group
+fi
+AC_SUBST(AVAHI_AUTOIPD_GROUP)
+AC_DEFINE_UNQUOTED(AVAHI_AUTOIPD_GROUP,"$AVAHI_AUTOIPD_GROUP", [Group for running the avahi-autoipd daemon])
+
#
# Avahi runtime dir
#
@@ -877,7 +899,7 @@ echo "
CFLAGS: ${CFLAGS}
Enable GLIB: ${HAVE_GLIB}
Enable GTK: ${HAVE_GTK}
- Enable D-BUS: ${HAVE_DBUS}
+ Enable D-Bus: ${HAVE_DBUS}
Enable Expat: ${HAVE_EXPAT}
Enable GDBM: ${HAVE_GDBM}
Enable DBM: ${HAVE_DBM}
@@ -890,9 +912,11 @@ echo "
Enable Mono: ${HAVE_MONO}
Enable Monodoc: ${HAVE_MONODOC}
Distribution/OS: ${with_distro}
- User for Avahi daemon: ${AVAHI_USER}
- Group for Avahi daemon: ${AVAHI_GROUP}
- Priviliged Access Group for Avahi Clients: ${AVAHI_PRIV_ACCESS_GROUP}
+ User for avahi-daemon: ${AVAHI_USER}
+ Group for avahi-daemon: ${AVAHI_GROUP}
+ Priviliged access group for Avahi clients: ${AVAHI_PRIV_ACCESS_GROUP}
+ User for avahi-autopid: ${AVAHI_AUTOIPD_USER}
+ Group for avahi-autoipd: ${AVAHI_AUTOIPD_GROUP}
Enable chroot(): ${enable_chroot}
"
@@ -908,7 +932,7 @@ if test "x$BUILD_DAEMON" = "xyes" -a "x$HAVE_DBUS" = "xyes" -a "x$HAVE_PYTHON" =
BUILD_PYTHON=yes
fi
-BUILD_CLIENT="no (You need avahi-daemon and dbus!)"
+BUILD_CLIENT="no (You need avahi-daemon and D-Bus!)"
if test "x$BUILD_DAEMON" = "xyes" -a "x$HAVE_DBUS" = "xyes" ; then
BUILD_CLIENT=yes