X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-common%2Fdbus.c;h=f19c77c55921c0a87b8c45930548218e115036e5;hb=e80dfc163e06f9bd9300d096f384bf418ac3062f;hp=fc4b34b895a3aa8fafb67358ae96a4a4680401a2;hpb=4e2113a7d5b702ff070e8220b32662bb00ae02dd;p=catta diff --git a/avahi-common/dbus.c b/avahi-common/dbus.c index fc4b34b..f19c77c 100644 --- a/avahi-common/dbus.c +++ b/avahi-common/dbus.c @@ -1,18 +1,16 @@ -/* $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 @@ -41,7 +39,7 @@ static const char * const table[- AVAHI_ERR_MAX] = { AVAHI_DBUS_ERR_IS_PATTERN, AVAHI_DBUS_ERR_COLLISION, AVAHI_DBUS_ERR_INVALID_RECORD, - + AVAHI_DBUS_ERR_INVALID_SERVICE_NAME, AVAHI_DBUS_ERR_INVALID_SERVICE_TYPE, AVAHI_DBUS_ERR_INVALID_PORT, @@ -52,7 +50,7 @@ static const char * const table[- AVAHI_ERR_MAX] = { AVAHI_DBUS_ERR_TOO_MANY_OBJECTS, AVAHI_DBUS_ERR_TOO_MANY_ENTRIES, AVAHI_DBUS_ERR_OS, - + AVAHI_DBUS_ERR_ACCESS_DENIED, AVAHI_DBUS_ERR_INVALID_OPERATION, AVAHI_DBUS_ERR_DBUS_ERROR, @@ -63,7 +61,7 @@ static const char * const table[- AVAHI_ERR_MAX] = { AVAHI_DBUS_ERR_INVALID_INTERFACE, AVAHI_DBUS_ERR_INVALID_PROTOCOL, AVAHI_DBUS_ERR_INVALID_FLAGS, - + AVAHI_DBUS_ERR_NOT_FOUND, AVAHI_DBUS_ERR_INVALID_CONFIG, AVAHI_DBUS_ERR_VERSION_MISMATCH, @@ -74,7 +72,7 @@ static const char * const table[- AVAHI_ERR_MAX] = { AVAHI_DBUS_ERR_DNS_SERVFAIL, AVAHI_DBUS_ERR_DNS_NXDOMAIN, AVAHI_DBUS_ERR_DNS_NOTIMP, - + AVAHI_DBUS_ERR_DNS_REFUSED, AVAHI_DBUS_ERR_DNS_YXDOMAIN, AVAHI_DBUS_ERR_DNS_YXRRSET, @@ -86,11 +84,38 @@ static const char * const table[- AVAHI_ERR_MAX] = { AVAHI_DBUS_ERR_INVALID_DNS_TYPE, AVAHI_DBUS_ERR_NOT_SUPPORTED, - AVAHI_DBUS_ERR_NOT_PERMITTED + AVAHI_DBUS_ERR_NOT_PERMITTED, + AVAHI_DBUS_ERR_INVALID_ARGUMENT, + AVAHI_DBUS_ERR_IS_EMPTY, + AVAHI_DBUS_ERR_NO_CHANGE +}; + +struct error_map { + const char *dbus_error; + int avahi_error; +}; + +static struct error_map error_map[] = { + { DBUS_ERROR_FAILED, AVAHI_ERR_FAILURE }, + { DBUS_ERROR_NO_MEMORY, AVAHI_ERR_NO_MEMORY }, + { DBUS_ERROR_SERVICE_UNKNOWN, AVAHI_ERR_NO_DAEMON }, + { DBUS_ERROR_BAD_ADDRESS, AVAHI_ERR_NO_DAEMON }, + { DBUS_ERROR_NOT_SUPPORTED, AVAHI_ERR_NOT_SUPPORTED }, + { DBUS_ERROR_LIMITS_EXCEEDED, AVAHI_ERR_TOO_MANY_OBJECTS }, + { DBUS_ERROR_ACCESS_DENIED, AVAHI_ERR_ACCESS_DENIED }, + { DBUS_ERROR_AUTH_FAILED, AVAHI_ERR_ACCESS_DENIED }, + { DBUS_ERROR_NO_SERVER, AVAHI_ERR_NO_DAEMON }, + { DBUS_ERROR_TIMEOUT, AVAHI_ERR_TIMEOUT }, + { DBUS_ERROR_NO_NETWORK, AVAHI_ERR_NO_NETWORK }, + { DBUS_ERROR_DISCONNECTED, AVAHI_ERR_DISCONNECTED }, + { DBUS_ERROR_INVALID_ARGS, AVAHI_ERR_INVALID_ARGUMENT }, + { DBUS_ERROR_TIMED_OUT, AVAHI_ERR_TIMEOUT }, + { NULL, 0 } }; int avahi_error_dbus_to_number(const char *s) { int e; + const struct error_map *m; assert(s); @@ -98,6 +123,10 @@ int avahi_error_dbus_to_number(const char *s) { if (strcmp(s, table[-e]) == 0) return e; + for (m = error_map; m->dbus_error; m++) + if (strcmp(m->dbus_error, s) == 0) + return m->avahi_error; + return AVAHI_ERR_DBUS_ERROR; }