summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-10-12 23:05:50 +0000
committerLennart Poettering <lennart@poettering.net>2005-10-12 23:05:50 +0000
commit7badca4113bc8289755cd536593d8f3287aae9d5 (patch)
tree2a676e2218712ff59e69027cc8490abc14815532
parent4309f0c390af2dd6013c853f128295205faca4c3 (diff)
* integrate avahi-compat-howl into build system
* compat-libdns_sd: warn to syslog in addition to STDERR * compat-howl: make use of compat-libdns_sd warning functions git-svn-id: file:///home/lennart/svn/public/avahi/trunk@750 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
-rw-r--r--Makefile.am3
-rw-r--r--avahi-compat-howl/Makefile.am79
-rw-r--r--avahi-compat-howl/warn.c30
-rw-r--r--avahi-compat-howl/warn.h30
-rw-r--r--avahi-compat-libdns_sd/warn.c33
-rw-r--r--configure.ac3
6 files changed, 173 insertions, 5 deletions
diff --git a/Makefile.am b/Makefile.am
index b0ed265..12465c5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -60,7 +60,8 @@ SUBDIRS = \
man \
tests \
service-type-database \
- avahi-compat-libdns_sd
+ avahi-compat-libdns_sd \
+ avahi-compat-howl
DX_INPUT = \
diff --git a/avahi-compat-howl/Makefile.am b/avahi-compat-howl/Makefile.am
new file mode 100644
index 0000000..3239086
--- /dev/null
+++ b/avahi-compat-howl/Makefile.am
@@ -0,0 +1,79 @@
+# $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 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 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.
+
+AM_CFLAGS=-I$(top_srcdir)
+
+# This cool debug trap works on i386/gcc only
+AM_CFLAGS+='-DDEBUG_TRAP=__asm__("int $$3")'
+
+if HAVE_DBUS
+
+avahi_compat_howldir=$(includedir)/avahi-compat-howl
+
+avahi_compat_howl_HEADERS = \
+ include/howl.h \
+ include/rendezvous/rendezvous.h \
+ include/rendezvous/text_record.h \
+ include/corby/message.h \
+ include/corby/object.h \
+ include/corby/orb.h \
+ include/corby/corby.h \
+ include/corby/channel.h \
+ include/corby/buffer.h \
+ include/discovery/discovery.h \
+ include/discovery/text_record.h \
+ include/salt/socket.h \
+ include/salt/address.h \
+ include/salt/platform.h \
+ include/salt/signal.h \
+ include/salt/interface.h \
+ include/salt/salt.h \
+ include/salt/time.h \
+ include/salt/debug.h
+
+lib_LTLIBRARIES = libavahi-compat-howl.la
+
+#noinst_PROGRAMS = txt-test
+
+libavahi_compat_howl_la_SOURCES = \
+ $(avahi_compat_howl_HEADERS) \
+ warn.c warn.h
+libavahi_compat_howl_la_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS)
+libavahi_compat_howl_la_LDFLAGS = $(AM_LDFLAGS) -export-dynamic -version-info $(LIBAVAHI_COMPAT_HOWL_VERSION_INFO) $(PTHREAD_LIBS) ../avahi-common/libavahi-common.la ../avahi-client/libavahi-client.la
+
+#txt_test_SOURCES = \
+# dns_sd.h \
+# txt.c \
+# txt-test.c \
+# warn.c warn.h
+#txt_test_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS)
+#txt_test_LDADD = $(AM_LDADD) ../avahi-common/libavahi-common.la
+
+# You can test the compatibility layer by sticking in mDNSResponder's
+# dns-sd.c source here, naming it "libdns_sd-test.c" and running "make
+# libdns_sd-test" manually. We do not distribute that file due to
+# licensing restrictions.
+
+#libdns_sd-test: libdns_sd-test.c libavahi-compat-libdns_sd.la
+# $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(PTHREAD_CFLAGS) -o libdns_sd-test.o -c libdns_sd-test.c
+# $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(PTHREAD_CFLAGS) -o libdns_sd-test libdns_sd-test.o $(PTHREAD_LIBS) ../avahi-common/libavahi-common.la libavahi-compat-libdns_sd.la
+
+#CLEANFILES = libdns_sd-test.o libdns_sd-test
+
+endif
diff --git a/avahi-compat-howl/warn.c b/avahi-compat-howl/warn.c
new file mode 100644
index 0000000..a792c98
--- /dev/null
+++ b/avahi-compat-howl/warn.c
@@ -0,0 +1,30 @@
+/* $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 "warn.h"
+
+#define COMPAT_LAYER "HOWL"
+
+#include "../avahi-compat-libdns_sd/warn.c"
diff --git a/avahi-compat-howl/warn.h b/avahi-compat-howl/warn.h
new file mode 100644
index 0000000..13dbb31
--- /dev/null
+++ b/avahi-compat-howl/warn.h
@@ -0,0 +1,30 @@
+#ifndef foowarnhhowlfoo
+#define foowarnhhowlfoo
+
+/* $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.
+***/
+
+#define avahi_warn_unsupported avahi_warn_unsupported_HOWL
+#define avahi_warn_linkage avahi_warn_linkage_HOWL
+
+#include "../avahi-compat-libdns_sd/warn.h"
+
+#endif
diff --git a/avahi-compat-libdns_sd/warn.c b/avahi-compat-libdns_sd/warn.c
index 7ebc7b1..4cd20e6 100644
--- a/avahi-compat-libdns_sd/warn.c
+++ b/avahi-compat-libdns_sd/warn.c
@@ -30,9 +30,15 @@
#include <string.h>
#include <stdlib.h>
#include <assert.h>
+#include <stdarg.h>
+#include <syslog.h>
#include "warn.h"
+#ifndef COMPAT_LAYER
+#define COMPAT_LAYER "Apple Bonjour"
+#endif
+
static pthread_mutex_t linkage_mutex = PTHREAD_MUTEX_INITIALIZER;
static int linkage_warning = 0;
@@ -58,6 +64,24 @@ static void get_exe_name(char *t, size_t l) {
}
}
+static void warning(const char *ident, const char *fmt, ...) {
+ va_list ap, ap2;
+
+ assert(ident);
+ assert(fmt);
+
+ va_start(ap, fmt);
+ va_copy(ap2, ap);
+
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+
+ openlog(ident, LOG_PID, LOG_USER);
+ vsyslog(LOG_WARNING, fmt, ap2);
+ closelog();
+ va_end(ap2);
+}
+
void avahi_warn_linkage(void) {
int w;
@@ -66,11 +90,12 @@ void avahi_warn_linkage(void) {
linkage_warning = 1;
pthread_mutex_unlock(&linkage_mutex);
- if (!w && !getenv("AVAHI_BONJOUR_NOWARN")) {
+ if (!w && !getenv("AVAHI_COMPAT_NOWARN")) {
char exename[256];
+
get_exe_name(exename, sizeof(exename));
-
- fprintf(stderr, "*** WARNING: The application '%s' uses the Bonjour compatiblity layer of Avahi. Please fix it to use the native API! ***\n", exename);
+
+ warning(exename, "*** WARNING: The application '%s' uses the "COMPAT_LAYER" compatiblity layer of Avahi. Please fix it to use the native API! ***\n", exename);
}
}
@@ -78,7 +103,7 @@ void avahi_warn_unsupported(const char *function) {
char exename[256];
get_exe_name(exename, sizeof(exename));
- fprintf(stderr, "*** WARNING: The application '%s' called '%s()' which is not supported (or only supported partially) in the Bonjour compatiblity layer of Avahi. Please fix it to use the native API! ***\n", exename, function);
+ warning(exename, "*** WARNING: The application '%s' called '%s()' which is not supported (or only supported partially) in the "COMPAT_LAYER" compatiblity layer of Avahi. Please fix it to use the native API! ***\n", exename, function);
}
diff --git a/configure.ac b/configure.ac
index 9627ab5..9854203 100644
--- a/configure.ac
+++ b/configure.ac
@@ -35,6 +35,7 @@ AC_SUBST(LIBAVAHI_GLIB_VERSION_INFO, [0:1:0])
AC_SUBST(LIBAVAHI_QT3_VERSION_INFO, [0:0:0])
AC_SUBST(LIBAVAHI_QT4_VERSION_INFO, [0:0:0])
AC_SUBST(LIBAVAHI_COMPAT_LIBDNS_SD_VERSION_INFO, [1:0:0])
+AC_SUBST(LIBAVAHI_COMPAT_HOWL_VERSION_INFO, [0:0:0])
if type -p stow > /dev/null && test -d /usr/local/stow ; then
AC_MSG_NOTICE([*** Found /usr/local/stow: default install prefix set to /usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION} ***])
@@ -627,6 +628,7 @@ tests/Makefile
service-type-database/Makefile
avahi-sharp/Makefile
avahi-compat-libdns_sd/Makefile
+avahi-compat-howl/Makefile
])
AC_OUTPUT
@@ -689,4 +691,5 @@ echo "
Building libavahi-qt4: ${HAVE_QT4}
Building avahi-sharp: ${HAVE_MONO}
Building avahi-compat-libdns_sd: ${BUILD_CLIENT}
+ Building avahi-compat-howl: ${BUILD_CLIENT}
"