From 941853354848fca4cc39bd72e6f34ca54443a9c8 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 4 Oct 2005 19:20:47 +0000 Subject: rename compat-bonjour to compat-libdns_sd part II git-svn-id: file:///home/lennart/svn/public/avahi/trunk@696 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe --- compat-libdns_sd/warn.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 compat-libdns_sd/warn.c (limited to 'compat-libdns_sd/warn.c') diff --git a/compat-libdns_sd/warn.c b/compat-libdns_sd/warn.c new file mode 100644 index 0000000..859cfb0 --- /dev/null +++ b/compat-libdns_sd/warn.c @@ -0,0 +1,85 @@ +/* $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 + +#include "warn.h" + +static pthread_mutex_t linkage_mutex = PTHREAD_MUTEX_INITIALIZER; +static int linkage_warning = 0; + +static void get_exe_name(char *t, size_t l) { + int k; + char fn[1024]; + + /* Yes, I know, this is not portable. But who cares? It's + * for cosmetics only, anyway. */ + + snprintf(fn, sizeof(fn), "/proc/%lu/exe", (unsigned long) getpid()); + + if ((k = readlink(fn, t, l-1)) < 0) + snprintf(t, l, "(unknown)"); + else { + char *slash; + + assert((size_t) k <= l-1); + t[k] = 0; + + if ((slash = strrchr(t, '/'))) + memmove(t, slash+1, strlen(slash)+1); + } +} + +void avahi_warn_linkage(void) { + int w; + + pthread_mutex_lock(&linkage_mutex); + w = linkage_warning; + linkage_warning = 1; + pthread_mutex_unlock(&linkage_mutex); + + if (!w && !getenv("AVAHI_BONJOUR_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); + } +} + +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 in the Bonjour compatiblity layer of Avahi. Please fix it to use the native API! ***\n", exename, function); +} + + + -- cgit