DEBUG(daemon_log(LOG_DEBUG, "Ignoring irrelevant ARP packet."));
}
- } else if (event == EVENT_ROUTABLE_ADDR_CONFIGURED) {
+ } else if (event == EVENT_ROUTABLE_ADDR_CONFIGURED && !force_bind) {
daemon_log(LOG_INFO, "A routable address has been configured.");
elapse_time(&next_wakeup, 0, PROBE_WAIT*1000);
next_wakeup_valid = 1;
- } else if (event == EVENT_REFRESH_REQUEST && state == STATE_RUNNING && !force_bind) {
+ } else if (event == EVENT_REFRESH_REQUEST && state == STATE_RUNNING) {
/* The user requested a reannouncing of the address by a SIGHUP */
daemon_log(LOG_INFO, "Reannouncing address.");
/***
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
dbus_connection_unref(client->bus);
client->bus = NULL;
}
-
+
/* Fall through */
-
+
case AVAHI_CLIENT_S_COLLISION:
case AVAHI_CLIENT_S_REGISTERING:
case AVAHI_CLIENT_S_RUNNING:
case AVAHI_CLIENT_CONNECTING:
break;
-
+
}
-
+
if (client->callback)
client->callback (client, state, client->userdata);
}
assert(bus);
assert(message);
-
+
dbus_error_init(&error);
/* fprintf(stderr, "dbus: interface=%s, path=%s, member=%s\n", */
} else if (dbus_message_is_signal(message, DBUS_INTERFACE_DBUS, "NameAcquired")) {
/* Ignore this message */
-
+
} else if (dbus_message_is_signal(message, DBUS_INTERFACE_DBUS, "NameOwnerChanged")) {
char *name, *old, *new;
-
+
if (!dbus_message_get_args(
message, &error,
DBUS_TYPE_STRING, &name,
* available, so we disconnect ourselves */
avahi_client_set_errno(client, AVAHI_ERR_DISCONNECTED);
goto fail;
-
+
} else if (client->state == AVAHI_CLIENT_CONNECTING && (!old || *old == 0)) {
int ret;
-
+
/* Server appeared */
-
+
if ((ret = init_server(client, NULL)) < 0) {
avahi_client_set_errno(client, ret);
goto fail;
}
} else if (!avahi_client_is_connected(client)) {
-
+
/* Ignore messages we get in unconnected state */
-
+
} else if (dbus_message_is_signal (message, AVAHI_DBUS_INTERFACE_SERVER, "StateChanged")) {
int32_t state;
char *e = NULL;
int c;
-
+
if (!dbus_message_get_args(
message, &error,
DBUS_TYPE_INT32, &state,
if ((c = avahi_error_dbus_to_number(e)) != AVAHI_OK)
avahi_client_set_errno(client, c);
-
+
client_set_state(client, (AvahiClientState) state);
} else if (dbus_message_is_signal (message, AVAHI_DBUS_INTERFACE_ENTRY_GROUP, "StateChanged")) {
for (g = client->groups; g; g = g->groups_next)
if (strcmp(g->path, path) == 0)
break;
-
+
if (g) {
int32_t state;
char *e;
int c;
-
+
if (!dbus_message_get_args(
message, &error,
DBUS_TYPE_INT32, &state,
if ((c = avahi_error_dbus_to_number(e)) != AVAHI_OK)
avahi_client_set_errno(client, c);
-
+
avahi_entry_group_set_state(g, state);
}
-
+
} else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_DOMAIN_BROWSER, "ItemNew"))
return avahi_domain_browser_event(client, AVAHI_BROWSER_NEW, message);
- else if (dbus_message_is_signal (message, AVAHI_DBUS_INTERFACE_DOMAIN_BROWSER, "ItemRemove"))
+ else if (dbus_message_is_signal (message, AVAHI_DBUS_INTERFACE_DOMAIN_BROWSER, "ItemRemove"))
return avahi_domain_browser_event(client, AVAHI_BROWSER_REMOVE, message);
- else if (dbus_message_is_signal (message, AVAHI_DBUS_INTERFACE_DOMAIN_BROWSER, "CacheExhausted"))
+ else if (dbus_message_is_signal (message, AVAHI_DBUS_INTERFACE_DOMAIN_BROWSER, "CacheExhausted"))
return avahi_domain_browser_event(client, AVAHI_BROWSER_CACHE_EXHAUSTED, message);
- else if (dbus_message_is_signal (message, AVAHI_DBUS_INTERFACE_DOMAIN_BROWSER, "AllForNow"))
+ else if (dbus_message_is_signal (message, AVAHI_DBUS_INTERFACE_DOMAIN_BROWSER, "AllForNow"))
return avahi_domain_browser_event(client, AVAHI_BROWSER_ALL_FOR_NOW, message);
- else if (dbus_message_is_signal (message, AVAHI_DBUS_INTERFACE_DOMAIN_BROWSER, "Failure"))
+ else if (dbus_message_is_signal (message, AVAHI_DBUS_INTERFACE_DOMAIN_BROWSER, "Failure"))
return avahi_domain_browser_event(client, AVAHI_BROWSER_FAILURE, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_TYPE_BROWSER, "ItemNew"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_TYPE_BROWSER, "ItemNew"))
return avahi_service_type_browser_event (client, AVAHI_BROWSER_NEW, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_TYPE_BROWSER, "ItemRemove"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_TYPE_BROWSER, "ItemRemove"))
return avahi_service_type_browser_event (client, AVAHI_BROWSER_REMOVE, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_TYPE_BROWSER, "CacheExhausted"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_TYPE_BROWSER, "CacheExhausted"))
return avahi_service_type_browser_event (client, AVAHI_BROWSER_CACHE_EXHAUSTED, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_TYPE_BROWSER, "AllForNow"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_TYPE_BROWSER, "AllForNow"))
return avahi_service_type_browser_event (client, AVAHI_BROWSER_ALL_FOR_NOW, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_TYPE_BROWSER, "Failure"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_TYPE_BROWSER, "Failure"))
return avahi_service_type_browser_event (client, AVAHI_BROWSER_FAILURE, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_BROWSER, "ItemNew"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_BROWSER, "ItemNew"))
return avahi_service_browser_event (client, AVAHI_BROWSER_NEW, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_BROWSER, "ItemRemove"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_BROWSER, "ItemRemove"))
return avahi_service_browser_event (client, AVAHI_BROWSER_REMOVE, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_BROWSER, "CacheExhausted"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_BROWSER, "CacheExhausted"))
return avahi_service_browser_event (client, AVAHI_BROWSER_CACHE_EXHAUSTED, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_BROWSER, "AllForNow"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_BROWSER, "AllForNow"))
return avahi_service_browser_event (client, AVAHI_BROWSER_ALL_FOR_NOW, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_BROWSER, "Failure"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_BROWSER, "Failure"))
return avahi_service_browser_event (client, AVAHI_BROWSER_FAILURE, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_RESOLVER, "Found"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_RESOLVER, "Found"))
return avahi_service_resolver_event (client, AVAHI_RESOLVER_FOUND, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_RESOLVER, "Failure"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_SERVICE_RESOLVER, "Failure"))
return avahi_service_resolver_event (client, AVAHI_RESOLVER_FAILURE, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_HOST_NAME_RESOLVER, "Found"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_HOST_NAME_RESOLVER, "Found"))
return avahi_host_name_resolver_event (client, AVAHI_RESOLVER_FOUND, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_HOST_NAME_RESOLVER, "Failure"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_HOST_NAME_RESOLVER, "Failure"))
return avahi_host_name_resolver_event (client, AVAHI_RESOLVER_FAILURE, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_ADDRESS_RESOLVER, "Found"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_ADDRESS_RESOLVER, "Found"))
return avahi_address_resolver_event (client, AVAHI_RESOLVER_FOUND, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_ADDRESS_RESOLVER, "Failure"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_ADDRESS_RESOLVER, "Failure"))
return avahi_address_resolver_event (client, AVAHI_RESOLVER_FAILURE, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_RECORD_BROWSER, "ItemNew"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_RECORD_BROWSER, "ItemNew"))
return avahi_record_browser_event (client, AVAHI_BROWSER_NEW, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_RECORD_BROWSER, "ItemRemove"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_RECORD_BROWSER, "ItemRemove"))
return avahi_record_browser_event (client, AVAHI_BROWSER_REMOVE, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_RECORD_BROWSER, "CacheExhausted"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_RECORD_BROWSER, "CacheExhausted"))
return avahi_record_browser_event (client, AVAHI_BROWSER_CACHE_EXHAUSTED, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_RECORD_BROWSER, "AllForNow"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_RECORD_BROWSER, "AllForNow"))
return avahi_record_browser_event (client, AVAHI_BROWSER_ALL_FOR_NOW, message);
- else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_RECORD_BROWSER, "Failure"))
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_RECORD_BROWSER, "Failure"))
return avahi_record_browser_event (client, AVAHI_BROWSER_FAILURE, message);
else {
fprintf(stderr, "WARNING: Unhandled message: interface=%s, path=%s, member=%s\n",
- dbus_message_get_interface(message),
+ dbus_message_get_interface(message),
dbus_message_get_path(message),
dbus_message_get_member(message));
-
+
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
-
+
return DBUS_HANDLER_RESULT_HANDLED;
fail:
}
client_set_state(client, AVAHI_CLIENT_FAILURE);
-
+
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
DBusError error;
int32_t state;
int e = AVAHI_ERR_NO_MEMORY;
-
+
assert(client);
dbus_error_init(&error);
dbus_message_unref(message);
dbus_message_unref(reply);
-
+
return AVAHI_OK;
fail:
if (dbus_error_is_set(&error)) {
e = avahi_error_dbus_to_number (error.name);
dbus_error_free(&error);
- }
-
+ }
+
if (ret_error)
*ret_error = e;
dbus_message_unref(message);
if (reply)
dbus_message_unref(reply);
-
+
return e;
}
DBusError error;
uint32_t version;
int e = AVAHI_ERR_NO_MEMORY;
-
+
assert(client);
dbus_error_init(&error);
/* If the method GetAPIVersion is not known, we look if
* GetVersionString matches "avahi 0.6" which is the only
* version we support which doesn't have GetAPIVersion() .*/
-
+
dbus_message_unref(message);
if (reply) dbus_message_unref(reply);
dbus_error_free(&error);
goto fail;
reply = dbus_connection_send_with_reply_and_block (client->bus, message, -1, &error);
-
+
if (!reply || dbus_error_is_set (&error))
goto fail;
-
+
if (!dbus_message_get_args (reply, &error, DBUS_TYPE_STRING, &version_str, DBUS_TYPE_INVALID) ||
dbus_error_is_set (&error))
goto fail;
version = strcmp(version_str, "avahi 0.6") == 0 ? 0x0201 : 0x0000;
-
+
} else {
-
+
if (!dbus_message_get_args (reply, &error, DBUS_TYPE_UINT32, &version, DBUS_TYPE_INVALID) ||
dbus_error_is_set(&error))
goto fail;
}
/*fprintf(stderr, "API Version 0x%04x\n", version);*/
-
+
if ((version & 0xFF00) != (AVAHI_CLIENT_DBUS_API_SUPPORTED & 0xFF00) ||
(version & 0x00FF) < (AVAHI_CLIENT_DBUS_API_SUPPORTED & 0x00FF)) {
e = AVAHI_ERR_VERSION_MISMATCH;
dbus_message_unref(message);
dbus_message_unref(reply);
-
+
return AVAHI_OK;
fail:
if (dbus_error_is_set(&error)) {
e = avahi_error_dbus_to_number (error.name);
dbus_error_free(&error);
- }
+ }
if (ret_error)
*ret_error = e;
dbus_message_unref(message);
if (reply)
dbus_message_unref(reply);
-
+
return e;
}
static int init_server(AvahiClient *client, int *ret_error) {
int r;
-
+
if ((r = check_version(client, ret_error)) < 0)
return r;
#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;
-
+
if (!(c = dbus_connection_open_private(a, error)))
return NULL;
AvahiClient *client = NULL;
DBusError error;
+ avahi_init_i18n();
+
dbus_error_init(&error);
if (!(client = avahi_new(AvahiClient, 1))) {
client->userdata = userdata;
client->state = (AvahiClientState) -1;
client->flags = flags;
-
+
client->host_name = NULL;
client->host_name_fqdn = NULL;
client->domain_name = NULL;
client->version_string = NULL;
client->local_service_cookie_valid = 0;
-
+
AVAHI_LLIST_HEAD_INIT(AvahiEntryGroup, client->groups);
AVAHI_LLIST_HEAD_INIT(AvahiDomainBrowser, client->domain_browsers);
AVAHI_LLIST_HEAD_INIT(AvahiServiceBrowser, client->service_browsers);
if (!dbus_connection_add_filter (client->bus, filter_func, client, NULL)) {
if (ret_error)
- *ret_error = AVAHI_ERR_NO_MEMORY;
+ *ret_error = AVAHI_ERR_NO_MEMORY;
goto fail;
}
-
+
dbus_bus_add_match(
client->bus,
"type='signal', "
dbus_error_free(&error);
if (!(flags & AVAHI_CLIENT_NO_FAIL)) {
-
+
if (ret_error)
*ret_error = AVAHI_ERR_NO_DAEMON;
-
+
goto fail;
}
/* The user doesn't want this call to fail if the daemon is not
* available, so let's return succesfully */
client_set_state(client, AVAHI_CLIENT_CONNECTING);
-
+
} else {
if (init_server(client, ret_error) < 0)
else
*ret_error = avahi_error_dbus_to_number(error.name);
}
-
+
dbus_error_free(&error);
}
-
+
return NULL;
}
#else
dbus_connection_disconnect(client->bus);
#endif
-
+
while (client->groups)
avahi_entry_group_free(client->groups);
while (client->record_browsers)
avahi_record_browser_free(client->record_browsers);
-
+
if (client->bus)
dbus_connection_unref(client->bus);
avahi_free(client->host_name);
avahi_free(client->host_name_fqdn);
avahi_free(client->domain_name);
-
+
avahi_free(client);
}
goto fail;
}
}
-
+
reply = dbus_connection_send_with_reply_and_block (client->bus, message, -1, &error);
if (!reply || dbus_error_is_set (&error))
if (!dbus_message_get_args (reply, &error, DBUS_TYPE_STRING, &ret, DBUS_TYPE_INVALID) ||
dbus_error_is_set (&error))
goto fail;
-
+
if (!(n = avahi_strdup(ret))) {
avahi_client_set_errno(client, AVAHI_ERR_NO_MEMORY);
goto fail;
dbus_message_unref(message);
dbus_message_unref(reply);
-
+
return n;
fail:
dbus_message_unref(message);
if (reply)
dbus_message_unref(reply);
-
+
if (dbus_error_is_set(&error)) {
avahi_client_set_dbus_error(client, &error);
dbus_error_free(&error);
if (!client->domain_name)
client->domain_name = avahi_client_get_string_reply_and_block(client, "GetDomainName", NULL);
-
+
return client->domain_name;
}
const char* avahi_client_get_host_name(AvahiClient *client) {
assert(client);
-
+
if (!avahi_client_is_connected(client)) {
avahi_client_set_errno(client, AVAHI_ERR_BAD_STATE);
return NULL;
if (!client->host_name)
client->host_name = avahi_client_get_string_reply_and_block(client, "GetHostName", NULL);
-
+
return client->host_name;
}
avahi_client_set_errno(client, AVAHI_ERR_BAD_STATE);
return NULL;
}
-
+
if (!client->host_name_fqdn)
client->host_name_fqdn = avahi_client_get_string_reply_and_block(client, "GetHostNameFqdn", NULL);
int avahi_client_errno(AvahiClient *client) {
assert(client);
-
+
return client->error;
}
DBusMessage *message = NULL, *reply = NULL;
DBusError error;
int r = AVAHI_OK;
-
+
dbus_error_init(&error);
assert(client);
assert(path);
assert(interface);
assert(method);
-
+
if (!(message = dbus_message_new_method_call(AVAHI_DBUS_NAME, path, interface, method))) {
r = avahi_client_set_errno(client, AVAHI_ERR_NO_MEMORY);
goto fail;
}
-
+
if (!(reply = dbus_connection_send_with_reply_and_block(client->bus, message, -1, &error)) ||
dbus_error_is_set (&error)) {
r = avahi_client_set_errno(client, AVAHI_ERR_DBUS_ERROR);
goto fail;
}
-
+
if (!dbus_message_get_args(reply, &error, DBUS_TYPE_INVALID) ||
dbus_error_is_set (&error)) {
r = avahi_client_set_errno(client, AVAHI_ERR_DBUS_ERROR);
dbus_message_unref(reply);
return AVAHI_OK;
-
+
fail:
if (dbus_error_is_set(&error)) {
r = avahi_client_set_dbus_error(client, &error);
if (!dbus_message_get_args (reply, &error, DBUS_TYPE_UINT32, &client->local_service_cookie, DBUS_TYPE_INVALID) ||
dbus_error_is_set (&error))
goto fail;
-
+
dbus_message_unref(message);
dbus_message_unref(reply);
dbus_message_unref(message);
if (reply)
dbus_message_unref(reply);
-
+
if (dbus_error_is_set(&error)) {
avahi_client_set_dbus_error(client, &error);
dbus_error_free(&error);
DBusError error;
assert(client);
-
+
if (!avahi_client_is_connected(client))
return avahi_client_set_errno(client, AVAHI_ERR_BAD_STATE);
avahi_client_set_errno (client, AVAHI_ERR_NO_MEMORY);
goto fail;
}
-
+
reply = dbus_connection_send_with_reply_and_block(client->bus, message, -1, &error);
if (!reply || dbus_error_is_set (&error))
client->host_name = NULL;
avahi_free(client->host_name_fqdn);
client->host_name_fqdn = NULL;
-
+
return 0;
fail:
dbus_message_unref(message);
if (reply)
dbus_message_unref(reply);
-
+
if (dbus_error_is_set(&error)) {
avahi_client_set_dbus_error(client, &error);
dbus_error_free(&error);
i18n.c i18n.h
libavahi_common_la_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -DAVAHI_LOCALEDIR=\"$(avahilocaledir)\"
-libavahi_common_la_LIBADD = $(AM_LDADD) $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+libavahi_common_la_LIBADD = $(AM_LDADD) $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) $(LIBINTL)
libavahi_common_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LIBAVAHI_COMMON_VERSION_INFO)
strlst_test_SOURCES = \
/***
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
int avahi_address_cmp(const AvahiAddress *a, const AvahiAddress *b) {
assert(a);
assert(b);
-
+
if (a->proto != b->proto)
return -1;
assert(s);
assert(length);
assert(a);
-
+
if (!(inet_ntop(avahi_proto_to_af(a->proto), a->data.data, s, length)))
return NULL;
-
+
return s;
}
} else {
if (inet_pton(avahi_proto_to_af(proto), s, ret_addr->data.data) <= 0)
return NULL;
-
+
ret_addr->proto = proto;
}
-
+
return ret_addr;
}
AVAHI_C_DECL_BEGIN
+#if defined(__GNUC__) && (__GNUC__ >= 4) && (__GNUC_MINOR__ >= 3)
+#define AVAHI_GCC_ALLOC_SIZE(x) __attribute__ ((__alloc_size__(x)))
+#define AVAHI_GCC_ALLOC_SIZE2(x,y) __attribute__ ((__alloc_size__(x,y)))
+#else
+/** Macro for usage of GCC's alloc_size attribute */
+#define AVAHI_GCC_ALLOC_SIZE(x)
+#define AVAHI_GCC_ALLOC_SIZE2(x,y)
+#endif
+
#if defined(__GNUC__) && (__GNUC__ >= 4)
#define AVAHI_GCC_SENTINEL __attribute__ ((sentinel))
#else
AVAHI_C_DECL_BEGIN
/** Allocate some memory, just like the libc malloc() */
-void *avahi_malloc(size_t size);
+void *avahi_malloc(size_t size) AVAHI_GCC_ALLOC_SIZE(1);
/** Similar to avahi_malloc() but set the memory to zero */
-void *avahi_malloc0(size_t size);
+void *avahi_malloc0(size_t size) AVAHI_GCC_ALLOC_SIZE(1);
/** Free some memory */
void avahi_free(void *p);
/** Similar to libc's realloc() */
-void *avahi_realloc(void *p, size_t size);
+void *avahi_realloc(void *p, size_t size) AVAHI_GCC_ALLOC_SIZE(2);
/** Internal helper for avahi_new() */
-static inline void* avahi_new_internal(unsigned n, size_t k) {
+static inline void* AVAHI_GCC_ALLOC_SIZE2(1,2) avahi_new_internal(unsigned n, size_t k) {
assert(n < INT_MAX/k);
return avahi_malloc(n*k);
}
#define avahi_new(type, n) ((type*) avahi_new_internal((n), sizeof(type)))
/** Internal helper for avahi_new0() */
-static inline void* avahi_new0_internal(unsigned n, size_t k) {
+static inline void* AVAHI_GCC_ALLOC_SIZE2(1,2) avahi_new0_internal(unsigned n, size_t k) {
assert(n < INT_MAX/k);
return avahi_malloc0(n*k);
}
char *avahi_strndup(const char *s, size_t l);
/** Duplicate the given memory block into a new one allocated with avahi_malloc() */
-void *avahi_memdup(const void *s, size_t l);
+void *avahi_memdup(const void *s, size_t l) AVAHI_GCC_ALLOC_SIZE(2);
/** Wraps allocator functions */
typedef struct AvahiAllocator {
- void* (*malloc)(size_t size);
- void (*free)(void *p);
- void* (*realloc)(void *p, size_t size);
- void* (*calloc)(size_t nmemb, size_t size); /**< May be NULL */
+ void* (*malloc)(size_t size) AVAHI_GCC_ALLOC_SIZE(1);
+ void (*free)(void *p);
+ void* (*realloc)(void *p, size_t size) AVAHI_GCC_ALLOC_SIZE(2);
+ void* (*calloc)(size_t nmemb, size_t size) AVAHI_GCC_ALLOC_SIZE2(1,2); /**< May be NULL */
} AvahiAllocator;
/** Change the allocator. May be NULL to return to default (libc)
/***
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
/* Before entering poll() we unlock the mutex, so that
* avahi_simple_poll_quit() can succeed from another thread. */
-
+
pthread_mutex_unlock(mutex);
r = poll(ufds, nfds, timeout);
pthread_mutex_lock(mutex);
/* Make sure that signals are delivered to the main thread */
sigfillset(&mask);
pthread_sigmask(SIG_BLOCK, &mask, NULL);
-
+
pthread_mutex_lock(&p->mutex);
p->retval = avahi_simple_poll_loop(p->simple_poll);
pthread_mutex_unlock(&p->mutex);
-
+
return NULL;
}
if (!(p = avahi_new(AvahiThreadedPoll, 1)))
goto fail; /* OOM */
-
+
if (!(p->simple_poll = avahi_simple_poll_new()))
goto fail;
-
+
pthread_mutex_init(&p->mutex, NULL);
avahi_simple_poll_set_func(p->simple_poll, poll_func, &p->mutex);
-
+
p->thread_running = 0;
return p;
if (pthread_create(&p->thread_id, NULL, thread, p) < 0)
return -1;
+ p->thread_running = 1;
+
return 0;
}
pthread_mutex_lock(&p->mutex);
avahi_simple_poll_quit(p->simple_poll);
pthread_mutex_unlock(&p->mutex);
-
+
pthread_join(p->thread_id, NULL);
p->thread_running = 0;
/* Make sure that this function is not called from the helper thread */
assert(!p->thread_running || !pthread_equal(pthread_self(), p->thread_id));
-
+
pthread_mutex_lock(&p->mutex);
}
/* Make sure that this function is not called from the helper thread */
assert(!p->thread_running || !pthread_equal(pthread_self(), p->thread_id));
-
+
pthread_mutex_unlock(&p->mutex);
}
char *domain_name; /**< Default domain name. If left empty defaults to .local */
int use_ipv4; /**< Enable IPv4 support */
int use_ipv6; /**< Enable IPv6 support */
+ AvahiStringList *allow_interfaces;/**< Allow specific interface to be used for Avahi */
+ AvahiStringList *deny_interfaces; /**< Deny specific interfaces to be used for Avahi */
int publish_hinfo; /**< Register a HINFO record for the host containing the local OS and CPU type */
int publish_addresses; /**< Register A, AAAA and PTR records for all local IP addresses */
int publish_workstation; /**< Register a _workstation._tcp service */
int raddr_valid = 0;
struct ifa_msghdr *ifam = (struct ifa_msghdr *) rtm;
char *cp = (char *)(ifam + 1);
- int addrs = ifam->ifam_addrs;
+ char *cp0;
int i;
int prefixlen = 0;
struct sockaddr *sa =NULL;
((struct sockaddr *)cp)->sa_family = AF_INET;
#endif
- if(((struct sockaddr *)cp)->sa_family != AF_INET && ((struct sockaddr *)cp)->sa_family != AF_INET6)
+ for (cp0 = cp, i = 0; i < RTAX_MAX; i++) {
+ if (!(ifam->ifam_addrs & (1<<i)))
+ continue;
+ sa = (struct sockaddr *)cp;
+ if (i == RTAX_IFA)
+ break;
+#ifdef SA_SIZE
+ cp += SA_SIZE(sa);
+#else
+ ADVANCE(cp, sa);
+#endif
+ }
+
+ if(sa->sa_family != AF_INET && sa->sa_family != AF_INET6)
return;
- if (!(iface = avahi_interface_monitor_get_interface(m, (AvahiIfIndex) ifam->ifam_index, avahi_af_to_proto(((struct sockaddr *)cp)->sa_family))))
+ if (!(iface = avahi_interface_monitor_get_interface(m, (AvahiIfIndex) ifam->ifam_index, avahi_af_to_proto(sa->sa_family))))
return;
- raddr.proto = avahi_af_to_proto(((struct sockaddr *)cp)->sa_family);
+ raddr.proto = avahi_af_to_proto(sa->sa_family);
- for(i = 0; addrs != 0 && i < RTAX_MAX; addrs &= ~(1<<i), i++)
+ for(cp = cp0, i = 0; i < RTAX_MAX; i++)
{
- if (!(addrs & 1<<i))
+ if (!(ifam->ifam_addrs & (1<<i)))
continue;
sa = (struct sockaddr *)cp;
#ifdef HAVE_SYS_SYSCTL_H
break;
case RTA_IFA:
memcpy(raddr.data.data, &((struct sockaddr_in6 *)sa)->sin6_addr, sizeof(struct in6_addr));
+#ifdef __KAME__
+ if (IN6_IS_ADDR_LINKLOCAL((struct in6_addr *)raddr.data.data))
+ {
+ ((struct in6_addr *)raddr.data.data)->s6_addr[2] = 0;
+ ((struct in6_addr *)raddr.data.data)->s6_addr[3] = 0;
+ }
+#endif
raddr_valid = 1;
default:
break;
if (!(addriface = avahi_interface_monitor_get_address(m, iface, &raddr)))
if (!(addriface = avahi_interface_address_new(m, iface, &raddr, prefixlen)))
return; /* OOM */
- /* FIXME */
- /* addriface->global_scope = ifaddrmsg->ifa_scope == RT_SCOPE_UNIVERSE || ifaddrmsg->ifa_scope == RT_SCOPE_SITE; */
- addriface->global_scope = 1;
+ if (raddr.proto == AVAHI_PROTO_INET6)
+ {
+ addriface->global_scope = !(IN6_IS_ADDR_LINKLOCAL((struct in6_addr *)raddr.data.data) || IN6_IS_ADDR_MULTICAST((struct in6_addr *)raddr.data.data));
+ }
+ else
+ addriface->global_scope = 1;
}
else
{
/***
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
m->server->state == AVAHI_SERVER_REGISTERING)) {
/* Fill the entry group */
- if (!a->entry_group)
+ if (!a->entry_group)
a->entry_group = avahi_s_entry_group_new(m->server, avahi_host_rr_entry_group_callback, NULL);
if (!a->entry_group) /* OOM */
return;
-
+
if (avahi_s_entry_group_is_empty(a->entry_group)) {
char t[AVAHI_ADDRESS_STR_MAX];
AvahiProtocol p;
p = (a->interface->protocol == AVAHI_PROTO_INET && m->server->config.publish_a_on_ipv6) ||
(a->interface->protocol == AVAHI_PROTO_INET6 && m->server->config.publish_aaaa_on_ipv4) ? AVAHI_PROTO_UNSPEC : a->interface->protocol;
-
+
avahi_address_snprint(t, sizeof(t), &a->address);
avahi_log_info("Registering new address record for %s on %s.%s.", t, a->interface->hardware->name, p == AVAHI_PROTO_UNSPEC ? "*" : avahi_proto_to_string(p));
avahi_server_decrease_host_rr_pending(m->server);
avahi_log_info("Withdrawing address record for %s on %s.", t, a->interface->hardware->name);
-
+
avahi_s_entry_group_reset(a->entry_group);
}
- }
+ }
}
void avahi_interface_update_rrs(AvahiInterface *i, int remove_rrs) {
AvahiInterfaceAddress *a;
-
+
assert(i);
for (a = i->addresses; a; a = a->address_next)
if (!hw->entry_group)
return; /* OOM */
-
+
if (avahi_s_entry_group_is_empty(hw->entry_group)) {
char name[AVAHI_LABEL_MAX], mac[256];
avahi_format_mac_address(mac, sizeof(mac), hw->mac_address, hw->mac_address_size);
snprintf(name, sizeof(name), "%s [%s]", m->server->host_name, mac);
- if (avahi_server_add_service(m->server, hw->entry_group, hw->index, AVAHI_PROTO_UNSPEC, 0, name, "_workstation._tcp", NULL, NULL, 9, NULL) < 0) {
+ if (avahi_server_add_service(m->server, hw->entry_group, hw->index, AVAHI_PROTO_UNSPEC, 0, name, "_workstation._tcp", NULL, NULL, 9, NULL) < 0) {
avahi_log_warn(__FILE__": avahi_server_add_service() failed: %s", avahi_strerror(m->server->error));
avahi_s_entry_group_free(hw->entry_group);
hw->entry_group = NULL;
} else
avahi_s_entry_group_commit(hw->entry_group);
}
-
+
} else {
if (hw->entry_group && !avahi_s_entry_group_is_empty(hw->entry_group)) {
if ((i->protocol == AVAHI_PROTO_INET6 && i->monitor->server->fd_ipv6 < 0) ||
(i->protocol == AVAHI_PROTO_INET && i->monitor->server->fd_ipv4 < 0))
return -1;
-
+
if (join) {
AvahiInterfaceAddress *a;
r = avahi_mdns_mcast_join_ipv6(i->monitor->server->fd_ipv6, &i->local_mcast_address.data.ipv6, i->hardware->index, join);
else {
assert(i->protocol == AVAHI_PROTO_INET);
-
+
r = avahi_mdns_mcast_join_ipv4(i->monitor->server->fd_ipv4, &i->local_mcast_address.data.ipv4, i->hardware->index, join);
}
i->mcast_joined = 0;
else
i->mcast_joined = join;
-
+
return 0;
}
/* Check whether old address we joined with is still available. If
* not, rejoin using an other address. */
-
+
for (a = i->addresses; a; a = a->address_next) {
if (a->global_scope && !usable)
usable = a;
-
+
if (avahi_address_cmp(&a->address, &i->local_mcast_address) == 0) {
if (a->global_scope)
if (found && !usable)
/* No action necessary: the address still exists and no better one has been found */
return 0;
-
+
interface_mdns_mcast_join(i, 0);
return interface_mdns_mcast_join(i, 1);
}
avahi_s_entry_group_free(a->entry_group);
interface_mdns_mcast_rejoin(a->interface);
-
+
avahi_free(a);
}
if (i->mcast_joined)
interface_mdns_mcast_join(i, 0);
-
+
/* Remove queriers */
avahi_querier_free_all(i);
avahi_hashmap_free(i->queriers_by_key);
/* Remove local RRs */
avahi_interface_update_rrs(i, 1);
-
+
while (i->addresses)
avahi_interface_address_free(i->addresses);
avahi_query_scheduler_free(i->query_scheduler);
avahi_probe_scheduler_free(i->probe_scheduler);
avahi_cache_free(i->cache);
-
+
AVAHI_LLIST_REMOVE(AvahiInterface, interface, i->monitor->interfaces, i);
AVAHI_LLIST_REMOVE(AvahiInterface, by_hardware, i->hardware->interfaces, i);
-
+
avahi_free(i);
}
assert(hw);
avahi_hw_interface_update_rrs(hw, 1);
-
+
while (hw->interfaces)
avahi_interface_free(hw->interfaces, send_goodbye);
if (hw->entry_group)
avahi_s_entry_group_free(hw->entry_group);
-
+
AVAHI_LLIST_REMOVE(AvahiHwInterface, hardware, hw->monitor->hw_interfaces, hw);
avahi_hashmap_remove(hw->monitor->hashmap, &hw->index);
AvahiInterface* avahi_interface_new(AvahiInterfaceMonitor *m, AvahiHwInterface *hw, AvahiProtocol protocol) {
AvahiInterface *i;
-
+
assert(m);
assert(hw);
assert(AVAHI_PROTO_VALID(protocol));
if (!(i = avahi_new(AvahiInterface, 1)))
goto fail; /* OOM */
-
+
i->monitor = m;
i->hardware = hw;
i->protocol = protocol;
AVAHI_LLIST_PREPEND(AvahiInterface, interface, m->interfaces, i);
return i;
-
+
fail:
if (i) {
AvahiHwInterface *avahi_hw_interface_new(AvahiInterfaceMonitor *m, AvahiIfIndex idx) {
AvahiHwInterface *hw;
-
+
assert(m);
assert(AVAHI_IF_VALID(idx));
if (!(hw = avahi_new(AvahiHwInterface, 1)))
return NULL;
-
+
hw->monitor = m;
hw->name = NULL;
hw->flags_ok = 0;
AVAHI_LLIST_HEAD_INIT(AvahiInterface, hw->interfaces);
AVAHI_LLIST_PREPEND(AvahiHwInterface, hardware, m->hw_interfaces, hw);
-
+
avahi_hashmap_insert(m->hashmap, &hw->index, hw);
if (m->server->fd_ipv4 >= 0 || m->server->config.publish_a_on_ipv6)
avahi_announce_interface(m->server, i);
avahi_multicast_lookup_engine_new_interface(m->server->multicast_lookup_engine, i);
}
-
+
} else if (!b && i->announcing) {
avahi_log_info("Interface %s.%s no longer relevant for mDNS.", i->hardware->name, avahi_proto_to_string(i->protocol));
avahi_cache_flush(i->cache);
i->announcing = 0;
-
+
} else
interface_mdns_mcast_rejoin(i);
}
void avahi_hw_interface_check_relevant(AvahiHwInterface *hw) {
AvahiInterface *i;
-
+
assert(hw);
for (i = hw->interfaces; i; i = i->by_hardware_next)
if (!(m = avahi_new0(AvahiInterfaceMonitor, 1)))
return NULL; /* OOM */
-
+
m->server = s;
m->list_complete = 0;
m->hashmap = avahi_hashmap_new(avahi_int_hash, avahi_int_equal, NULL, NULL);
assert(!m->interfaces);
avahi_interface_monitor_free_osdep(m);
-
+
if (m->hashmap)
avahi_hashmap_free(m->hashmap);
AvahiInterface* avahi_interface_monitor_get_interface(AvahiInterfaceMonitor *m, AvahiIfIndex idx, AvahiProtocol protocol) {
AvahiHwInterface *hw;
AvahiInterface *i;
-
+
assert(m);
assert(idx >= 0);
assert(protocol != AVAHI_PROTO_UNSPEC);
AvahiInterfaceAddress* avahi_interface_monitor_get_address(AvahiInterfaceMonitor *m, AvahiInterface *i, const AvahiAddress *raddr) {
AvahiInterfaceAddress *ia;
-
+
assert(m);
assert(i);
assert(raddr);
if (!i->announcing)
return;
-
+
assert(!a || a->proto == i->protocol);
if (i->protocol == AVAHI_PROTO_INET && i->monitor->server->fd_ipv4 >= 0)
if (!i->announcing)
return 0;
-
+
return avahi_query_scheduler_post(i->query_scheduler, key, immediately, ret_id);
}
if (!i->announcing)
return 0;
-
+
return avahi_response_scheduler_post(i->response_scheduler, record, flush_cache, querier, immediately);
}
int avahi_interface_post_probe(AvahiInterface *i, AvahiRecord *record, int immediately) {
assert(i);
assert(record);
-
+
if (!i->announcing)
return 0;
return 0;
}
-int avahi_interface_is_relevant(AvahiInterface *i) {
+static int avahi_interface_is_relevant_internal(AvahiInterface *i) {
AvahiInterfaceAddress *a;
-
+
assert(i);
if (!i->hardware->flags_ok)
return 0;
-
+
for (a = i->addresses; a; a = a->address_next)
if (avahi_interface_address_is_relevant(a))
return 1;
return 0;
}
-
+
+int avahi_interface_is_relevant(AvahiInterface *i) {
+ AvahiStringList *l;
+ assert(i);
+
+ for (l = i->monitor->server->config.deny_interfaces; l; l = l->next)
+ if (strcasecmp((char*) l->text, i->hardware->name) == 0)
+ return 0;
+
+ if (i->monitor->server->config.allow_interfaces) {
+
+ for (l = i->monitor->server->config.allow_interfaces; l; l = l->next)
+ if (strcasecmp((char*) l->text, i->hardware->name) == 0)
+ goto good;
+
+ return 0;
+ }
+
+good:
+ return avahi_interface_is_relevant_internal(i);
+}
+
int avahi_interface_address_is_relevant(AvahiInterfaceAddress *a) {
AvahiInterfaceAddress *b;
assert(a);
if (a->global_scope)
return 1;
else {
-
+
/* Publish link local IP addresses if they are the only ones on the link */
for (b = a->interface->addresses; b; b = b->address_next) {
if (b == a)
continue;
-
+
if (b->global_scope)
return 0;
}
int avahi_interface_match(AvahiInterface *i, AvahiIfIndex idx, AvahiProtocol protocol) {
assert(i);
-
+
if (idx != AVAHI_IF_UNSPEC && idx != i->hardware->index)
return 0;
void avahi_interface_monitor_walk(AvahiInterfaceMonitor *m, AvahiIfIndex interface, AvahiProtocol protocol, AvahiInterfaceMonitorWalkCallback callback, void* userdata) {
assert(m);
assert(callback);
-
+
if (interface != AVAHI_IF_UNSPEC) {
if (protocol != AVAHI_PROTO_UNSPEC) {
AvahiInterface *i;
-
+
if ((i = avahi_interface_monitor_get_interface(m, interface, protocol)))
callback(m, i, userdata);
-
+
} else {
AvahiHwInterface *hw;
AvahiInterface *i;
if (avahi_interface_match(i, interface, protocol))
callback(m, i, userdata);
}
-
+
} else {
AvahiInterface *i;
-
+
for (i = m->interfaces; i; i = i->interface_next)
if (avahi_interface_match(i, interface, protocol))
callback(m, i, userdata);
int avahi_interface_address_on_link(AvahiInterface *i, const AvahiAddress *a) {
AvahiInterfaceAddress *ia;
-
+
assert(i);
assert(a);
if (a->proto == AVAHI_PROTO_INET) {
uint32_t m;
-
+
m = ~(((uint32_t) -1) >> ia->prefix_len);
-
+
if ((ntohl(a->data.ipv4.address) & m) == (ntohl(ia->address.data.ipv4.address) & m))
return 1;
} else {
assert(a->proto == AVAHI_PROTO_INET6);
pl = ia->prefix_len;
-
+
for (j = 0; j < 16; j++) {
uint8_t m;
if (pl == 0)
return 1;
-
+
if (pl >= 8) {
m = 0xFF;
pl -= 8;
m = ~(0xFF >> pl);
pl = 0;
}
-
+
if ((a->data.ipv6.address[j] & m) != (ia->address.data.ipv6.address[j] & m))
break;
}
int avahi_interface_has_address(AvahiInterfaceMonitor *m, AvahiIfIndex iface, const AvahiAddress *a) {
AvahiInterface *i;
AvahiInterfaceAddress *j;
-
+
assert(m);
assert(iface != AVAHI_IF_UNSPEC);
assert(a);
if (i->protocol != a->proto)
continue;
-
+
for (ai = i->addresses; ai; ai = ai->address_next)
if (avahi_address_cmp(a, &ai->address) == 0)
return i->hardware->index;
/***
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
if (type == AVAHI_DNS_TYPE_ANY) {
AvahiEntry *e;
-
+
for (e = s->entries; e; e = e->entries_next)
if (!e->dead &&
avahi_entry_is_registered(s, e, i) &&
} else {
AvahiEntry *e;
AvahiKey *k;
-
+
if (!(k = avahi_key_new(name, AVAHI_DNS_CLASS_IN, type)))
return; /** OOM */
-
+
for (e = avahi_hashmap_lookup(s->entries_by_key, k); e; e = e->by_key_next)
- if (!e->dead && avahi_entry_is_registered(s, e, i))
+ if (!e->dead && avahi_entry_is_registered(s, e, i))
callback(s, e->record, e->flags & AVAHI_PUBLISH_UNIQUE, userdata);
-
+
avahi_key_unref(k);
}
}
assert(callback);
/* Call the specified callback far all records referenced by the one specified in *r */
-
+
if (r->key->clazz == AVAHI_DNS_CLASS_IN) {
if (r->key->type == AVAHI_DNS_TYPE_PTR) {
enum_aux_records(s, i, r->data.ptr.name, AVAHI_DNS_TYPE_SRV, callback, userdata);
AvahiEntry *e;
/* Handle ANY query */
-
+
for (e = s->entries; e; e = e->entries_next)
if (!e->dead && avahi_key_pattern_match(k, e->record->key) && avahi_entry_is_registered(s, e, i))
avahi_server_prepare_response(s, i, e, unicast_response, 0);
AvahiEntry *e;
/* Handle all other queries */
-
+
for (e = avahi_hashmap_lookup(s->entries_by_key, k); e; e = e->by_key_next)
if (!e->dead && avahi_entry_is_registered(s, e, i))
avahi_server_prepare_response(s, i, e, unicast_response, 0);
if (!(cname_key = avahi_key_new(k->name, AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_CNAME)))
return;
-
+
avahi_server_prepare_matching_responses(s, i, cname_key, unicast_response);
avahi_key_unref(cname_key);
}
if (e->dead)
return;
-
+
if (e->group) {
AvahiEntry *k;
-
- for (k = e->group->entries; k; k = k->by_group_next)
+
+ for (k = e->group->entries; k; k = k->by_group_next)
if (!k->dead) {
avahi_goodbye_entry(s, k, 0, 1);
k->dead = 1;
static void withdraw_rrset(AvahiServer *s, AvahiKey *key) {
AvahiEntry *e;
-
+
assert(s);
assert(key);
/* Withdraw an entry RRSset */
-
+
for (e = avahi_hashmap_lookup(s->entries_by_key, key); e; e = e->by_key_next)
withdraw_entry(s, e);
}
static void incoming_probe(AvahiServer *s, AvahiRecord *record, AvahiInterface *i) {
AvahiEntry *e, *n;
int ours = 0, won = 0, lost = 0;
-
+
assert(s);
assert(record);
assert(i);
/* Handle incoming probes and check if they conflict our own probes */
-
+
for (e = avahi_hashmap_lookup(s->entries_by_key, record->key); e; e = n) {
int cmp;
n = e->by_key_next;
if (e->dead)
continue;
-
+
if ((cmp = avahi_record_lexicographical_compare(e->record, record)) == 0) {
ours = 1;
break;
} else {
-
+
if (avahi_entry_is_probing(s, e, i)) {
if (cmp > 0)
won = 1;
if (!ours) {
char *t = avahi_record_to_string(record);
-
+
if (won)
avahi_log_debug("Received conflicting probe [%s]. Local host won.", t);
else if (lost) {
avahi_log_debug("Received conflicting probe [%s]. Local host lost. Withdrawing.", t);
withdraw_rrset(s, record->key);
}
-
+
avahi_free(t);
}
}
static int handle_conflict(AvahiServer *s, AvahiInterface *i, AvahiRecord *record, int unique) {
int valid = 1, ours = 0, conflict = 0, withdraw_immediately = 0;
AvahiEntry *e, *n, *conflicting_entry = NULL;
-
+
assert(s);
assert(i);
assert(record);
/* Check whether an incoming record conflicts with one of our own */
-
+
for (e = avahi_hashmap_lookup(s->entries_by_key, record->key); e; e = n) {
n = e->by_key_next;
char *t;
/* Refresh */
- t = avahi_record_to_string(record);
+ t = avahi_record_to_string(record);
avahi_log_debug("Received goodbye record for one of our records [%s]. Refreshing.", t);
avahi_server_prepare_matching_responses(s, i, e->record->key, 0);
/* If the goodybe packet doesn't match one of our own RRs, we simply ignore it. */
continue;
}
-
+
if (!(e->flags & AVAHI_PUBLISH_UNIQUE) && !unique)
continue;
/* Either our entry or the other is intended to be unique, so let's check */
-
+
if (avahi_record_equal_no_ttl(e->record, record)) {
ours = 1; /* We have an identical record, so this is no conflict */
-
+
/* Check wheter there is a TTL conflict */
if (record->ttl <= e->record->ttl/2 &&
avahi_entry_is_registered(s, e, i)) {
char *t;
/* Refresh */
- t = avahi_record_to_string(record);
-
+ t = avahi_record_to_string(record);
+
avahi_log_debug("Received record with bad TTL [%s]. Refreshing.", t);
avahi_server_prepare_matching_responses(s, i, e->record->key, 0);
valid = 0;
-
+
avahi_free(t);
}
-
+
/* There's no need to check the other entries of this RRset */
break;
} else {
-
+
if (avahi_entry_is_registered(s, e, i)) {
-
+
/* A conflict => we have to return to probe mode */
conflict = 1;
conflicting_entry = e;
if (!ours && conflict) {
char *t;
-
+
valid = 0;
- t = avahi_record_to_string(record);
-
+ t = avahi_record_to_string(record);
+
if (withdraw_immediately) {
avahi_log_debug("Received conflicting record [%s] with local record to be. Withdrawing.", t);
withdraw_rrset(s, record->key);
assert(s);
assert(r);
assert(unicast_response);
-
+
avahi_record_list_push(s->record_list, r, flush_cache, *unicast_response, 1);
}
if (!(reply = avahi_dns_packet_new_reply(p, 512 + AVAHI_DNS_PACKET_EXTRA_SIZE /* unicast DNS maximum packet size is 512 */ , 1, 1)))
return; /* OOM */
-
+
while ((r = avahi_record_list_next(s->record_list, NULL, NULL, NULL))) {
append_aux_records_to_list(s, i, r, 0);
-
+
if (avahi_dns_packet_append_record(reply, r, 0, 10))
avahi_dns_packet_inc_field(reply, AVAHI_DNS_FIELD_ANCOUNT);
else {
immediately, because known answer suppression records might be
contained in later packets */
int tc = p && !!(avahi_dns_packet_get_field(p, AVAHI_DNS_FIELD_FLAGS) & AVAHI_DNS_FLAG_TC);
-
+
while ((r = avahi_record_list_next(s->record_list, &flush_cache, &unicast_response, &auxiliary))) {
int im = immediately;
* unique entry AND it is not in reply to a truncated
* packet AND it is not an auxiliary record AND all other
* responses for this record are unique too. */
-
+
if (flush_cache && !tc && !auxiliary && avahi_record_list_all_flush_cache(s->record_list))
im = 1;
* case. Therefore we prepare such a response */
append_aux_records_to_list(s, i, r, unicast_response);
-
+
for (;;) {
-
+
if (!reply) {
assert(p);
if (!(reply = avahi_dns_packet_new_reply(p, i->hardware->mtu, 0, 0)))
break; /* OOM */
}
-
+
if (avahi_dns_packet_append_record(reply, r, flush_cache, 0)) {
/* Appending this record succeeded, so incremeant
* the specific header field, and return to the caller */
-
+
avahi_dns_packet_inc_field(reply, AVAHI_DNS_FIELD_ANCOUNT);
break;
}
/* Appending this record succeeded, so incremeant
* the specific header field, and return to the caller */
-
+
avahi_dns_packet_inc_field(reply, AVAHI_DNS_FIELD_ANCOUNT);
break;
/* We completely fucked up, there's
* nothing we can do. The RR just doesn't
* fit in. Let's ignore it. */
-
+
char *t;
avahi_dns_packet_free(reply);
reply = NULL;
}
if (reply) {
- if (avahi_dns_packet_get_field(reply, AVAHI_DNS_FIELD_ANCOUNT) != 0)
+ if (avahi_dns_packet_get_field(reply, AVAHI_DNS_FIELD_ANCOUNT) != 0)
avahi_interface_send_packet_unicast(i, reply, a, port);
avahi_dns_packet_free(reply);
}
static void reflect_response(AvahiServer *s, AvahiInterface *i, AvahiRecord *r, int flush_cache) {
AvahiInterface *j;
-
+
assert(s);
assert(i);
assert(r);
static void reflect_query(AvahiServer *s, AvahiInterface *i, AvahiKey *k) {
AvahiInterface *j;
-
+
assert(s);
assert(i);
assert(k);
static void reflect_probe(AvahiServer *s, AvahiInterface *i, AvahiRecord *r) {
AvahiInterface *j;
-
+
assert(s);
assert(i);
assert(r);
static void handle_query_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInterface *i, const AvahiAddress *a, uint16_t port, int legacy_unicast, int from_local_iface) {
size_t n;
int is_probe;
-
+
assert(s);
assert(p);
assert(i);
assert(avahi_record_list_is_empty(s->record_list));
is_probe = avahi_dns_packet_get_field(p, AVAHI_DNS_FIELD_NSCOUNT) > 0;
-
+
/* Handle the questions */
for (n = avahi_dns_packet_get_field(p, AVAHI_DNS_FIELD_QDCOUNT); n > 0; n --) {
AvahiKey *key;
/* Allow our own queries to be suppressed by incoming
* queries only when they do not include known answers */
avahi_query_scheduler_incoming(i->query_scheduler, key);
-
+
avahi_server_prepare_matching_responses(s, i, key, unicast_response);
avahi_key_unref(key);
}
for (n = avahi_dns_packet_get_field(p, AVAHI_DNS_FIELD_ANCOUNT); n > 0; n --) {
AvahiRecord *record;
int unique = 0;
-
+
if (!(record = avahi_dns_packet_consume_record(p, &unique))) {
avahi_log_warn(__FILE__": Packet too short or invalid while reading known answer record. (Maybe a UTF-8 problem?)");
goto fail;
}
-
+
avahi_response_scheduler_suppress(i->response_scheduler, record, a);
avahi_record_list_drop(s->record_list, record);
avahi_cache_stop_poof(i->cache, record, a);
-
+
avahi_record_unref(record);
}
-
+
/* Probe record */
for (n = avahi_dns_packet_get_field(p, AVAHI_DNS_FIELD_NSCOUNT); n > 0; n --) {
AvahiRecord *record;
int unique = 0;
-
+
if (!(record = avahi_dns_packet_consume_record(p, &unique))) {
avahi_log_warn(__FILE__": Packet too short or invalid while reading probe record. (Maybe a UTF-8 problem?)");
goto fail;
}
-
+
if (!avahi_key_is_pattern(record->key)) {
if (!from_local_iface)
reflect_probe(s, i, record);
incoming_probe(s, record, i);
}
-
+
avahi_record_unref(record);
}
}
avahi_server_generate_response(s, i, p, a, port, legacy_unicast, is_probe);
return;
-
+
fail:
avahi_record_list_flush(s->record_list);
}
static void handle_response_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInterface *i, const AvahiAddress *a, int from_local_iface) {
unsigned n;
-
+
assert(s);
assert(p);
assert(i);
AvahiRecord *record;
int cache_flush = 0;
/* char *txt; */
-
+
if (!(record = avahi_dns_packet_consume_record(p, &cache_flush))) {
avahi_log_warn(__FILE__": Packet too short or invalid while reading response record. (Maybe a UTF-8 problem?)");
break;
avahi_response_scheduler_incoming(i->response_scheduler, record, cache_flush);
}
}
-
+
avahi_record_unref(record);
}
static AvahiLegacyUnicastReflectSlot* allocate_slot(AvahiServer *s) {
unsigned n, idx = (unsigned) -1;
AvahiLegacyUnicastReflectSlot *slot;
-
+
assert(s);
if (!s->legacy_unicast_reflect_slots)
for (n = 0; n < AVAHI_LEGACY_UNICAST_REFLECT_SLOTS_MAX; n++, s->legacy_unicast_reflect_id++) {
idx = s->legacy_unicast_reflect_id % AVAHI_LEGACY_UNICAST_REFLECT_SLOTS_MAX;
-
+
if (!s->legacy_unicast_reflect_slots[idx])
break;
}
s->legacy_unicast_reflect_slots[idx] = slot;
slot->id = s->legacy_unicast_reflect_id++;
slot->server = s;
-
+
return slot;
}
assert(s->legacy_unicast_reflect_slots[idx] == slot);
avahi_time_event_free(slot->time_event);
-
+
avahi_free(slot);
s->legacy_unicast_reflect_slots[idx] = NULL;
}
static AvahiLegacyUnicastReflectSlot* find_slot(AvahiServer *s, uint16_t id) {
unsigned idx;
-
+
assert(s);
if (!s->legacy_unicast_reflect_slots)
return NULL;
-
+
idx = id % AVAHI_LEGACY_UNICAST_REFLECT_SLOTS_MAX;
if (!s->legacy_unicast_reflect_slots[idx] || s->legacy_unicast_reflect_slots[idx]->id != id)
assert(a);
assert(port > 0);
assert(i->protocol == a->proto);
-
+
if (!s->config.enable_reflector)
return;
/* Patch the packet with our new locally generatet id */
avahi_dns_packet_set_field(p, AVAHI_DNS_FIELD_ID, slot->id);
-
+
for (j = s->monitor->interfaces; j; j = j->interface_next)
if (j->announcing &&
j != i &&
if (!s->config.enable_reflector)
return 0;
-
+
if (!avahi_address_is_local(s->monitor, address))
return 0;
-
+
if (address->proto == AVAHI_PROTO_INET && s->fd_legacy_unicast_ipv4 >= 0) {
struct sockaddr_in lsa;
socklen_t l = sizeof(lsa);
-
+
if (getsockname(s->fd_legacy_unicast_ipv4, (struct sockaddr*) &lsa, &l) != 0)
avahi_log_warn("getsockname(): %s", strerror(errno));
else
static void dispatch_packet(AvahiServer *s, AvahiDnsPacket *p, const AvahiAddress *src_address, uint16_t port, const AvahiAddress *dst_address, AvahiIfIndex iface, int ttl) {
AvahiInterface *i;
int from_local_iface = 0;
-
+
assert(s);
assert(p);
assert(src_address);
return;
}
+ if (port <= 0) {
+ /* This fixes RHBZ #475394 */
+ avahi_log_warn("Received packet from invalid source port %u.", (unsigned) port);
+ return;
+ }
+
if (avahi_address_is_ipv4_in_ipv6(src_address))
/* This is an IPv4 address encapsulated in IPv6, so let's ignore it. */
return;
avahi_log_warn("Invalid legacy unicast query packet.");
return;
}
-
+
legacy_unicast = 1;
}
if (legacy_unicast)
reflect_legacy_unicast_query_packet(s, p, i, src_address, port);
-
+
handle_query_packet(s, p, i, src_address, port, legacy_unicast, from_local_iface);
-
+
} else {
+ char t[AVAHI_ADDRESS_STR_MAX];
+
if (port != AVAHI_MDNS_PORT) {
- avahi_log_warn("Received response with invalid source port %u on interface '%s.%i'", port, i->hardware->name, i->protocol);
+ avahi_log_warn("Received response from host %s with invalid source port %u on interface '%s.%i'", avahi_address_snprint(t, sizeof(t), src_address), port, i->hardware->name, i->protocol);
return;
}
if (ttl != 255 && s->config.check_response_ttl) {
- avahi_log_warn("Received response with invalid TTL %u on interface '%s.%i'.", ttl, i->hardware->name, i->protocol);
+ avahi_log_warn("Received response from host %s with invalid TTL %u on interface '%s.%i'.", avahi_address_snprint(t, sizeof(t), src_address), ttl, i->hardware->name, i->protocol);
return;
}
if (!is_mdns_mcast_address(dst_address) &&
!avahi_interface_address_on_link(i, src_address)) {
- avahi_log_warn("Received non-local response on interface '%s.%i'.", i->hardware->name, i->protocol);
+
+ avahi_log_warn("Received non-local response from host %s on interface '%s.%i'.", avahi_address_snprint(t, sizeof(t), src_address), i->hardware->name, i->protocol);
return;
}
-
+
if (avahi_dns_packet_get_field(p, AVAHI_DNS_FIELD_QDCOUNT) != 0 ||
avahi_dns_packet_get_field(p, AVAHI_DNS_FIELD_ANCOUNT) == 0 ||
avahi_dns_packet_get_field(p, AVAHI_DNS_FIELD_NSCOUNT) != 0) {
- avahi_log_warn("Invalid response packet.");
+
+ avahi_log_warn("Invalid response packet from host %s.", avahi_address_snprint(t, sizeof(t), src_address));
return;
}
static void dispatch_legacy_unicast_packet(AvahiServer *s, AvahiDnsPacket *p) {
AvahiInterface *j;
AvahiLegacyUnicastReflectSlot *slot;
-
+
assert(s);
assert(p);
static void cleanup_dead(AvahiServer *s) {
assert(s);
-
+
avahi_cleanup_dead_entries(s);
avahi_browser_cleanup(s);
}
assert(w);
assert(fd >= 0);
assert(events & AVAHI_WATCH_IN);
-
+
if (fd == s->fd_ipv4) {
dest.proto = src.proto = AVAHI_PROTO_INET;
p = avahi_recv_dns_packet_ipv4(s->fd_ipv4, &src.data.ipv4, &port, &dest.data.ipv4, &iface, &ttl);
dest.proto = src.proto = AVAHI_PROTO_INET6;
p = avahi_recv_dns_packet_ipv6(s->fd_ipv6, &src.data.ipv6, &port, &dest.data.ipv6, &iface, &ttl);
}
-
+
if (p) {
- if (iface == AVAHI_IF_UNSPEC)
+ if (iface == AVAHI_IF_UNSPEC)
iface = avahi_find_interface_for_address(s->monitor, &dest);
-
+
if (iface != AVAHI_IF_UNSPEC)
dispatch_packet(s, p, &src, port, &dest, iface, ttl);
else
assert(w);
assert(fd >= 0);
assert(events & AVAHI_WATCH_IN);
-
+
if (fd == s->fd_legacy_unicast_ipv4)
p = avahi_recv_dns_packet_ipv4(s->fd_legacy_unicast_ipv4, NULL, NULL, NULL, NULL, NULL);
else {
if (s->state == state)
return;
-
+
s->state = state;
avahi_interface_monitor_update_rrs(s->monitor, 0);
-
+
if (s->callback)
s->callback(s, state, s->userdata);
}
void avahi_server_decrease_host_rr_pending(AvahiServer *s) {
assert(s);
-
+
assert(s->n_host_rr_pending > 0);
if (--s->n_host_rr_pending == 0)
if (state == AVAHI_ENTRY_GROUP_REGISTERING &&
s->state == AVAHI_SERVER_REGISTERING)
s->n_host_rr_pending ++;
-
+
else if (state == AVAHI_ENTRY_GROUP_COLLISION &&
(s->state == AVAHI_SERVER_REGISTERING || s->state == AVAHI_SERVER_RUNNING)) {
withdraw_host_rrs(s);
server_set_state(s, AVAHI_SERVER_COLLISION);
-
+
} else if (state == AVAHI_ENTRY_GROUP_ESTABLISHED &&
s->state == AVAHI_SERVER_REGISTERING)
avahi_server_decrease_host_rr_pending(s);
static void register_hinfo(AvahiServer *s) {
struct utsname utsname;
AvahiRecord *r;
-
+
assert(s);
-
+
if (!s->config.publish_hinfo)
return;
avahi_log_warn("Failed to create HINFO entry group: %s", avahi_strerror(s->error));
return;
}
-
+
/* Fill in HINFO rr */
if ((r = avahi_record_new_full(s->host_name_fqdn, AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_HINFO, AVAHI_DEFAULT_TTL_HOST_NAME))) {
if (uname(&utsname) < 0)
avahi_log_warn("uname() failed: %s\n", avahi_strerror(errno));
else {
-
+
r->data.hinfo.cpu = avahi_strdup(avahi_strup(utsname.machine));
r->data.hinfo.os = avahi_strdup(avahi_strup(utsname.sysname));
-
+
avahi_log_info("Registering HINFO record with values '%s'/'%s'.", r->data.hinfo.cpu, r->data.hinfo.os);
-
+
if (avahi_server_add(s, s->hinfo_entry_group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, AVAHI_PUBLISH_UNIQUE, r) < 0) {
avahi_log_warn("Failed to add HINFO RR: %s", avahi_strerror(s->error));
return;
static void register_localhost(AvahiServer *s) {
AvahiAddress a;
assert(s);
-
+
/* Add localhost entries */
avahi_address_parse("127.0.0.1", AVAHI_PROTO_INET, &a);
avahi_server_add_address(s, NULL, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, AVAHI_PUBLISH_NO_PROBE|AVAHI_PUBLISH_NO_ANNOUNCE, "localhost", &a);
avahi_log_warn("Failed to create browse domain entry group: %s", avahi_strerror(s->error));
return;
}
-
+
if (avahi_server_add_ptr(s, s->browse_domain_entry_group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, AVAHI_DEFAULT_TTL, "b._dns-sd._udp.local", s->domain_name) < 0) {
avahi_log_warn("Failed to add browse domain RR: %s", avahi_strerror(s->error));
return;
avahi_interface_monitor_update_rrs(s->monitor, 0);
s->n_host_rr_pending --;
-
+
if (s->n_host_rr_pending == 0)
server_set_state(s, AVAHI_SERVER_RUNNING);
}
static void update_fqdn(AvahiServer *s) {
char *n;
-
+
assert(s);
assert(s->host_name);
assert(s->domain_name);
int avahi_server_set_host_name(AvahiServer *s, const char *host_name) {
char *hn = NULL;
assert(s);
-
+
AVAHI_CHECK_VALIDITY(s, !host_name || avahi_is_valid_host_name(host_name), AVAHI_ERR_INVALID_HOST_NAME);
if (!host_name) {
avahi_free(hn);
return avahi_server_set_errno(s, AVAHI_ERR_NO_CHANGE);
}
-
+
withdraw_host_rrs(s);
avahi_free(s->host_name);
s->host_name = hn ? hn : avahi_strdup(host_name);
-
+
update_fqdn(s);
register_stuff(s);
dn = avahi_strdup("local");
domain_name = dn;
}
-
+
if (avahi_domain_equal(s->domain_name, domain_name)) {
avahi_free(dn);
return avahi_server_set_errno(s, AVAHI_ERR_NO_CHANGE);
if (sc->n_wide_area_servers > AVAHI_WIDE_AREA_SERVERS_MAX)
return AVAHI_ERR_INVALID_CONFIG;
-
+
if (sc->host_name && !avahi_is_valid_host_name(sc->host_name))
return AVAHI_ERR_INVALID_HOST_NAME;
-
+
if (sc->domain_name && !avahi_is_valid_domain_name(sc->domain_name))
return AVAHI_ERR_INVALID_DOMAIN_NAME;
static int setup_sockets(AvahiServer *s) {
assert(s);
-
+
s->fd_ipv4 = s->config.use_ipv4 ? avahi_open_socket_ipv4(s->config.disallow_other_stacks) : -1;
s->fd_ipv6 = s->config.use_ipv6 ? avahi_open_socket_ipv6(s->config.disallow_other_stacks) : -1;
-
+
if (s->fd_ipv6 < 0 && s->fd_ipv4 < 0)
return AVAHI_ERR_NO_NETWORK;
s->fd_legacy_unicast_ipv4 = s->fd_ipv4 >= 0 && s->config.enable_reflector ? avahi_open_unicast_socket_ipv4() : -1;
s->fd_legacy_unicast_ipv6 = s->fd_ipv6 >= 0 && s->config.enable_reflector ? avahi_open_unicast_socket_ipv6() : -1;
-
+
s->watch_ipv4 =
s->watch_ipv6 =
s->watch_legacy_unicast_ipv4 =
s->watch_legacy_unicast_ipv6 = NULL;
-
+
if (s->fd_ipv4 >= 0)
s->watch_ipv4 = s->poll_api->watch_new(s->poll_api, s->fd_ipv4, AVAHI_WATCH_IN, mcast_socket_event, s);
if (s->fd_ipv6 >= 0)
s->watch_ipv6 = s->poll_api->watch_new(s->poll_api, s->fd_ipv6, AVAHI_WATCH_IN, mcast_socket_event, s);
-
+
if (s->fd_legacy_unicast_ipv4 >= 0)
s->watch_legacy_unicast_ipv4 = s->poll_api->watch_new(s->poll_api, s->fd_legacy_unicast_ipv4, AVAHI_WATCH_IN, legacy_unicast_socket_event, s);
if (s->fd_legacy_unicast_ipv6 >= 0)
s->watch_legacy_unicast_ipv6 = s->poll_api->watch_new(s->poll_api, s->fd_legacy_unicast_ipv6, AVAHI_WATCH_IN, legacy_unicast_socket_event, s);
-
+
return 0;
}
AvahiServer *avahi_server_new(const AvahiPoll *poll_api, const AvahiServerConfig *sc, AvahiServerCallback callback, void* userdata, int *error) {
AvahiServer *s;
int e;
-
+
if (sc && (e = valid_server_config(sc)) < 0) {
if (error)
*error = e;
return NULL;
}
-
+
if (!(s = avahi_new(AvahiServer, 1))) {
if (error)
*error = AVAHI_ERR_NO_MEMORY;
avahi_server_config_free(&s->config);
avahi_free(s);
-
+
return NULL;
}
-
+
s->n_host_rr_pending = 0;
s->need_entry_cleanup = 0;
s->need_group_cleanup = 0;
s->legacy_unicast_reflect_id = 0;
s->record_list = avahi_record_list_new();
-
+
/* Get host name */
s->host_name = s->config.host_name ? avahi_normalize_name_strdup(s->config.host_name) : avahi_get_host_name_strdup();
s->host_name[strcspn(s->host_name, ".")] = 0;
s->wide_area_lookup_engine = NULL;
s->multicast_lookup_engine = avahi_multicast_lookup_engine_new(s);
-
+
s->monitor = avahi_interface_monitor_new(s);
avahi_interface_monitor_sync(s->monitor);
register_localhost(s);
register_stuff(s);
-
+
return s;
}
avahi_s_service_resolver_free(s->service_resolvers);
while (s->record_browsers)
avahi_s_record_browser_destroy(s->record_browsers);
-
+
/* Remove all locally rgeistered stuff */
while(s->entries)
avahi_multicast_lookup_engine_free(s->multicast_lookup_engine);
avahi_time_event_queue_free(s->time_event_queue);
-
+
/* Free watches */
-
+
if (s->watch_ipv4)
s->poll_api->watch_free(s->watch_ipv4);
if (s->watch_ipv6)
s->poll_api->watch_free(s->watch_ipv6);
-
+
if (s->watch_legacy_unicast_ipv4)
s->poll_api->watch_free(s->watch_legacy_unicast_ipv4);
if (s->watch_legacy_unicast_ipv6)
s->poll_api->watch_free(s->watch_legacy_unicast_ipv6);
/* Free sockets */
-
+
if (s->fd_ipv4 >= 0)
close(s->fd_ipv4);
if (s->fd_ipv6 >= 0)
close(s->fd_ipv6);
-
+
if (s->fd_legacy_unicast_ipv4 >= 0)
close(s->fd_legacy_unicast_ipv4);
if (s->fd_legacy_unicast_ipv6 >= 0)
close(s->fd_legacy_unicast_ipv6);
-
+
/* Free other stuff */
-
+
avahi_free(s->host_name);
avahi_free(s->domain_name);
avahi_free(s->host_name_fqdn);
memset(c, 0, sizeof(AvahiServerConfig));
c->use_ipv6 = 1;
c->use_ipv4 = 1;
+ c->allow_interfaces = NULL;
+ c->deny_interfaces = NULL;
c->host_name = NULL;
c->domain_name = NULL;
c->check_response_ttl = 0;
c->allow_point_to_point = 0;
c->publish_aaaa_on_ipv4 = 1;
c->publish_a_on_ipv6 = 0;
-
+
return c;
}
avahi_free(c->host_name);
avahi_free(c->domain_name);
avahi_string_list_free(c->browse_domains);
+ avahi_string_list_free(c->allow_interfaces);
+ avahi_string_list_free(c->deny_interfaces);
}
AvahiServerConfig* avahi_server_config_copy(AvahiServerConfig *ret, const AvahiServerConfig *c) {
char *d = NULL, *h = NULL;
- AvahiStringList *l = NULL;
+ AvahiStringList *browse = NULL, *allow = NULL, *deny = NULL;
assert(ret);
assert(c);
return NULL;
}
- if (!(l = avahi_string_list_copy(c->browse_domains)) && c->browse_domains) {
+ if (!(browse = avahi_string_list_copy(c->browse_domains)) && c->browse_domains) {
+ avahi_free(h);
+ avahi_free(d);
+ return NULL;
+ }
+
+ if (!(allow = avahi_string_list_copy(c->allow_interfaces)) && c->allow_interfaces) {
+ avahi_string_list_free(browse);
+ avahi_free(h);
+ avahi_free(d);
+ return NULL;
+ }
+
+ if (!(deny = avahi_string_list_copy(c->deny_interfaces)) && c->deny_interfaces) {
+ avahi_string_list_free(allow);
+ avahi_string_list_free(browse);
avahi_free(h);
avahi_free(d);
return NULL;
}
-
+
*ret = *c;
ret->host_name = h;
ret->domain_name = d;
- ret->browse_domains = l;
+ ret->browse_domains = browse;
+ ret->allow_interfaces = allow;
+ ret->deny_interfaces = deny;
return ret;
}
int avahi_server_errno(AvahiServer *s) {
assert(s);
-
+
return s->error;
}
static AvahiEntry *find_entry(AvahiServer *s, AvahiIfIndex interface, AvahiProtocol protocol, AvahiKey *key) {
AvahiEntry *e;
-
+
assert(s);
assert(key);
AvahiEntry *e;
int ret;
char n[AVAHI_DOMAIN_NAME_MAX];
-
+
assert(s);
assert(name);
assert(type);
if ((ret = avahi_service_name_join(n, sizeof(n), name, type, domain) < 0))
return avahi_server_set_errno(s, ret);
-
+
if (!(key = avahi_key_new(n, AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_SRV)))
return avahi_server_set_errno(s, AVAHI_ERR_NO_MEMORY);
if (!s->host_name_fqdn)
return 0;
-
+
if (!(key = avahi_key_new(name, AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_SRV)))
return 0;
if (!e)
return 0;
-
+
return avahi_domain_equal(s->host_name_fqdn, e->record->data.srv.name);
}
assert(s);
assert(record);
-
+
for (e = avahi_hashmap_lookup(s->entries_by_key, record->key); e; e = e->by_key_next)
if ((e->interface == interface || e->interface <= 0 || interface <= 0) &&
/** Set the browsing domains */
int avahi_server_set_browse_domains(AvahiServer *s, AvahiStringList *domains) {
AvahiStringList *l;
-
+
assert(s);
for (l = s->config.browse_domains; l; l = l->next)
if (!avahi_is_valid_domain_name((char*) l->text))
return avahi_server_set_errno(s, AVAHI_ERR_INVALID_DOMAIN_NAME);
-
+
avahi_string_list_free(s->config.browse_domains);
s->config.browse_domains = avahi_string_list_copy(domains);
static-hosts.c static-hosts.h \
ini-file-parser.c ini-file-parser.h \
setproctitle.c setproctitle.h \
- ../avahi-client/check-nss.c \
- inotify-nosys.h
+ ../avahi-client/check-nss.c
avahi_daemon_CFLAGS = $(AM_CFLAGS) $(LIBDAEMON_CFLAGS) $(XML_CFLAGS)
avahi_daemon_LDADD = $(AM_LDADD) ../avahi-common/libavahi-common.la ../avahi-core/libavahi-core.la $(LIBDAEMON_LIBS) $(XML_LIBS)
browse-domains=0pointer.de, zeroconf.org
use-ipv4=yes
use-ipv6=no
+#allow-interfaces=eth0
+#deny-interfaces=eth1
#check-response-ttl=no
#use-iff-running=no
#enable-dbus=yes
+++ /dev/null
-/*
- * This header is used if <sys/inotify.h> cannot be found.
- *
- * Inode based directory notification for Linux
- *
- * Copyright (C) 2005 John McCutchan
- */
-
-#ifndef _LINUX_INOTIFY_H
-#define _LINUX_INOTIFY_H
-
-#include <stdint.h>
-#include <sys/syscall.h>
-#include <unistd.h>
-#include <asm/unistd.h>
-
-/*
- * struct inotify_event - structure read from the inotify device for each event
- *
- * When you are watching a directory, you will receive the filename for events
- * such as IN_CREATE, IN_DELETE, IN_OPEN, IN_CLOSE, ..., relative to the wd.
- */
-struct inotify_event {
- int wd; /* watch descriptor */
- uint32_t mask; /* watch mask */
- uint32_t cookie; /* cookie to synchronize two events */
- uint32_t len; /* length (including nulls) of name */
- char name __flexarr; /* stub for possible name */
-};
-
-/* the following are legal, implemented events that user-space can watch for */
-#define IN_ACCESS 0x00000001 /* File was accessed */
-#define IN_MODIFY 0x00000002 /* File was modified */
-#define IN_ATTRIB 0x00000004 /* Metadata changed */
-#define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed */
-#define IN_CLOSE_NOWRITE 0x00000010 /* Unwrittable file closed */
-#define IN_OPEN 0x00000020 /* File was opened */
-#define IN_MOVED_FROM 0x00000040 /* File was moved from X */
-#define IN_MOVED_TO 0x00000080 /* File was moved to Y */
-#define IN_CREATE 0x00000100 /* Subfile was created */
-#define IN_DELETE 0x00000200 /* Subfile was deleted */
-#define IN_DELETE_SELF 0x00000400 /* Self was deleted */
-#define IN_MOVE_SELF 0x00000800 /* Self was moved */
-
-/* the following are legal events. they are sent as needed to any watch */
-#define IN_UNMOUNT 0x00002000 /* Backing fs was unmounted */
-#define IN_Q_OVERFLOW 0x00004000 /* Event queued overflowed */
-#define IN_IGNORED 0x00008000 /* File was ignored */
-
-/* helper events */
-#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* close */
-#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* moves */
-
-/* special flags */
-#define IN_ONLYDIR 0x01000000 /* only watch the path if it is a directory */
-#define IN_DONT_FOLLOW 0x02000000 /* don't follow a sym link */
-#define IN_MASK_ADD 0x20000000 /* add to the mask of an already existing watch */
-#define IN_ISDIR 0x40000000 /* event occurred against dir */
-#define IN_ONESHOT 0x80000000 /* only send event once */
-
-/*
- * All of the events - we build the list by hand so that we can add flags in
- * the future and not break backward compatibility. Apps will get only the
- * events that they originally wanted. Be sure to add new events here!
- */
-#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | \
- IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | \
- IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF | \
- IN_MOVE_SELF)
-
-#if 0
-#if defined (__alpha__)
-# define __NR_inotify_init 444
-# define __NR_inotify_add_watch 445
-# define __NR_inotify_rm_watch 446
-
-#elif defined (__arm__)
-# define __NR_inotify_init (__NR_SYSCALL_BASE+316)
-# define __NR_inotify_add_watch (__NR_SYSCALL_BASE+317)
-# define __NR_inotify_rm_watch (__NR_SYSCALL_BASE+318)
-
-#elif defined (__frv__)
-# define __NR_inotify_init 291
-# define __NR_inotify_add_watch 292
-# define __NR_inotify_rm_watch 293
-
-#elif defined(__i386__)
-# define __NR_inotify_init 291
-# define __NR_inotify_add_watch 292
-# define __NR_inotify_rm_watch 293
-
-#elif defined (__ia64__)
-# define __NR_inotify_init 1277
-# define __NR_inotify_add_watch 1278
-# define __NR_inotify_rm_watch 1279
-
-#elif defined (__mips__)
-# if _MIPS_SIM == _MIPS_SIM_ABI32
-# define __NR_inotify_init (__NR_Linux + 284)
-# define __NR_inotify_add_watch (__NR_Linux + 285)
-# define __NR_inotify_rm_watch (__NR_Linux + 286)
-# endif
-# if _MIPS_SIM == _MIPS_SIM_ABI64
-# define __NR_inotify_init (__NR_Linux + 243)
-# define __NR_inotify_add_watch (__NR_Linux + 243)
-# define __NR_inotify_rm_watch (__NR_Linux + 243)
-# endif
-# if _MIPS_SIM == _MIPS_SIM_NABI32
-# define __NR_inotify_init (__NR_Linux + 247)
-# define __NR_inotify_add_watch (__NR_Linux + 248)
-# define __NR_inotify_rm_watch (__NR_Linux + 249)
-# endif
-
-#elif defined(__parisc__)
-# define __NR_inotify_init (__NR_Linux + 269)
-# define __NR_inotify_add_watch (__NR_Linux + 270)
-# define __NR_inotify_rm_watch (__NR_Linux + 271)
-
-#elif defined(__powerpc__) || defined(__powerpc64__)
-# define __NR_inotify_init 275
-# define __NR_inotify_add_watch 276
-# define __NR_inotify_rm_watch 277
-
-#elif defined (__s390__)
-# define __NR_inotify_init 284
-# define __NR_inotify_add_watch 285
-# define __NR_inotify_rm_watch 286
-
-#elif defined (__sh__)
-# define __NR_inotify_init 290
-# define __NR_inotify_add_watch 291
-# define __NR_inotify_rm_watch 292
-
-#elif defined (__sh64__)
-# define __NR_inotify_init 318
-# define __NR_inotify_add_watch 319
-# define __NR_inotify_rm_watch 320
-
-#elif defined (__sparc__) || defined (__sparc64__)
-# define __NR_inotify_init 151
-# define __NR_inotify_add_watch 152
-# define __NR_inotify_rm_watch 156
-
-#elif defined(__x86_64__)
-# define __NR_inotify_init 253
-# define __NR_inotify_add_watch 254
-# define __NR_inotify_rm_watch 255
-
-#else
-# error "Unsupported architecture!"
-#endif
-#endif
-
-#ifndef __NR_inotify_init
-# error "Unsupported architecture!"
-#endif
-#ifndef __NR_inotify_add_watch
-# error "Unsupported architecture!"
-#endif
-#ifndef __NR_inotify_rm_watch
-# error "Unsupported architecture!"
-#endif
-
-
-static inline int inotify_init (void)
-{
- return syscall (__NR_inotify_init);
-}
-
-static inline int inotify_add_watch (int fd, const char *name, uint32_t mask)
-{
- return syscall (__NR_inotify_add_watch, fd, name, mask);
-}
-
-static inline int inotify_rm_watch (int fd, uint32_t wd)
-{
- return syscall (__NR_inotify_rm_watch, fd, wd);
-}
-
-
-#endif /* _LINUX_INOTIFY_H */
/***
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
#include <sys/socket.h>
#ifdef HAVE_INOTIFY
-#ifdef HAVE_SYS_INOTIFY_H
#include <sys/inotify.h>
-#else
-#include "inotify-nosys.h"
-#endif
#endif
#ifdef HAVE_KQUEUE
size_t l;
l = strlen(prefix);
-
+
return strlen(s) >= l && strncmp(s, prefix, l) == 0;
}
int ret = -1;
FILE *f;
int i = 0, j = 0;
-
+
avahi_strfreev(resolv_conf_name_servers);
resolv_conf_name_servers = NULL;
avahi_strfreev(resolv_conf_search_domains);
resolv_conf_search_domains = NULL;
-
+
#ifdef ENABLE_CHROOT
f = avahi_chroot_helper_get_file(RESOLV_CONF);
#else
f = fopen(RESOLV_CONF, "r");
#endif
-
+
if (!f) {
avahi_log_warn("Failed to open "RESOLV_CONF": %s", strerror(errno));
goto finish;
if (ret != 0) {
avahi_strfreev(resolv_conf_name_servers);
resolv_conf_name_servers = NULL;
-
+
avahi_strfreev(resolv_conf_search_domains);
resolv_conf_search_domains = NULL;
}
assert(s);
assert(l);
- if (!g)
+ if (!g)
g = avahi_s_entry_group_new(s, NULL, NULL);
assert(avahi_s_entry_group_is_empty(g));
for (p = l; *p; p++) {
AvahiAddress a;
-
+
if (!avahi_address_parse(*p, AVAHI_PROTO_UNSPEC, &a))
avahi_log_warn("Failed to parse address '%s', ignoring.", *p);
else
if (resolv_conf_entry_group)
avahi_s_entry_group_reset(resolv_conf_entry_group);
-
- if (dns_servers_entry_group)
+
+ if (dns_servers_entry_group)
avahi_s_entry_group_reset(dns_servers_entry_group);
}
if (!l)
return l;
-
+
for (p = l, e = l->next; e; e = n) {
n = e->next;
-
+
if (avahi_domain_equal((char*) e->text, (char*) l->text)) {
p->next = e->next;
avahi_free(e);
}
l = avahi_string_list_copy(config.server_config.browse_domains);
-
+
for (p = resolv_conf_search_domains, n = 0; *p && n < BROWSE_DOMAINS_MAX; p++, n++) {
if (!avahi_is_valid_domain_name(*p))
avahi_log_warn("'%s' is no valid domain name, ignoring.", *p);
}
l = filter_duplicate_domains(l);
-
+
avahi_server_set_browse_domains(avahi_server, l);
}
static void server_callback(AvahiServer *s, AvahiServerState state, void *userdata) {
DaemonConfig *c = userdata;
-
+
assert(s);
assert(c);
* avahi_server has been set, therefore we do it explicitly */
avahi_server = s;
-
+
#ifdef HAVE_DBUS
if (c->enable_dbus && state != AVAHI_SERVER_INVALID && state != AVAHI_SERVER_FAILURE)
dbus_protocol_server_state_changed(state);
switch (state) {
case AVAHI_SERVER_RUNNING:
avahi_log_info("Server startup complete. Host name is %s. Local service cookie is %u.", avahi_server_get_host_name_fqdn(s), avahi_server_get_local_service_cookie(s));
-
+
avahi_set_proc_title(argv0, "%s: running [%s]", argv0, avahi_server_get_host_name_fqdn(s));
-
+
static_service_add_to_server();
static_hosts_add_to_server();
-
+
remove_dns_server_entry_groups();
-
+
if (c->publish_resolv_conf && resolv_conf_name_servers && resolv_conf_name_servers[0])
resolv_conf_entry_group = add_dns_servers(s, resolv_conf_entry_group, resolv_conf_name_servers);
-
+
if (c->publish_dns_servers && c->publish_dns_servers[0])
dns_servers_entry_group = add_dns_servers(s, dns_servers_entry_group, c->publish_dns_servers);
-
+
simple_protocol_restart_queries();
break;
-
+
case AVAHI_SERVER_COLLISION: {
char *n;
-
+
avahi_set_proc_title(argv0, "%s: collision", argv0);
-
+
static_service_remove_from_server();
static_hosts_remove_from_server();
remove_dns_server_entry_groups();
case AVAHI_SERVER_REGISTERING:
avahi_set_proc_title(argv0, "%s: registering [%s]", argv0, avahi_server_get_host_name_fqdn(s));
-
+
static_service_remove_from_server();
static_hosts_remove_from_server();
remove_dns_server_entry_groups();
-
+
break;
case AVAHI_SERVER_INVALID:
break;
-
+
}
}
" "AVAHI_CONFIG_FILE"\n"
" --no-rlimits Don't enforce resource limits\n"
" --no-drop-root Don't drop privileges\n"
-#ifdef ENABLE_CHROOT
+#ifdef ENABLE_CHROOT
" --no-chroot Don't chroot()\n"
-#endif
+#endif
" --no-proc-title Don't modify process title\n"
" --debug Increase verbosity\n",
argv0);
enum {
OPTION_NO_RLIMITS = 256,
OPTION_NO_DROP_ROOT,
-#ifdef ENABLE_CHROOT
+#ifdef ENABLE_CHROOT
OPTION_NO_CHROOT,
#endif
OPTION_NO_PROC_TITLE,
OPTION_DEBUG
};
-
+
static const struct option long_options[] = {
{ "help", no_argument, NULL, 'h' },
{ "daemonize", no_argument, NULL, 'D' },
fprintf(stderr, "Too many arguments\n");
return -1;
}
-
+
return 0;
}
static int is_yes(const char *s) {
assert(s);
-
+
return *s == 'y' || *s == 'Y' || *s == '1' || *s == 't' || *s == 'T';
}
if (!(f = avahi_ini_file_load(c->config_file ? c->config_file : AVAHI_CONFIG_FILE)))
goto finish;
-
+
for (g = f->groups; g; g = g->groups_next) {
-
+
if (strcasecmp(g->name, "server") == 0) {
AvahiIniFilePair *p;
char **e, **t;
e = avahi_split_csv(p->value);
-
+
for (t = e; *t; t++) {
char cleaned[AVAHI_DOMAIN_NAME_MAX];
c->server_config.browse_domains = avahi_string_list_add(c->server_config.browse_domains, cleaned);
}
-
+
avahi_strfreev(e);
c->server_config.browse_domains = filter_duplicate_domains(c->server_config.browse_domains);
}
}
#endif
- else {
+ else if (strcasecmp(p->key, "allow-interfaces") == 0) {
+ char **e, **t;
+
+ avahi_string_list_free(c->server_config.allow_interfaces);
+ c->server_config.allow_interfaces = NULL;
+ e = avahi_split_csv(p->value);
+
+ for (t = e; *t; t++)
+ c->server_config.allow_interfaces = avahi_string_list_add(c->server_config.allow_interfaces, *t);
+
+ avahi_strfreev(e);
+ } else if (strcasecmp(p->key, "deny-interfaces") == 0) {
+ char **e, **t;
+
+ avahi_string_list_free(c->server_config.deny_interfaces);
+ c->server_config.deny_interfaces = NULL;
+ e = avahi_split_csv(p->value);
+
+ for (t = e; *t; t++)
+ c->server_config.deny_interfaces = avahi_string_list_add(c->server_config.deny_interfaces, *t);
+
+ avahi_strfreev(e);
+ } else {
avahi_log_error("Invalid configuration key \"%s\" in group \"%s\"\n", p->key, g->name);
goto finish;
}
}
-
+
} else if (strcasecmp(g->name, "publish") == 0) {
AvahiIniFilePair *p;
for (p = g->pairs; p; p = p->pairs_next) {
-
+
if (strcasecmp(p->key, "publish-addresses") == 0)
c->server_config.publish_addresses = is_yes(p->value);
else if (strcasecmp(p->key, "publish-hinfo") == 0)
AvahiIniFilePair *p;
for (p = g->pairs; p; p = p->pairs_next) {
-
+
if (strcasecmp(p->key, "enable-wide-area") == 0)
c->server_config.enable_wide_area = is_yes(p->value);
else {
goto finish;
}
}
-
+
} else if (strcasecmp(g->name, "reflector") == 0) {
AvahiIniFilePair *p;
for (p = g->pairs; p; p = p->pairs_next) {
-
+
if (strcasecmp(p->key, "enable-reflector") == 0)
c->server_config.enable_reflector = is_yes(p->value);
else if (strcasecmp(p->key, "reflect-ipv") == 0)
goto finish;
}
}
-
+
} else if (strcasecmp(g->name, "rlimits") == 0) {
AvahiIniFilePair *p;
for (p = g->pairs; p; p = p->pairs_next) {
-
+
if (strcasecmp(p->key, "rlimit-as") == 0) {
c->rlimit_as_set = 1;
c->rlimit_as = atoi(p->value);
}
}
-
+
} else {
avahi_log_error("Invalid configuration file group \"%s\".\n", g->name);
goto finish;
if (f)
avahi_ini_file_free(f);
-
+
return r;
}
LOG_INFO,
LOG_DEBUG
};
-
+
assert(level < AVAHI_LOG_LEVEL_MAX);
assert(txt);
#ifdef ENABLE_CHROOT
c = config.use_chroot;
#endif
-
+
inotify_add_watch(inotify_fd, c ? "/services" : AVAHI_SERVICE_DIR, IN_CLOSE_WRITE|IN_DELETE|IN_DELETE_SELF|IN_MOVED_FROM|IN_MOVED_TO|IN_MOVE_SELF
#ifdef IN_ONLYDIR
|IN_ONLYDIR
#else
static_service_load(0);
static_hosts_load(0);
-#endif
+#endif
static_service_add_to_server();
static_hosts_add_to_server();
-
+
if (resolv_conf_entry_group)
avahi_s_entry_group_reset(resolv_conf_entry_group);
-
+
load_resolv_conf();
-
+
update_wide_area_servers();
update_browse_domains();
-
+
if (config.publish_resolv_conf && resolv_conf_name_servers && resolv_conf_name_servers[0])
resolv_conf_entry_group = add_dns_servers(avahi_server, resolv_conf_entry_group, resolv_conf_name_servers);
}
static void signal_callback(AvahiWatch *watch, AVAHI_GCC_UNUSED int fd, AVAHI_GCC_UNUSED AvahiWatchEvent event, AVAHI_GCC_UNUSED void *userdata) {
int sig;
const AvahiPoll *poll_api;
-
+
assert(watch);
assert(simple_poll_api);
avahi_log_error("Failed to chroot(): %s", strerror(errno));
goto finish;
}
-
+
avahi_log_info("Successfully called chroot().");
chdir("/");
-
+
if (avahi_caps_drop_all() < 0) {
avahi_log_error("Failed to drop capabilities.");
goto finish;
}
avahi_log_info("Successfully dropped remaining capabilities.");
}
-
+
#endif
#ifdef HAVE_INOTIFY
avahi_log_warn( "Failed to initialize inotify: %s", strerror(errno));
else {
add_inotify_watches();
-
+
if (!(inotify_watch = poll_api->watch_new(poll_api, inotify_fd, AVAHI_WATCH_IN, inotify_callback, NULL))) {
avahi_log_error( "Failed to create inotify watcher");
goto finish;
/* We handle signals through an FD, so let's continue */
if (errno == EINTR)
continue;
-
+
avahi_log_error("poll(): %s", strerror(errno));
goto finish;
} else if (r > 0)
/* Quit */
break;
}
-
+
finish:
-
+
static_service_remove_from_server();
static_service_free_all();
static_hosts_free_all();
remove_dns_server_entry_groups();
-
+
simple_protocol_shutdown();
#ifdef HAVE_DBUS
close(kfds[i]);
}
#endif
-
+
if (simple_poll_api) {
avahi_simple_poll_free(simple_poll_api);
simple_poll_api = NULL;
if (!retval_is_sent && c->daemonize)
daemon_retval_send(1);
-
+
return r;
}
struct passwd *pw;
struct group * gr;
int r;
-
+
if (!(pw = getpwnam(AVAHI_USER))) {
avahi_log_error( "Failed to find user '"AVAHI_USER"'.");
return -1;
u = umask(0000);
reset_umask = 1;
-
+
if (mkdir(AVAHI_DAEMON_RUNTIME_DIR, 0755) < 0 && errno != EEXIST) {
avahi_log_error("mkdir(\""AVAHI_DAEMON_RUNTIME_DIR"\"): %s", strerror(errno));
goto fail;
}
-
+
chown(AVAHI_DAEMON_RUNTIME_DIR, pw->pw_uid, gr->gr_gid);
if (stat(AVAHI_DAEMON_RUNTIME_DIR, &st) < 0) {
avahi_set_log_function(log_function);
init_rand_seed();
-
+
avahi_server_config_init(&config.server_config);
config.command = DAEMON_RUN;
config.daemonize = 0;
config.enable_dbus = 1;
config.fail_on_missing_dbus = 1;
#endif
-
+
config.drop_root = 1;
config.set_rlimits = 1;
#ifdef ENABLE_CHROOT
#ifdef RLIMIT_NPROC
config.rlimit_nproc_set = 0;
#endif
-
+
if ((argv0 = strrchr(argv[0], '/')))
argv0 = avahi_strdup(argv0 + 1);
else
daemon_pid_file_ident = (const char *) argv0;
daemon_log_ident = (char*) argv0;
daemon_pid_file_proc = pid_file_proc;
-
+
if (parse_command_line(&config, argc, argv) < 0)
goto finish;
#ifdef ENABLE_CHROOT
config.use_chroot = config.use_chroot && config.drop_root;
#endif
-
+
if (config.command == DAEMON_HELP) {
help(stdout);
r = 0;
}
r = 0;
-
+
} else if (config.command == DAEMON_CHECK)
r = (daemon_pid_file_is_running() >= 0) ? 0 : 1;
else if (config.command == DAEMON_RUN) {
avahi_log_error("This program is intended to be run as root.");
goto finish;
}
-
+
if ((pid = daemon_pid_file_is_running()) >= 0) {
avahi_log_error("Daemon already running on PID %u", pid);
goto finish;
if (load_config_file(&config) < 0)
goto finish;
-
+
if (config.daemonize) {
daemon_retval_init();
-
+
if ((pid = daemon_fork()) < 0)
goto finish;
else if (pid != 0) {
avahi_log_error("Failed to close remaining file descriptors: %s", strerror(errno));
goto finish;
}
-
+
if (make_runtime_dir() < 0)
goto finish;
if (avahi_caps_reduce() < 0)
goto finish;
#endif
-
+
if (drop_root() < 0)
goto finish;
avahi_log_info("%s "PACKAGE_VERSION" starting up.", argv0);
avahi_set_proc_title(argv0, "%s: starting up", argv0);
-
+
if (run_server(&config) == 0)
r = 0;
}
-
+
finish:
if (config.daemonize)
#endif
avahi_free(argv0);
-
+
return r;
}
if HAVE_PYTHON_DBUS
-interfaces_DATA = $(interfaces)
+interfaces_DATA =
endif
endif
# $AVAHI_INTERFACE_DNS_SERVERS A whitespace seperated list of DNS servers on $AVAHI_INTERFACE
# $AVAHI_DNS_SERVERS The complete list of all DNS servers found on all interfaces
-if [ -x /sbin/resolvconf ] ; then
+if [ -x /sbin/netconfig ]; then
+ # SUSE method on 11.1+
+ if [ -n "$AVAHI_INTERFACE_DNS_SERVERS" ]; then
+ /sbin/netconfig modify -s avahi -i "$AVAHI_INTERFACE" <<-EOF
+ INTERFACE='$AVAHI_INTERFACE'
+ DNSSERVERS='$AVAHI_INTERFACE_DNS_SERVERS'
+ EOF
+ else
+ /sbin/netconfig remove -s avahi -i "$AVAHI_INTERFACE"
+ fi
+elif [ -x /sbin/modify_resolvconf ] ; then
+ # method for SUSE <= 11.0
+ if [ -n "$AVAHI_DNS_SERVERS" ]; then
+ /sbin/modify_resolvconf modify -s avahi -t - -p avahi-dnsconfd -n "$AVAHI_DNS_SERVERS" <<-EOF
+ if you don't like avahi to update your Nameservers
+ disable the avahi-dnsconfd init script
+ EOF
+ else
+ /sbin/modify_resolvconf restore -s avahi
+ fi
+elif [ -x /sbin/resolvconf ] ; then
# We have Debian's resolvconf tool
if HAVE_PYTHON
if HAVE_PYTHON_DBUS
-if HAVE_PYGTK
pythonscripts = \
avahi-bookmarks
endif
endif
-endif
try:
import avahi, gobject, dbus
except ImportError:
- print "Sorry, to use this tool you need to install Avahi, pygtk and python-dbus."
+ print "Sorry, to use this tool you need to install Avahi and python-dbus."
sys.exit(1)
try:
__init__.py \
SimpleGladeApp.py \
avahi-discover.in \
- avahi-discover.desktop.in
+ avahi-discover.desktop.in.in
if HAVE_PYTHON
if HAVE_PYTHON_DBUS
pythonscripts += \
avahi-discover
desktop_DATA += avahi-discover.desktop
+@INTLTOOL_DESKTOP_RULE@
avahi_discover_PYTHON += __init__.py SimpleGladeApp.py
endif
pythonscripts += \
avahi-discover
desktop_DATA += avahi-discover.desktop
+@INTLTOOL_DESKTOP_RULE@
avahi_discover_PYTHON += __init__.py SimpleGladeApp.py
endif
-avahi-discover.desktop: avahi-discover.desktop.in
+avahi-discover.desktop.in: avahi-discover.desktop.in.in
sed -e 's,@bindir\@,$(bindir),g' $< > $@
avahi-discover: avahi-discover.in
sed -e 's,@PYTHON\@,$(PYTHON),g' \
+ -e 's,@GETTEXT_PACKAGE\@,"$(GETTEXT_PACKAGE)",g' \
+ -e 's,@LOCALEDIR\@,"$(datadir)/locale",g' \
-e 's,@interfacesdir\@,$(interfacesdir),g' $< > $@
chmod +x $@
bin_SCRIPTS = $(pythonscripts)
-CLEANFILES = $(pythonscripts) $(desktop_DATA) *.pyc *.pyo
+
+CLEANFILES = $(pythonscripts) $(desktop_DATA) *.pyc *.pyo avahi-discover.desktop.in
endif
endif
+++ /dev/null
-[Desktop Entry]
-Version=1.0
-Encoding=UTF-8
-Name=Avahi Zeroconf Browser
-Comment=Browse for Zeroconf services available on your network
-Exec=@bindir@/avahi-discover
-Terminal=false
-Type=Application
-Icon=network-wired
-Categories=GNOME;Application;System;
-StartupNotify=false
-GenericName=
--- /dev/null
+[Desktop Entry]
+Version=1.0
+Encoding=UTF-8
+_Name=Avahi Zeroconf Browser
+_Comment=Browse for Zeroconf services available on your network
+Exec=@bindir@/avahi-discover
+Terminal=false
+Type=Application
+Icon=network-wired
+Categories=GNOME;Application;System;
+StartupNotify=false
+GenericName=
import os, sys
try:
- import avahi, gtk, gobject, dbus, avahi.ServiceTypeDatabase
+ import avahi, gettext, gtk, gobject, dbus, avahi.ServiceTypeDatabase
from avahi_discover.SimpleGladeApp import SimpleGladeApp
+ gtk.glade.bindtextdomain(@GETTEXT_PACKAGE@, @LOCALEDIR@)
+ gtk.glade.textdomain(@GETTEXT_PACKAGE@)
+ _ = gettext.gettext
except ImportError, e:
print "Sorry, to use this tool you need to install Avahi, pygtk and python-dbus.\n Error: %s" % e
sys.exit(1)
def on_tree_view_cursor_changed(self, widget, *args):
(model, iter) = widget.get_selection().get_selected()
- (name,interface,protocol,stype,domain) = self.treemodel.get(iter,1,2,3,4,5)
+ stype = None
+ if iter is not None:
+ (name,interface,protocol,stype,domain) = self.treemodel.get(iter,1,2,3,4,5)
if stype == None:
self.info_label.set_markup("<i>No service currently selected.</i>")
return
avahi_PYTHON = $(avahi_SCRIPTS)
-if HAVE_PYGTK
if HAVE_PYTHON_DBUS
avahi_PYTHON += __init__.py
-endif
endif
endif
EXTRA_DIST = $(desktop_DATA_in_in)
-
if HAVE_GTK
+AM_CFLAGS += -DGNOMELOCALEDIR=\"$(datadir)/locale\"
if HAVE_DBUS
if HAVE_GLIB
bin_PROGRAMS = bssh
desktop_DATA += bssh.desktop bvnc.desktop
+@INTLTOOL_DESKTOP_RULE@
bssh_SOURCES = bssh.c
bssh_CFLAGS = $(AM_CFLAGS) $(GTK20_CFLAGS)
#include <net/if.h>
#include <gtk/gtk.h>
+#include <glib/gi18n.h>
#include <avahi-glib/glib-watch.h>
#include <avahi-client/client.h>
g_object_class_install_property(
object_class,
PROP_BROWSE_SERVICE_TYPES,
- g_param_spec_pointer("browse_service_types", "Browse Service Types", "A NULL terminated list of service types to browse for",
+ g_param_spec_pointer("browse_service_types", _("Browse Service Types"), _("A NULL terminated list of service types to browse for"),
G_PARAM_READABLE | G_PARAM_WRITABLE));
g_object_class_install_property(
object_class,
PROP_DOMAIN,
- g_param_spec_string("domain", "Domain", "The domain to browse in, or NULL for the default domain",
+ g_param_spec_string("domain", _("Domain"), _("The domain to browse in, or NULL for the default domain"),
NULL,
G_PARAM_READABLE | G_PARAM_WRITABLE));
g_object_class_install_property(
object_class,
PROP_SERVICE_TYPE,
- g_param_spec_string("service_type", "Service Type", "The service type of the selected service",
+ g_param_spec_string("service_type", _("Service Type"), _("The service type of the selected service"),
NULL,
G_PARAM_READABLE | G_PARAM_WRITABLE));
g_object_class_install_property(
object_class,
PROP_SERVICE_NAME,
- g_param_spec_string("service_name", "Service Name", "The service name of the selected service",
+ g_param_spec_string("service_name", _("Service Name"), _("The service name of the selected service"),
NULL,
G_PARAM_READABLE | G_PARAM_WRITABLE));
g_object_class_install_property(
object_class,
PROP_ADDRESS,
- g_param_spec_pointer("address", "Address", "The address of the resolved service",
+ g_param_spec_pointer("address", _("Address"), _("The address of the resolved service"),
G_PARAM_READABLE));
g_object_class_install_property(
object_class,
PROP_PORT,
- g_param_spec_uint("port", "Port", "The IP port number of the resolved service",
+ g_param_spec_uint("port", _("Port"), _("The IP port number of the resolved service"),
0, 0xFFFF, 0,
G_PARAM_READABLE));
g_object_class_install_property(
object_class,
PROP_HOST_NAME,
- g_param_spec_string("host_name", "Host Name", "The host name of the resolved service",
+ g_param_spec_string("host_name", _("Host Name"), _("The host name of the resolved service"),
NULL,
G_PARAM_READABLE));
g_object_class_install_property(
object_class,
PROP_TXT_DATA,
- g_param_spec_pointer("txt_data", "TXT Data", "The TXT data of the resolved service",
+ g_param_spec_pointer("txt_data", _("TXT Data"), _("The TXT data of the resolved service"),
G_PARAM_READABLE));
g_object_class_install_property(
object_class,
PROP_RESOLVE_SERVICE,
- g_param_spec_boolean("resolve_service", "Resolve service", "Resolve service",
+ g_param_spec_boolean("resolve_service", _("Resolve service"), _("Resolve service"),
TRUE,
G_PARAM_READABLE | G_PARAM_WRITABLE));
g_object_class_install_property(
object_class,
PROP_RESOLVE_HOST_NAME,
- g_param_spec_boolean("resolve_host_name", "Resolve service host name", "Resolve service host name",
+ g_param_spec_boolean("resolve_host_name", _("Resolve service host name"), _("Resolve service host name"),
TRUE,
G_PARAM_READABLE | G_PARAM_WRITABLE));
g_object_class_install_property(
object_class,
PROP_ADDRESS_FAMILY,
- g_param_spec_int("address_family", "Address family", "The address family for host name resolution",
+ g_param_spec_int("address_family", _("Address family"), _("The address family for host name resolution"),
AVAHI_PROTO_UNSPEC, AVAHI_PROTO_INET6, AVAHI_PROTO_UNSPEC,
G_PARAM_READABLE | G_PARAM_WRITABLE));
}
d->priv->start_idle = 0;
if (!d->priv->browse_service_types || !*d->priv->browse_service_types) {
- g_warning("Browse service type list is empty!");
+ g_warning(_("Browse service type list is empty!"));
return FALSE;
}
gtk_container_add(GTK_CONTAINER(scrolled_window), p->domain_tree_view);
p->domain_progress_bar = gtk_progress_bar_new();
- gtk_progress_bar_set_text(GTK_PROGRESS_BAR(p->domain_progress_bar), _("Browsing ..."));
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(p->domain_progress_bar), _("Browsing..."));
gtk_progress_bar_set_pulse_step(GTK_PROGRESS_BAR(p->domain_progress_bar), 0.1);
gtk_box_pack_end(GTK_BOX(vbox2), p->domain_progress_bar, FALSE, FALSE, 0);
g_signal_connect(selection, "changed", G_CALLBACK(service_selection_changed_callback), d);
renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes("Location", renderer, "text", SERVICE_COLUMN_PRETTY_IFACE, NULL);
+ column = gtk_tree_view_column_new_with_attributes(_("Location"), renderer, "text", SERVICE_COLUMN_PRETTY_IFACE, NULL);
gtk_tree_view_column_set_visible(column, FALSE);
gtk_tree_view_append_column(GTK_TREE_VIEW(p->service_tree_view), column);
renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes("Name", renderer, "text", SERVICE_COLUMN_NAME, NULL);
+ column = gtk_tree_view_column_new_with_attributes(_("Name"), renderer, "text", SERVICE_COLUMN_NAME, NULL);
gtk_tree_view_column_set_expand(column, TRUE);
gtk_tree_view_append_column(GTK_TREE_VIEW(p->service_tree_view), column);
renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes("Type", renderer, "text", SERVICE_COLUMN_PRETTY_TYPE, NULL);
+ column = gtk_tree_view_column_new_with_attributes(_("Type"), renderer, "text", SERVICE_COLUMN_PRETTY_TYPE, NULL);
gtk_tree_view_column_set_visible(column, FALSE);
gtk_tree_view_append_column(GTK_TREE_VIEW(p->service_tree_view), column);
gtk_container_add(GTK_CONTAINER(scrolled_window), p->service_tree_view);
p->service_progress_bar = gtk_progress_bar_new();
- gtk_progress_bar_set_text(GTK_PROGRESS_BAR(p->service_progress_bar), _("Browsing ..."));
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(p->service_progress_bar), _("Browsing..."));
gtk_progress_bar_set_pulse_step(GTK_PROGRESS_BAR(p->service_progress_bar), 0.1);
gtk_box_pack_end(GTK_BOX(vbox2), p->service_progress_bar, FALSE, FALSE, 0);
USA.
***/
-#include <gtk/gtkwidget.h>
-#include <gtk/gtkdialog.h>
+#include <gtk/gtk.h>
#include <avahi-client/client.h>
#include <getopt.h>
#include <gtk/gtk.h>
+#include <glib/gi18n.h>
#include <avahi-client/client.h>
#include <avahi-common/strlst.h>
return 1;
}
+ bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ textdomain (GETTEXT_PACKAGE);
+
gtk_init(&argc, &argv);
switch (config.command) {
lib-ld.m4
lib-link.m4
lib-prefix.m4
+libtool.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+lt~obsolete.m4
nls.m4
po.m4
progtest.m4
# USA.
AC_PREREQ(2.57)
-AC_INIT([avahi],[0.6.23],[avahi (at) lists (dot) freedesktop (dot) org])
+AC_INIT([avahi],[0.6.24],[avahi (at) lists (dot) freedesktop (dot) org])
AC_CONFIG_SRCDIR([avahi-core/server.c])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([foreign 1.9 -Wall])
AC_SUBST(PACKAGE_URL, [http://avahi.org/])
-AC_SUBST(LIBAVAHI_COMMON_VERSION_INFO, [8:0:5])
-AC_SUBST(LIBAVAHI_CORE_VERSION_INFO, [5:5:0])
-AC_SUBST(LIBAVAHI_CLIENT_VERSION_INFO, [5:4:2])
+AC_SUBST(LIBAVAHI_COMMON_VERSION_INFO, [8:1:5])
+AC_SUBST(LIBAVAHI_CORE_VERSION_INFO, [6:0:0])
+AC_SUBST(LIBAVAHI_CLIENT_VERSION_INFO, [5:5:2])
AC_SUBST(LIBAVAHI_GLIB_VERSION_INFO, [1:1:0])
AC_SUBST(LIBAVAHI_GOBJECT_VERSION_INFO, [0:1:0])
AC_SUBST(LIBAVAHI_QT3_VERSION_INFO, [1:2:0])
AC_SUBST(LIBAVAHI_QT4_VERSION_INFO, [1:2:0])
-AC_SUBST(LIBAVAHI_UI_VERSION_INFO, [1:0:1])
+AC_SUBST(LIBAVAHI_UI_VERSION_INFO, [1:1:1])
# Do not touch these, since they we took this version-info from upstream HOWL/Bonjour
AC_SUBST(LIBAVAHI_COMPAT_LIBDNS_SD_VERSION_INFO, [1:0:0])
# If using GCC specify some additional parameters
if test "x$GCC" = "xyes" ; then
- DESIRED_FLAGS="-Wall -W -Wextra -pedantic -pipe -Wformat -Wold-style-definition -Wdeclaration-after-statement -Wfloat-equal -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wmissing-noreturn -Wshadow -Wendif-labels -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Winline -fPIC"
+ DESIRED_FLAGS="-Wall -W -Wextra -pedantic -pipe -Wformat -Wold-style-definition -Wdeclaration-after-statement -Wfloat-equal -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wmissing-noreturn -Wshadow -Wendif-labels -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Winline"
if test "x$HAVE_NETLINK" = "xyes" ; then
# Test whether rtnetlink.h can be included when compiled with -std=c99
AM_CONDITIONAL(HAVE_DLOPEN, test "x$HAVE_DLOPEN" = "xyes")
have_inotify=no
-AC_CHECK_HEADERS([linux/inotify.h], [have_inotify=yes])
AC_CHECK_HEADERS([sys/inotify.h], [have_inotify=yes])
AM_CONDITIONAL(HAVE_INOTIFY, test "x$have_inotify" = "xyes")
AC_DEFINE([HAVE_KQUEUE], 1, [Enable BSD kqueue() usage])
fi
-AM_GNU_GETTEXT([external])
-
IT_PROG_INTLTOOL([0.35.0])
GETTEXT_PACKAGE=avahi
AC_SUBST([GETTEXT_PACKAGE])
+Avahi 0.6.24
+============
+
+This is mostly a bugfix release.
+
+ * A huge number of bug fixes, including a security relavant one (low
+ risk)
+ * Add two new configuration directives "allow-interfaces" and
+ "deny-interfaces" which can be used to make Avahi ignore certain
+ network interfaces or only use certain network interfaces.
+ * A lot of translation updates
+
+This release is backwards compatible with Avahi 0.6.x with x < 24.
+
Avahi 0.6.23
============
#
# avahi-daemon: Starts the Avahi Daemon
#
-# chkconfig: 345 96 02
+# chkconfig: 345 24 02
# description: This is a daemon which runs on client machines to perform \
# Zeroconf service discovery on a network. avahi-daemon must be \
# running on systems that use Avahi for service discovery. \
# Avahi-daemon should not be running otherwise.
# processname: avahi-daemon
-# config:
+# config:
AVAHI_BIN=@sbindir@/avahi-daemon
-if [ "$1" == 'status' ]; then
+if [ "$1" = 'status' ]; then
test -x $AVAHI_BIN || exit 4
-else
+else
test -x $AVAHI_BIN || exit 5
fi
restart
;;
reload)
- reload
+ reload
;;
condrestart)
if [ -f $LOCKFILE ]; then
esac
exit $RETVAL
-
AVAHI_BIN=@sbindir@/avahi-dnsconfd
-if [ "$1" == 'status' ]; then
+if [ "$1" = 'status' ]; then
test -x $AVAHI_BIN || exit 4
else
test -x $AVAHI_BIN || exit 5
if HAVE_PYTHON
man_MANS += \
- avahi-discover.1 \
avahi-bookmarks.1
+if HAVE_GTK
+man_MANS += \
+ avahi-discover.1
+endif
endif
endif
if HAVE_DBUS
+BSSH_LN =
+if HAVE_GTK
+if HAVE_GLIB
+BSSH_LN += $(LN_S) bssh.1 bvnc.1 &&
+endif
+endif
install-exec-local:
mkdir -p $(DESTDIR)/$(mandir)/man1 && \
cd $(DESTDIR)/$(mandir)/man1 && \
rm -f avahi-resolve-host-name.1 avahi-resolve-address.1 avahi-browse-domains.1 avahi-publish-address.1 avahi-publish-service.1 bvnc.1 && \
+ $(BSSH_LN) \
$(LN_S) avahi-resolve.1 avahi-resolve-host-name.1 && \
$(LN_S) avahi-resolve.1 avahi-resolve-address.1 && \
$(LN_S) avahi-browse.1 avahi-browse-domains.1 && \
$(LN_S) avahi-publish.1 avahi-publish-address.1 && \
- $(LN_S) avahi-publish.1 avahi-publish-service.1 && \
- $(LN_S) bssh.1 bvnc.1
+ $(LN_S) avahi-publish.1 avahi-publish-service.1
endif
<!-- $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
<synopsis>
<cmd>@pkgsysconfdir@/avahi-daemon.conf</cmd>
</synopsis>
-
+
<description>
<p><file>avahi-daemon.conf</file> is the configuration file for avahi-daemon.</p>
</description>
-
+
<section name="Section [Server]">
<option>
of colon seperated domains or by adding them to the XDG config
file <file>~/.config/avahi/browse-domains</file> (seperated by
newlines).</p>
-
+
</option>
<option>
sockets. Default is "yes".</p>
</option>
+ <option>
+ <p><opt>allow-interfaces=</opt> Set a comma seperated list of
+ allowed network interfaces that should be used by the
+ avahi-daemon. Other interfaces will be ignored. If set to the
+ empty list all local interfaces except loopback and
+ point-to-point will be used.</p>
+ </option>
+
+ <option>
+ <p><opt>deny-interfaces=</opt> Set a comma seperated list of
+ network interfaces that should be ignored by avahi-daemon.
+ Other not specified interfaces will be used, unless
+ <opt>allow-interfaces</opt> is set. This option takes
+ precedence over <opt>deny-interfaces</opt>.</p>
+ </option>
+
<option>
<p><opt>check-response-ttl=</opt> Takes a boolean value ("yes"
or "no"). If set to "yes", an additional security check is
to bind to UDP port 5353. This effectively impedes other mDNS
stacks from running on the host. Use this as a security
measure to make sure that only Avahi is responsible for mDNS
- traffic. Please note that we do no recommend running multiple
+ traffic. Please note that we do not recommend running multiple
mDNS stacks on the same host simultaneously. This hampers
reliability and is a waste of resources. However, to not annoy
people this option defaults to "no".</p>
we encourage you to use subdomains of .local, such as
"kitchen.local". This option defaults to "yes".</p>
</option>
-
+
</section>
<section name="Section [publish]">
<p>The Avahi Developers <@PACKAGE_BUGREPORT@>; Avahi is
available from <url href="@PACKAGE_URL@"/></p>
</section>
-
+
<section name="See also">
<p>
<manref name="avahi-daemon" section="8"/>, <manref name="avahi-dnsconfd" section="8"/>
</p>
</section>
-
+
<section name="Comments">
<p>This man page was written using <manref name="xml2man" section="1"
href="http://masqmail.cx/xml2man/"/> by Oliver Kurth.</p>
</section>
-
+
</manpage>
ca
de
+el
en_AU
en_CA
en_GB
en_NZ
+es
+fi
fr
+hu
it
ms
pl
ru
sr
sr@latin
+sv
zh_CN
# List of source files which contain translatable strings.
avahi-common/error.c
+avahi-discover-standalone/avahi-discover.glade
+avahi-python/avahi-discover/avahi-discover.desktop.in.in
avahi-ui/avahi-ui.c
avahi-ui/bssh.c
avahi-ui/bssh.desktop.in.in
avahi-utils/avahi-publish.c
avahi-utils/avahi-resolve.c
avahi-utils/avahi-set-host-name.c
-
avahi-ui/bssh.desktop.in
avahi-ui/bvnc.desktop.in
tests/c-plus-plus-test-gen.py
-
+avahi-python/avahi-discover/avahi-discover.desktop.in
+avahi-python/avahi-discover/avahi-discover.desktop.in
-# audit-viewer
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
+# German translation of avahi
+# Copyright (C) 2008 Avahi
+# This file is distributed under the same license as the avahi package.
# Fabian Affolter <fab@fedoraproject.org>, 2008.
#
msgid ""
msgstr ""
"Project-Id-Version: audit-viewer\n"
-"Report-Msgid-Bugs-To: https://fedorahosted.org/audit-viewer/\n"
-"POT-Creation-Date: 2008-06-26 01:23+0000\n"
-"PO-Revision-Date: 2008-07-22 09:17+0100\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-10-17 01:51+0000\n"
+"PO-Revision-Date: 2008-10-23 16:07+0100\n"
"Last-Translator: Fabian Affolter <fab@fedoraproject.org>\n"
"Language-Team: German <fedora-trans-de@redhat.com>\n"
"MIME-Version: 1.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: German\n"
-#: ../src/audit-viewer.glade.h:1
-msgid "."
-msgstr "."
+#: ../avahi-common/error.c:32
+msgid "OK"
+msgstr "OK"
-#. A "decimal point" separating seconds and milliseconds.
-#: ../src/audit-viewer.glade.h:3
-msgid ":"
-msgstr ":"
+#: ../avahi-common/error.c:33
+msgid "Operation failed"
+msgstr "Operation fehlgeschlagen"
-#: ../src/audit-viewer.glade.h:4
-msgid "<b>Event Order</b>"
-msgstr "<b>Ereignis-Reihenfolge</b>"
+#: ../avahi-common/error.c:34
+msgid "Bad state"
+msgstr "Ungültiger Zustand"
-#: ../src/audit-viewer.glade.h:5
-msgid "<b>Group Columns _by:</b>"
-msgstr "<b>Gruppiere Spalte _nach:</b>"
+#: ../avahi-common/error.c:35
+msgid "Invalid host name"
+msgstr "Ungültiger Rechnername"
-#: ../src/audit-viewer.glade.h:6
-msgid "<b>Group Rows by:</b>"
-msgstr "<b>Gruppiere Zeile nach:</b>"
+#: ../avahi-common/error.c:36
+msgid "Invalid domain name"
+msgstr "Ungültiger Domainname"
-#: ../src/audit-viewer.glade.h:7
-msgid "<b>Identification</b>"
-msgstr "<b>Identifikation</b>"
+#: ../avahi-common/error.c:37
+msgid "No suitable network protocol available"
+msgstr "Kein passendes Netzwerkprotokoll verfügbar"
-#: ../src/audit-viewer.glade.h:8
-msgid "<b>Limit to events _before:</b>"
-msgstr "<b>Limit zu Er _before:</b>"
+#: ../avahi-common/error.c:38
+msgid "Invalid DNS TTL"
+msgstr "Ungültige DNS-TTL"
-#: ../src/audit-viewer.glade.h:9
-msgid "<b>Limit to events not _earlier than:</b>"
-msgstr "<b>Limitieren auf Ereignisse nicht _später als:</b>"
+#: ../avahi-common/error.c:39
+msgid "Resource record key is pattern"
+msgstr "Datensatzschlüssel ist Muster"
-#: ../src/audit-viewer.glade.h:10
-msgid "<b>Records</b>"
-msgstr "<b>Aufzeichnungen</b>"
+#: ../avahi-common/error.c:40
+msgid "Local name collision"
+msgstr "Lokale Namenskollision"
-#: ../src/audit-viewer.glade.h:11
-msgid "<b>Tab</b>"
-msgstr "<b>Tab</b>"
+#: ../avahi-common/error.c:41
+msgid "Invalid record"
+msgstr "Ungültiger Datensatz"
-#: ../src/audit-viewer.glade.h:12
-msgid "<b>_File</b>"
-msgstr "<b>_Datei</b>"
+#: ../avahi-common/error.c:43
+msgid "Invalid service name"
+msgstr "Ungültiger Dienstname"
-#: ../src/audit-viewer.glade.h:13
-msgid "<b>_System audit log</b>"
-msgstr "<b>_System-Audit-Protokoll</b>"
+#: ../avahi-common/error.c:44
+msgid "Invalid service type"
+msgstr "Ungültiger Diensttyp"
-#: ../src/audit-viewer.glade.h:14
-msgid "Audit Event Source"
-msgstr "Audit-Ewreignis-Quelle"
+#: ../avahi-common/error.c:45
+msgid "Invalid port number"
+msgstr "Ungültige Port-Nummer"
-#: ../src/audit-viewer.glade.h:15
-#: ../src/main_window.py:506
-msgid "Audit Viewer"
-msgstr "Audit Viewer"
+#: ../avahi-common/error.c:46
+msgid "Invalid record key"
+msgstr "Ungültiger Datensatzschlüssel"
-#: ../src/audit-viewer.glade.h:16
-msgid "Automatic file type e_xtension"
-msgstr "Automatische Dateityp-Er_weiterung"
+#: ../avahi-common/error.c:47
+msgid "Invalid address"
+msgstr "Ungültige Adresse"
-#: ../src/audit-viewer.glade.h:17
-msgid "Change _event source..."
-msgstr "Ändere _Ereignis-Quelle..."
+#: ../avahi-common/error.c:48
+msgid "Timeout reached"
+msgstr "Auszeit erreicht"
-#: ../src/audit-viewer.glade.h:18
-msgid "Columns"
-msgstr "Spalte"
+#: ../avahi-common/error.c:49
+msgid "Too many clients"
+msgstr "Zu viele Clients"
-#: ../src/audit-viewer.glade.h:19
-msgid "Current Co_lumn"
-msgstr "Aktuelle Sp_alte"
+#: ../avahi-common/error.c:50
+msgid "Too many objects"
+msgstr "Zu viele Objekte"
-#: ../src/audit-viewer.glade.h:20
-msgid "Current _Cell"
-msgstr "Aktuelle _Zelle"
+#: ../avahi-common/error.c:51
+msgid "Too many entries"
+msgstr "Zu viele Einträge"
-#: ../src/audit-viewer.glade.h:21
-msgid "Current _Row"
-msgstr "Aktuelle _Zeile"
+#: ../avahi-common/error.c:52
+msgid "OS Error"
+msgstr "Betriebssystemfehler"
-#: ../src/audit-viewer.glade.h:22
-msgid "Date Filter"
-msgstr "Datum-Filter"
+#: ../avahi-common/error.c:54
+msgid "Access denied"
+msgstr "Zugriff verweigert"
-#: ../src/audit-viewer.glade.h:23
-msgid "Event Details"
-msgstr "_Ereignis-Details"
+#: ../avahi-common/error.c:55
+msgid "Invalid operation"
+msgstr "Ungültige Operation"
-#: ../src/audit-viewer.glade.h:24
-msgid "Expression"
-msgstr "Ausdruck"
+#: ../avahi-common/error.c:56
+msgid "An unexpected D-Bus error occured"
+msgstr "Ein unerwarteter DBus-Fehler ist aufgetreten"
-#: ../src/audit-viewer.glade.h:25
-msgid "F_ield:"
-msgstr "F_eld:"
+#: ../avahi-common/error.c:57
+msgid "Daemon connection failed"
+msgstr "Verbindung zum Daemon fehlgeschlagen"
-#: ../src/audit-viewer.glade.h:26
-msgid "File _type:"
-msgstr "Datei-_Typ:"
+#: ../avahi-common/error.c:58
+msgid "Memory exhausted"
+msgstr "Verfügbarer Speicher ausgeschöpft"
-#: ../src/audit-viewer.glade.h:27
-msgid "Filter"
-msgstr "Filter"
+#: ../avahi-common/error.c:59
+msgid "The object passed in was not valid"
+msgstr "Das übergebene Objekt ist nicht gültig"
-#: ../src/audit-viewer.glade.h:28
-msgid "Filter:"
-msgstr "Filter:"
+#: ../avahi-common/error.c:60
+msgid "Daemon not running"
+msgstr "Daemon läuft nicht"
-#: ../src/audit-viewer.glade.h:29
-msgid "General"
-msgstr "Allgemeines"
+#: ../avahi-common/error.c:61
+msgid "Invalid interface index"
+msgstr "Ungültiger Schnittstellenindex"
-#: ../src/audit-viewer.glade.h:30
-msgid "Group _values by:"
-msgstr "_Werte gruppieren nach:"
+#: ../avahi-common/error.c:62
+msgid "Invalid protocol specification"
+msgstr "Ungültige Protokollspezifikation"
-#: ../src/audit-viewer.glade.h:31
-msgid "Grouping"
-msgstr "Gruppierung"
+#: ../avahi-common/error.c:63
+msgid "Invalid flags"
+msgstr "Ungültige Flags"
-#: ../src/audit-viewer.glade.h:32
-msgid "LIST/REPORT"
-msgstr "LISTE/BERICHT"
+#: ../avahi-common/error.c:65
+msgid "Not found"
+msgstr "Nicht gefunden"
-#: ../src/audit-viewer.glade.h:33
-msgid "New _List"
-msgstr "Neue _Liste"
+#: ../avahi-common/error.c:66
+msgid "Invalid configuration"
+msgstr "Ungültige Konfiguration"
-#: ../src/audit-viewer.glade.h:34
-msgid "New _Report on this View..."
-msgstr "Neuer _Bericht aus dieser Ansicht..."
+#: ../avahi-common/error.c:67
+msgid "Version mismatch"
+msgstr "Unpassende Version"
-#: ../src/audit-viewer.glade.h:35
-msgid "New _Report..."
-msgstr "Neuer _Bericht..."
+#: ../avahi-common/error.c:68
+msgid "Invalid service subtype"
+msgstr "Ungültiger Dienst-Untertyp"
-#: ../src/audit-viewer.glade.h:36
-msgid "Order:"
-msgstr "Reihenfolge:"
+#: ../avahi-common/error.c:69
+msgid "Invalid packet"
+msgstr "Ungültiges Paket"
-#: ../src/audit-viewer.glade.h:37
-msgid "Re_fresh"
-msgstr "Aktu_alisieren"
+#: ../avahi-common/error.c:70
+msgid "Invalid DNS return code"
+msgstr "Ungültiger DNS-Rückgabewert"
-#: ../src/audit-viewer.glade.h:38
-msgid "Serial number:"
-msgstr "Seriennummer:"
+#: ../avahi-common/error.c:71
+msgid "DNS failure: FORMERR"
+msgstr "DNS-Fehler: FORMERR"
-#: ../src/audit-viewer.glade.h:39
-msgid "Sort by:"
-msgstr "Sortieren nach:"
+#: ../avahi-common/error.c:72
+msgid "DNS failure: SERVFAIL"
+msgstr "DNS-Fehler: SERVFAIL"
-#: ../src/audit-viewer.glade.h:40
-msgid "The chart has too many data points. Please restrict your data filter or use coarser data grouping criteria."
-msgstr "Das Diagramm hat zu viele Datenpunkte. Bitte beschränken Sie Ihren Datenfilter oder benutzen Sie coarser-Datengruppierungkriterien."
+#: ../avahi-common/error.c:73
+msgid "DNS failure: NXDOMAIN"
+msgstr "DNS-Fehler: NXDOMAIN"
-#: ../src/audit-viewer.glade.h:41
-msgid "Time:"
-msgstr "Zeit:"
+#: ../avahi-common/error.c:74
+msgid "DNS failure: NOTIMP"
+msgstr "DNS-Fehler: NOTIMP"
-#: ../src/audit-viewer.glade.h:42
-msgid "You can add aditional conditions using the <tt>ausearch</tt> expression language. Run <tt>(man ausearch-expression)</tt> to read the documentation of the language."
-msgstr "Sie können zusätzliche Bedingungen hinzufügen mit der <tt>ausearch</tt>-Ausdruckssprache. Führen Sie <tt>(man ausearch-expression)</tt> aus, um die Dokumentaion dieser Sprache zu lesen."
+#: ../avahi-common/error.c:76
+msgid "DNS failure: REFUSED"
+msgstr "DNS-Fehler: REFUSED"
-#: ../src/audit-viewer.glade.h:43
-msgid "_Ascending"
-msgstr "_Aufsteigend"
+#: ../avahi-common/error.c:77
+msgid "DNS failure: YXDOMAIN"
+msgstr "DNS-Fehler: YXDOMAIN"
-#: ../src/audit-viewer.glade.h:44
-msgid "_Browse..."
-msgstr "_Durchsuchen..."
+#: ../avahi-common/error.c:78
+msgid "DNS failure: YXRRSET"
+msgstr "DNS-Fehler: YXRRSET"
-#: ../src/audit-viewer.glade.h:45
-msgid "_Close"
-msgstr "_Schliessen"
+#: ../avahi-common/error.c:79
+msgid "DNS failure: NXRRSET"
+msgstr "DNS-Fehler: NXRRSET"
-#: ../src/audit-viewer.glade.h:46
-msgid "_Descending"
-msgstr "_Absteigend"
+#: ../avahi-common/error.c:80
+msgid "DNS failure: NOTAUTH"
+msgstr "DNS-Fehler: NOTAUTH"
-#: ../src/audit-viewer.glade.h:47
-msgid "_Event Details"
-msgstr "_Ereignis-Details"
+#: ../avahi-common/error.c:81
+msgid "DNS failure: NOTZONE"
+msgstr "DNS-Fehler: NOTZONE"
-#: ../src/audit-viewer.glade.h:48
-msgid "_Event Time"
-msgstr "_Ereignis-Zeit"
+#: ../avahi-common/error.c:82
+msgid "Invalid RDATA"
+msgstr "Ungültige RDATA"
-#: ../src/audit-viewer.glade.h:49
-msgid "_Export..."
-msgstr "_Exportieren..."
+#: ../avahi-common/error.c:83
+msgid "Invalid DNS type"
+msgstr "Ungültiger DNS-Typ"
-#: ../src/audit-viewer.glade.h:50
-msgid "_Expression:"
-msgstr "_Ausdruck:"
+#: ../avahi-common/error.c:84
+msgid "Invalid DNS class"
+msgstr "Ungültige DNS-Klasse"
-#: ../src/audit-viewer.glade.h:51
-msgid "_Field:"
-msgstr "_Feld:"
+#: ../avahi-common/error.c:85
+msgid "Not supported"
+msgstr "Nicht unterstützt"
-#: ../src/audit-viewer.glade.h:52
-msgid "_Group values by:"
-msgstr "_Gruppen-Wert nach:"
+#: ../avahi-common/error.c:87
+msgid "Not permitted"
+msgstr "Nicht erlaubt"
-#: ../src/audit-viewer.glade.h:53
-msgid "_Help"
-msgstr "_Hilfe"
+#: ../avahi-common/error.c:88
+msgid "Invalid argument"
+msgstr "Ungültiges Argument"
-#: ../src/audit-viewer.glade.h:54
-msgid "_List Events for"
-msgstr "_Auflisten der Ereignissen nach"
+#: ../avahi-common/error.c:89
+msgid "Is empty"
+msgstr "ist leer"
-#: ../src/audit-viewer.glade.h:55
-msgid "_Log file:"
-msgstr "_Protokolldatei:"
-
-#: ../src/audit-viewer.glade.h:56
-msgid "_Name:"
-msgstr "_Name:"
-
-#: ../src/audit-viewer.glade.h:57
-msgid "_Next Event"
-msgstr "_Nächstes Ereignis"
-
-#: ../src/audit-viewer.glade.h:58
-msgid "_Open in new window"
-msgstr "_In neuem Fenster öffnen"
-
-#: ../src/audit-viewer.glade.h:59
-msgid "_Path:"
-msgstr "_Pfad:"
-
-#: ../src/audit-viewer.glade.h:60
-msgid "_Previous Event"
-msgstr "_Vorheriges Ereignis"
-
-#: ../src/audit-viewer.glade.h:61
-msgid "_Save Configuration as..."
-msgstr "_Speichere Konfiguration als..."
-
-#: ../src/audit-viewer.glade.h:62
-msgid "_Save layout as..."
-msgstr "_Speichere Anordnung als…"
-
-#: ../src/audit-viewer.glade.h:63
-msgid "_Show as a chart"
-msgstr "_Zeige als Diagramm"
-
-#: ../src/audit-viewer.glade.h:64
-msgid "_View"
-msgstr "_Ansicht"
-
-#: ../src/audit-viewer.glade.h:65
-msgid "_Window"
-msgstr "_Fenster"
-
-#: ../src/audit-viewer.glade.h:66
-msgid "gtk-about"
-msgstr "gtk-about"
-
-#: ../src/audit-viewer.glade.h:67
-msgid "gtk-apply"
-msgstr "gtk-apply"
-
-#: ../src/audit-viewer.glade.h:68
-msgid "gtk-close"
-msgstr "gtk-close"
-
-#: ../src/audit-viewer.glade.h:69
-msgid "gtk-open"
-msgstr "gtk-open"
-
-#: ../src/audit-viewer.glade.h:70
-msgid "gtk-properties"
-msgstr "gtk-properties"
-
-#: ../src/audit-viewer.glade.h:71
-msgid "gtk-quit"
-msgstr "gtk-quit"
-
-#: ../src/client.py:113
-msgid "Not enough data available"
-msgstr "Nicht genügend Daten verfügbar"
-
-#: ../src/event_dialog.py:48
-msgid "Field"
-msgstr "Feld"
-
-#: ../src/event_dialog.py:51
-msgid "Value"
-msgstr "Wert"
-
-#: ../src/event_dialog.py:58
-msgid "Record Type"
-msgstr "Aufzeichnungstyp"
-
-#: ../src/filters.py:204
-#, python-format
-msgid "date %s %s.%03d"
-msgstr "Datum %s %s.%03d"
-
-#: ../src/filters.py:205
-#: ../src/statistic.py:303
-msgid "%x %H:%M:%S"
-msgstr "%x %H:%M:%S"
-
-#: ../src/filters.py:257
-#, python-format
-msgid "date %s now"
-msgstr "Datum %s heute"
-
-#: ../src/filters.py:284
-#, python-format
-msgid "date %s %d minute ago"
-msgid_plural "date %s %d minutes ago"
-msgstr[0] "Datum %s %d Minute vergangen"
-msgstr[1] "Datum %s %d Minuten vergangen"
-
-#: ../src/filters.py:316
-#, python-format
-msgid "date %s today 00:00"
-msgstr "Datum %s Heute 00:00"
-
-#: ../src/filters.py:333
-#, python-format
-msgid "date %s yesterday 00:00"
-msgstr "Datum %s Gestern 00:00"
-
-#: ../src/filters.py:350
-#, python-format
-msgid "date %s start of this week"
-msgstr "Datum %s Start dieser Woche"
-
-#: ../src/filters.py:367
-#, python-format
-msgid "date %s start of this month"
-msgstr "Datum %s Start dieses Monat"
-
-#: ../src/filters.py:384
-#, python-format
-msgid "date %s start of this year"
-msgstr "Datum %s Start von diesem Jahr"
-
-#: ../src/list_properties.py:42
-msgid "Event date"
-msgstr "Ereignisdatum"
-
-#: ../src/list_properties.py:43
-msgid "Other fields"
-msgstr "Andere Felder"
-
-#: ../src/list_properties.py:53
-msgid "Column"
-msgstr "Spalte"
-
-#: ../src/list_properties.py:133
-msgid "Field name must not be empty"
-msgstr "Feldname darf nicht leer sein"
-
-#: ../src/list_tab.py:127
-msgid "_List"
-msgstr "_Liste"
-
-#: ../src/list_tab.py:145
-#, python-format
-msgid "List %d"
-msgstr "Liste %d"
-
-#: ../src/list_tab.py:173
-#: ../src/report_tab.py:90
-msgid "HTML"
-msgstr "HTML"
-
-#: ../src/list_tab.py:173
-#: ../src/report_tab.py:90
-msgid "CSV"
-msgstr "CSV"
-
-#: ../src/list_tab.py:174
-msgid "Raw log data"
-msgstr "Rohe Log-Daten"
-
-#: ../src/list_tab.py:175
-#: ../src/report_tab.py:91
-msgid "Export..."
-msgstr "Export..."
-
-#: ../src/list_tab.py:190
-#: ../src/main_window.py:436
-#: ../src/main_window.py:476
-#: ../src/report_tab.py:104
-#, python-format
-msgid "Error writing to %s: %s"
-msgstr "Fehler beim Schreiben von %s: %s"
-
-#: ../src/list_tab.py:200
-msgid ", "
-msgstr ", "
-
-#: ../src/list_tab.py:202
-msgid "None"
-msgstr "Nichts"
-
-#: ../src/list_tab.py:284
-msgid "Other Fields"
-msgstr "Andere Felder"
-
-#: ../src/list_tab.py:286
-msgid "Date"
-msgstr "Datum"
-
-#: ../src/main.py:41
-msgid "%prog [OPTION]... [FILE]..."
-msgstr "%prog [OPTION]... [DATEI]..."
-
-#: ../src/main.py:44
-msgid "Start an audit event viewer."
-msgstr "Starte eine Audit-Ereignis-Betrachter"
-
-#: ../src/main.py:48
-msgid "do not attempt to start the privileged backend for reading system audit logs"
-msgstr "versuchen Sie nicht das privilegierte Backend zum Lesen der System-Audit-Berichte zu starten"
-
-#: ../src/main.py:64
-#, python-format
-msgid "Error running audit-viewer-server: %s"
-msgstr "Fehler beim Laufenlassen von audit-viewer-server: %s"
-
-#: ../src/main_window.py:72
-msgid "Audit viewer layout"
-msgstr "Audit-Ansicht-Anordnung"
-
-#: ../src/main_window.py:222
-#, python-format
-msgid "A file named \"%s\" already exists. Do you want to replace it?"
-msgstr "Die Datei \"%s\" existiert bereits. Wollen Sie sie ersetzen?"
-
-#: ../src/main_window.py:226
-#, python-format
-msgid "The file already exists in \"%s\". Replacing it will overwrite its contents."
-msgstr "Die Datei existiert bereits in \"%s\" . Falls Sie sie ersetzen, wird ihre Inhalt überschreiben."
-
-#: ../src/main_window.py:232
-msgid "_Replace"
-msgstr "_Ersetzen"
-
-#: ../src/main_window.py:270
-#, python-format
-msgid "Error reading audit events: %s"
-msgstr "Fehler beim Lesen der Audit-Ereignisse: %s"
-
-#: ../src/main_window.py:293
-msgid "All files"
-msgstr "Alle Dateien"
-
-#: ../src/main_window.py:331
-msgid "Unexpected top element contents"
-msgstr "Unerwarteter Top-Elementinhalt"
-
-#: ../src/main_window.py:334
-#, python-format
-msgid "Unsupported file version %s"
-msgstr "Nicht unterstützte Datei-Version %s"
-
-#: ../src/main_window.py:351
-msgid "Unexpected top element"
-msgstr "Unerwartetes Topelement"
-
-#: ../src/main_window.py:359
-#, python-format
-msgid "Error reading %s: %s"
-msgstr "Fehler beim Lesen %s: %s"
-
-#: ../src/main_window.py:364
-#, python-format
-msgid "Invalid contents of %s: %s"
-msgstr "Ungültiger Inhalt von %s: %s"
-
-#: ../src/main_window.py:405
-msgid "Open..."
-msgstr "Öffnen..."
-
-#: ../src/main_window.py:419
-msgid "Save Layout As..."
-msgstr "Sichere Aufbau als..."
-
-#: ../src/main_window.py:460
-msgid "Save Configuration As..."
-msgstr "Sichere Konfiguration als..."
-
-#: ../src/main_window.py:523
-msgid "translator-credits"
-msgstr "Fabian Affolter <fab@fedoraproject.org>, 2008."
-
-#. This file is not installed; it is used only to make sure the strings
-#. used by Python's optparse module are translated.
-#: ../src/optparse_strings.py:3
-#, python-format
-msgid "no such option: %s"
-msgstr "Keine solche Option: %s"
-
-#: ../src/optparse_strings.py:4
-#, python-format
-msgid "ambiguous option: %s (%s?)"
-msgstr "Mehrdeutige Option: %s (%s?)"
-
-#: ../src/optparse_strings.py:5
-#, python-format
-msgid "Usage: %s\n"
-msgstr "Verwendung: %s\n"
-
-#: ../src/optparse_strings.py:6
-msgid "Usage"
-msgstr "Verwendung"
-
-#: ../src/optparse_strings.py:7
-msgid "integer"
-msgstr "Ganzzahl"
-
-#: ../src/optparse_strings.py:8
-msgid "long integer"
-msgstr "Lange Ganzzahl"
-
-#: ../src/optparse_strings.py:9
-msgid "floating-point"
-msgstr "Gleitkomma"
-
-#: ../src/optparse_strings.py:10
-msgid "complex"
-msgstr "Komplex"
-
-#: ../src/optparse_strings.py:11
-#, python-format
-msgid "option %s: invalid %s value: %r"
-msgstr "Option %s: ungültiger %s Wert: %r"
-
-#: ../src/optparse_strings.py:12
-#, python-format
-msgid "option %s: invalid choice: %r (choose from %s)"
-msgstr "Option %s: ungültige Wahl: %r (Wahl von %s)"
-
-#: ../src/optparse_strings.py:13
-msgid "show this help message and exit"
-msgstr "Diese Hilfe-Meldung ausgeben und beenden"
-
-#: ../src/optparse_strings.py:14
-msgid "show program's version number and exit"
-msgstr "Version des Programms anzeigen und beenden"
-
-#: ../src/optparse_strings.py:15
-msgid "%prog [options]"
-msgstr "%prog [Optionen]"
-
-#: ../src/optparse_strings.py:16
-#: ../src/optparse_strings.py:19
-#, python-format
-msgid "%s option requires an argument"
-msgstr "%s Option benötigt ein Argument"
-
-#: ../src/optparse_strings.py:17
-#: ../src/optparse_strings.py:20
-#, python-format
-msgid "%s option requires %d arguments"
-msgstr "%s Option benötigt %d Argumente"
-
-#: ../src/optparse_strings.py:18
-#, python-format
-msgid "%s option does not take a value"
-msgstr "%s Option benötigt keine Wert"
-
-#: ../src/optparse_strings.py:21
-msgid "Options"
-msgstr "Optionen"
-
-#: ../src/report_tab.py:56
-msgid "_Report"
-msgstr "_Bericht"
-
-#: ../src/report_tab.py:73
-#, python-format
-msgid "Report %d"
-msgstr "Bericht %d"
-
-#: ../src/report_tab.py:123
-#: ../src/report_tab.py:154
-msgid "Listing events for this column is not supported."
-msgstr "Auflisten von Ereignissen für diese Spalte ist nicht unterstützt."
-
-#: ../src/report_tab.py:126
-msgid "Listing events for this cell is not supported."
-msgstr "Auflisten von Ereignissen für diese Zelle ist nicht unterstützt."
-
-#: ../src/report_tab.py:131
-#: ../src/report_tab.py:142
-msgid "Listing events for this row is not supported."
-msgstr "Auflisten von Ereignissen für diese Zeile ist nicht unterstützt."
-
-#: ../src/report_tab.py:236
-#: ../src/report_tab.py:276
-#: ../src/report_tab.py:480
-msgid "Count"
-msgstr "Anzahl"
-
-#: ../src/search_entry.py:72
-msgid "Search..."
-msgstr "Suche..."
-
-#: ../src/server.c:128
-msgid "This program is only for use by audit-viewer and it should not be run manually.\n"
-msgstr "Dieses Programm ist nur für die Benutzung durch audit-viewer und es sollte nicht manuell gestartet werden.\n"
-
-#: ../src/server.c:141
+#: ../avahi-common/error.c:90
+msgid "The requested operation is invalid because redundant"
+msgstr "Die angeforderte Operation ist ungültig, da sie redundant ist"
+
+#: ../avahi-common/error.c:96
+msgid "Invalid Error Code"
+msgstr "Ungültiger Fehlercode"
+
+#: ../avahi-ui/avahi-ui.c:326
+#, c-format
+msgid "Avahi client failure: %s"
+msgstr "Avahi-Client-Fehler: %s"
+
+#: ../avahi-ui/avahi-ui.c:388
+#, c-format
+msgid "Avahi resolver failure: %s"
+msgstr "Avahi-Auflösungsfehler: %s"
+
+#: ../avahi-ui/avahi-ui.c:518
+#, c-format
+msgid "Browsing for service type %s in domain %s failed: %s"
+msgstr "Durchsuchen nach Dienst-Typen %s in Domain %s fehlgeschlagen: %s"
+
+#: ../avahi-ui/avahi-ui.c:519
+#: ../avahi-utils/avahi-browse.c:157
+#: ../avahi-utils/avahi-browse.c:158
+#: ../avahi-utils/avahi-browse.c:164
+#: ../avahi-utils/avahi-browse.c:165
+msgid "n/a"
+msgstr "k.A."
+
+#: ../avahi-ui/avahi-ui.c:649
+#, c-format
+msgid "Avahi domain browser failure: %s"
+msgstr "Avahi-Domainbrowser-Fehler: %s"
+
+#: ../avahi-ui/avahi-ui.c:684
+#, c-format
+msgid "Failed to read Avahi domain: %s"
+msgstr "Fehler beim Lesen der Avahi-Domain: %s"
+
+#: ../avahi-ui/avahi-ui.c:717
+#, c-format
+msgid "Failed to connect to Avahi server: %s"
+msgstr "Verbindung zu Avahi-Server fehlgeschlagen: %s"
+
+#: ../avahi-ui/avahi-ui.c:735
+msgid "Browsing for services on <b>local network</b>:"
+msgstr "Durchsuche <b>lokales Netzwerk</b> nach Diensten:"
+
+#: ../avahi-ui/avahi-ui.c:737
+#, c-format
+msgid "Browsing for services in domain <b>%s</b>:"
+msgstr "Durchsuche Domain <b>%s</b> nach Diensten:"
+
+#: ../avahi-ui/avahi-ui.c:773
+#, c-format
+msgid "Failed to create browser for %s: %s"
+msgstr "Browser-Erzeugung für %s fehlgeschlagen: %s"
+
+#: ../avahi-ui/avahi-ui.c:903
+#, c-format
+msgid "Failed to create resolver for %s of type %s in domain %s: %s"
+msgstr "Erzeugen eines Resolvers für %s vom Typ %s in Domain %s fehlgeschlagen: %s"
+
+#: ../avahi-ui/avahi-ui.c:978
+#, c-format
+msgid "Failed to create domain browser: %s"
+msgstr "Erzeugen eines Domainbrowser fehlgeschlagen: %s"
+
+#: ../avahi-ui/avahi-ui.c:989
+msgid "Change domain"
+msgstr "Domain ändern"
+
+#: ../avahi-ui/avahi-ui.c:1021
+msgid "Service Name"
+msgstr "Dienstname"
+
+#: ../avahi-ui/avahi-ui.c:1029
+#: ../avahi-ui/avahi-ui.c:1160
+msgid "Browsing ..."
+msgstr "Durchsuchen ..."
+
+#: ../avahi-ui/avahi-ui.c:1118
+msgid "Initializing..."
+msgstr "Initialisieren ..."
+
+#: ../avahi-ui/avahi-ui.c:1164
+msgid "_Domain..."
+msgstr "_Domain ..."
+
+#: ../avahi-ui/bssh.c:57
#, c-format
msgid ""
+"%s [options]\n"
"\n"
-"Report bugs to %s.\n"
+" -h --help Show this help\n"
+" -s --ssh Browse SSH servers\n"
+" -v --vnc Browse VNC servers\n"
+" -S --shell Browse both SSH and VNC\n"
+" -d --domain=DOMAIN The domain to browse in\n"
msgstr ""
+"%s [options]\n"
"\n"
-"Melden Sie Fehler an %s.\n"
+" -h --help Zeigt diese Hilfe an\n"
+" -s --ssh Durchsuchen nach SSH-Servern\n"
+" -v --vnc Durchsuchen nach VNC-Server\n"
+" -S --shell Durchsuchen nach beiden (SSH und VNC)\n"
+" -d --domain=DOMAIN Die Domain zum Durchsuchen\n"
+
+#: ../avahi-ui/bssh.c:103
+#: ../avahi-utils/avahi-browse.c:759
+#, c-format
+msgid "Too many arguments\n"
+msgstr "Zu viele Argumente\n"
+
+#: ../avahi-ui/bssh.c:147
+msgid "Choose Shell Server"
+msgstr "Shell-Server auswählen"
+
+#: ../avahi-ui/bssh.c:149
+msgid "Desktop"
+msgstr "Desktop"
+
+#: ../avahi-ui/bssh.c:150
+msgid "Terminal"
+msgstr "Terminal"
+
+#: ../avahi-ui/bssh.c:154
+msgid "Choose VNC server"
+msgstr "VNC-Server auswählen"
+
+#: ../avahi-ui/bssh.c:159
+msgid "Choose SSH server"
+msgstr "SSH-Dienst auswählen"
+
+#: ../avahi-ui/bssh.c:183
+#, c-format
+msgid "Connecting to '%s' ...\n"
+msgstr "Verbinde zu '%s' ...\n"
+
+#: ../avahi-ui/bssh.c:238
+#, c-format
+msgid "execlp() failed: %s\n"
+msgstr "execlp() fehlgeschlagen: %s\n"
+
+#: ../avahi-ui/bssh.c:248
+msgid "Canceled.\n"
+msgstr "Abgebrochen.\n"
+
+#: ../avahi-ui/bssh.desktop.in.h:1
+msgid "Avahi SSH Server Browser"
+msgstr "Avahi SSH Server Browser"
+
+#: ../avahi-ui/bssh.desktop.in.h:2
+msgid "Browse for Zeroconf-enabled SSH Servers"
+msgstr "Durchsuchen nach Zeroconf-aktivierten SSH-Servern"
+
+#: ../avahi-ui/bvnc.desktop.in.h:1
+msgid "Avahi VNC Server Browser"
+msgstr "Avahi VNC-Server-Browser"
+
+#: ../avahi-ui/bvnc.desktop.in.h:2
+msgid "Browse for Zeroconf-enabled VNC Servers"
+msgstr "Durchsuchen nach Zeroconf-aktivierten VNC-Servern"
+
+#: ../avahi-utils/avahi-browse.c:108
+#, c-format
+msgid ": All for now\n"
+msgstr ": Alle Einträge bisher\n"
+
+#: ../avahi-utils/avahi-browse.c:119
+#, c-format
+msgid ": Cache exhausted\n"
+msgstr ": Datencache erschöpft\n"
+
+#: ../avahi-utils/avahi-browse.c:223
+#: ../avahi-utils/avahi-browse.c:245
+#, c-format
+msgid "Failed to resolve service '%s' of type '%s' in domain '%s': %s\n"
+msgstr "Fehler beim Auflösen des Dienstes '%s' des Typ '%s' in Domain '%s': %s\n"
+
+#: ../avahi-utils/avahi-browse.c:324
+#, c-format
+msgid "service_browser failed: %s\n"
+msgstr "service_browser fehlgeschlagen: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:362
+#, c-format
+msgid "avahi_service_browser_new() failed: %s\n"
+msgstr "avahi_service_browser_new() fehlgeschlagen: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:398
+#, c-format
+msgid "service_type_browser failed: %s\n"
+msgstr "service_type_browser fehlgeschlagen: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:428
+#, c-format
+msgid "avahi_service_type_browser_new() failed: %s\n"
+msgstr "avahi_service_type_browser_new() fehlgeschlagen: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:503
+#, c-format
+msgid "avahi_domain_browser_new() failed: %s\n"
+msgstr "avahi_domain_browser_new() fehlgeschlagen: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:519
+#: ../avahi-utils/avahi-publish.c:391
+#: ../avahi-utils/avahi-resolve.c:282
+#: ../avahi-utils/avahi-set-host-name.c:170
+#, c-format
+msgid "Failed to query version string: %s\n"
+msgstr "Versionsstring-Abfrage fehlgeschlagen: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:524
+#: ../avahi-utils/avahi-publish.c:396
+#: ../avahi-utils/avahi-resolve.c:287
+#: ../avahi-utils/avahi-set-host-name.c:175
+#: ../avahi-utils/avahi-set-host-name.c:191
+#, c-format
+msgid "Failed to query host name: %s\n"
+msgstr "Hostname-Abfrage fehlgeschlagen: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:528
+#: ../avahi-utils/avahi-publish.c:400
+#: ../avahi-utils/avahi-resolve.c:291
+#: ../avahi-utils/avahi-set-host-name.c:179
+#, c-format
+msgid "Server version: %s; Host name: %s\n"
+msgstr "Server-Version: %s; Rechnername: %s\n"
+
+#. Translators: This is a column heading with abbreviations for
+#. * Event (+/-), Network Interface, Protocol (IPv4/v6), Domain
+#: ../avahi-utils/avahi-browse.c:533
+#, c-format
+msgid "E Ifce Prot Domain\n"
+msgstr "E Ifce Prot-Domain\n"
-#: ../src/server.c:148
+#. Translators: This is a column heading with abbreviations for
+#. * Event (+/-), Network Interface, Protocol (IPv4/v6), Domain
+#: ../avahi-utils/avahi-browse.c:537
+#, c-format
+msgid "E Ifce Prot %-*s %-20s Domain\n"
+msgstr "E Ifce Prot %-*s %-20s-Domain\n"
+
+#: ../avahi-utils/avahi-browse.c:537
+msgid "Name"
+msgstr "Name"
+
+#: ../avahi-utils/avahi-browse.c:537
+msgid "Type"
+msgstr "Typ"
+
+#. We have been disconnected, so let reconnect
+#: ../avahi-utils/avahi-browse.c:569
+#: ../avahi-utils/avahi-publish.c:165
+#, c-format
+msgid "Disconnected, reconnecting ...\n"
+msgstr "Nicht verbunden, neu verbinden ...\n"
+
+#: ../avahi-utils/avahi-browse.c:583
+#: ../avahi-utils/avahi-browse.c:813
+#: ../avahi-utils/avahi-publish.c:172
+#: ../avahi-utils/avahi-publish.c:383
+#: ../avahi-utils/avahi-resolve.c:274
+#: ../avahi-utils/avahi-set-host-name.c:162
+#, c-format
+msgid "Failed to create client object: %s\n"
+msgstr "Clientobjekt-Erzeugung fehlgeschlagen: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:588
+#: ../avahi-utils/avahi-publish.c:177
+#: ../avahi-utils/avahi-resolve.c:145
+#: ../avahi-utils/avahi-set-host-name.c:61
+#, c-format
+msgid "Client failure, exiting: %s\n"
+msgstr "Client-Fehler, beende: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:607
+#: ../avahi-utils/avahi-publish.c:208
+#, c-format
+msgid "Waiting for daemon ...\n"
+msgstr "Warte auf Daemon ...\n"
+
+#: ../avahi-utils/avahi-browse.c:631
+msgid ""
+" -h --help Show this help\n"
+" -V --version Show version\n"
+" -D --browse-domains Browse for browsing domains instead of services\n"
+" -a --all Show all services, regardless of the type\n"
+" -d --domain=DOMAIN The domain to browse in\n"
+" -v --verbose Enable verbose mode\n"
+" -t --terminate Terminate after dumping a more or less complete list\n"
+" -c --cache Terminate after dumping all entries from the cache\n"
+" -l --ignore-local Ignore local services\n"
+" -r --resolve Resolve services found\n"
+" -f --no-fail Don't fail if the daemon is not available\n"
+" -p --parsable Output in parsable format\n"
+msgstr ""
+" -h --help Zeigt diese Hilfe an\n"
+" -V --version Zeigt die Version an\n"
+" -D --browse-domains Durchsuche nach suchenden Domain statt nach Diensten\n"
+" -a --all Zeigt alle Dienste, ohne Rücksicht auf die Typen\n"
+" -d --domain=DOMAIN Die Domain zum Durchsuchen\n"
+" -v --verbose Aktiviert detaillierten Modus\n"
+" -t --terminate Beenden nach Ausgeben einer mehr oder weniger kompletten Liste\n"
+" -c --cache Beenden nach Ausgeben aller Einträge aus dem Cache\n"
+" -l --ignore-local Ignoriere lokale Dienste\n"
+" -r --resolve Löse gefundene Dienste auf\n"
+" -f --no-fail Schlägt nicht fehl, wenn der Daemon nicht verfügbar ist\n"
+" -p --parsable Ausgabe in parsbaren Format\n"
+
+#: ../avahi-utils/avahi-browse.c:644
+msgid ""
+" -k --no-db-lookup Don't lookup service types\n"
+" -b --dump-db Dump service type database\n"
+msgstr ""
+" -k --no-db-lookup Schlage Dienst-Typen nicht nach\n"
+" -b --dump-db Anzeigen der Dienst-Typen-Datenbank\n"
+
+#: ../avahi-utils/avahi-browse.c:750
+#: ../avahi-utils/avahi-resolve.c:221
+#, c-format
+msgid "Too few arguments\n"
+msgstr "Zu wenige Argumente\n"
+
+#: ../avahi-utils/avahi-browse.c:805
+#: ../avahi-utils/avahi-publish.c:375
+#: ../avahi-utils/avahi-resolve.c:266
+#: ../avahi-utils/avahi-set-host-name.c:154
+#, c-format
+msgid "Failed to create simple poll object.\n"
+msgstr "Fehler beim Erzeugen eines einfachen Abfrage-Objekts: \n"
+
+#: ../avahi-utils/avahi-publish.c:78
+#, c-format
+msgid "Established under name '%s'\n"
+msgstr "Eingerichtet unter dem Namen '%s'\n"
+
+#: ../avahi-utils/avahi-publish.c:83
+#, c-format
+msgid "Failed to register: %s\n"
+msgstr "Registrierung fehlgeschlagen: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:96
+#, c-format
+msgid "Name collision, picking new name '%s'.\n"
+msgstr "Namenskollision, wähle neuen Name '%s'.\n"
+
+#: ../avahi-utils/avahi-publish.c:116
+#, c-format
+msgid "Failed to create entry group: %s\n"
+msgstr "Fehler bei der Erzeugung der Einstiegsgruppe: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:126
+#, c-format
+msgid "Failed to add address: %s\n"
+msgstr "Fehler beim Hinzufügen der Adresse: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:136
+#, c-format
+msgid "Failed to add service: %s\n"
+msgstr "Fehler beim Hinzufügen des Dienstes: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:142
+#, c-format
+msgid "Failed to add subtype '%s': %s\n"
+msgstr "Fehler beim Hinzufügen des Untertyps: '%s': %s\n"
+
+#: ../avahi-utils/avahi-publish.c:193
+#, c-format
+msgid "Host name conflict\n"
+msgstr "Rechnername-Konflikt\n"
+
+#: ../avahi-utils/avahi-publish.c:218
+#, c-format
+msgid ""
+"%s [options] %s <name> <type> <port> [<txt ...>]\n"
+"%s [options] %s <host-name> <address>\n"
+"\n"
+" -h --help Show this help\n"
+" -V --version Show version\n"
+" -s --service Publish service\n"
+" -a --address Publish address\n"
+" -v --verbose Enable verbose mode\n"
+" -d --domain=DOMAIN Domain to publish service in\n"
+" -H --host=DOMAIN Host where service resides\n"
+" --subtype=SUBTYPE An additional subtype to register this service with\n"
+" -f --no-fail Don't fail if the daemon is not available\n"
+msgstr ""
+"%s [options] %s <name> <type> <port> [<txt ...>]\n"
+"%s [options] %s <host-name> <address>\n"
+"\n"
+" -h --help Zeigt diese Hilfe an\n"
+" -V --version Zeigt die Version an\n"
+" -s --service Veröffentlicht Service\n"
+" -a --address Veröffentlicht Addresse\n"
+" -v --verbose Aktiviert detaillierten Modus\n"
+" -d --domain=DOMAIN Domain zum Veröffentlichen des Dienstes auf\n"
+" -H --host=DOMAIN Host, wo sich der Service befindet\n"
+" --subtype=SUBTYPE Ein zusätzlicher Untertyp zum Registrieren des Dienstes mit\n"
+" -f --no-fail Schlägt nicht fehl, wenn der Daemon nicht verfügbar ist\n"
+
+#: ../avahi-utils/avahi-publish.c:300
+#: ../avahi-utils/avahi-publish.c:315
+#, c-format
+msgid "Bad number of arguments\n"
+msgstr "Ungültige Anzahl von Argumenten\n"
+
+#: ../avahi-utils/avahi-publish.c:326
+#, c-format
+msgid "Failed to parse port number: %s\n"
+msgstr "Parsen der Port-Nummer fehlgeschlagen: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:358
+#: ../avahi-utils/avahi-resolve.c:248
+#, c-format
+msgid "No command specified.\n"
+msgstr "Kein Befehl angegeben.\n"
+
+#: ../avahi-utils/avahi-resolve.c:91
+#, c-format
+msgid "Failed to resolve host name '%s': %s\n"
+msgstr "Fehler beim Auflösen des Rechnernamens '%s': %s\n"
+
+#: ../avahi-utils/avahi-resolve.c:128
+#, c-format
+msgid "Failed to resolve address '%s': %s\n"
+msgstr "Fehler beim Auflösen der Adresse '%s': %s\n"
+
+#: ../avahi-utils/avahi-resolve.c:159
+#, c-format
msgid ""
-"Copyright (C) 2008 Red Hat, Inc. All rights reserved.\n"
-"This software is distributed under the GPL v.2.\n"
+"%s [options] %s <host name ...>\n"
+"%s [options] %s <address ... >\n"
"\n"
-"This program is provided with NO WARRANTY, to the extent permitted by law."
+" -h --help Show this help\n"
+" -V --version Show version\n"
+" -n --name Resolve host name\n"
+" -a --address Resolve address\n"
+" -v --verbose Enable verbose mode\n"
+" -6 Lookup IPv6 address\n"
+" -4 Lookup IPv4 address\n"
msgstr ""
-"Copyright (C) 2008 Red Hat, Inc. Alle Rechte vorbehalten.\n"
-"Diese Software wird unter der GPL v.2 verteilt.\n"
+"%s [options] %s <host name ...>\n"
+"%s [options] %s <address ... >\n"
"\n"
-"Dieses Programm wird OHNE GEWÄHRLEISTUNG bereitgestellt, im gesetzlich ermöglichten Umfang."
-
-#: ../src/server.c:294
-msgid "The control file is not a socket"
-msgstr "Die Kontrolldatei ist keine Socket"
-
-#: ../src/server.c:309
-#, c-format
-msgid "Unknown server request %<PRIu32>"
-msgstr "Unbekannte Serveranforderung %<PRIu32>"
-
-#: ../src/source_dialog.py:58
-msgid "Audit Log File"
-msgstr "Audit-Protokoll-Datei"
-
-#: ../src/source_dialog.py:129
-#, python-format
-msgid "Error opening %s: %s"
-msgstr "Fehler beim Öffnen von %s: %s"
-
-#: ../src/statistic.py:166
-msgid "Unspecified"
-msgstr "Nicht angegeben"
-
-#: ../src/statistic.py:341
-#, python-format
-msgid "%x %X"
-msgstr "%x %X"
-
-#: ../src/statistic.py:355
-msgid "%x %H:%M"
-msgstr "%x %H:%M"
-
-#: ../src/statistic.py:365
-msgid "%x %H"
-msgstr "%x %H"
-
-#: ../src/statistic.py:389
-msgid "hour"
-msgstr "Stunde"
-
-#: ../src/statistic.py:392
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d Stunde"
-msgstr[1] "%d Stunden"
-
-#: ../src/statistic.py:394
-msgid "minute"
-msgstr "Minute"
-
-#: ../src/statistic.py:397
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d Minute"
-msgstr[1] "%d Minuten"
-
-#: ../src/statistic.py:399
-msgid "second"
-msgstr "Sekunde"
-
-#: ../src/statistic.py:401
-#, python-format
-msgid "%d second"
-msgid_plural "%d seconds"
-msgstr[0] "%d Sekunde"
-msgstr[1] "%d Sekunden"
-
-#: ../src/statistic.py:456
-msgid "day"
-msgstr "Tag"
-
-#: ../src/statistic.py:476
-msgid "week"
-msgstr "Woche"
-
-#: ../src/statistic.py:504
-msgid "%b %Y"
-msgstr "%b %Y"
-
-#: ../src/statistic.py:521
-msgid "month"
-msgstr "Monat"
-
-#: ../src/tab_properties.py:130
-msgid "Specific time"
-msgstr "Angegebene Zeit"
-
-#: ../src/tab_properties.py:132
-msgid "Now"
-msgstr "Jetzt"
-
-#: ../src/tab_properties.py:133
-msgid "10 minutes ago"
-msgstr "Vor 10 Minuten"
-
-#: ../src/tab_properties.py:136
-msgid "Today"
-msgstr "Heute"
-
-#: ../src/tab_properties.py:137
-msgid "Yesterday"
-msgstr "Gestern"
-
-#: ../src/tab_properties.py:138
-msgid "This week"
-msgstr "Diese Woche"
-
-#: ../src/tab_properties.py:139
-msgid "This month"
-msgstr "Diesen Monat"
-
-#: ../src/tab_properties.py:141
-msgid "This year"
-msgstr "Dieses Jahr"
-
-#: ../src/tab_properties.py:184
-#, python-format
-msgid "Unsupported date filter \"%s\""
-msgstr "Nicht unterstützter Datumsfilter \"%s\""
-
-#: ../src/tab_properties.py:248
-msgid "Rule"
-msgstr "Regel"
-
-#: ../src/tab_properties.py:319
-#, python-format
-msgid "Unsupported timestamp operator in \"%s\""
-msgstr "Nicht unterstützter Zeitstempel in \"%s\""
-
-#: ../src/tab_properties.py:382
-msgid "Editing of some filters is not supported"
-msgstr "Bearbeiten von gewissen Filtern ist nicht unterstützt"
-
-#: ../src/tab_properties.py:384
-#, python-format
+" -h --help Zeigt diese Hilfe an\n"
+" -V --version Zeigt die Version an\n"
+" -n --name Löst Hostname auf\n"
+" -a --address Löst Addresse auf\n"
+" -v --verbose Aktiviert detaillierten Modus\n"
+" -6 Schlägt IPv6-Addresse nach\n"
+" -4 Schlägt IPv4-Addresse nach\n"
+
+#: ../avahi-utils/avahi-resolve.c:301
+#: ../avahi-utils/avahi-set-host-name.c:183
+#, c-format
+msgid "Failed to create host name resolver: %s\n"
+msgstr "Fehler beim Erzeugen des Rechneramen-Auflösers: %s\n"
+
+#: ../avahi-utils/avahi-resolve.c:311
+#, c-format
+msgid "Failed to parse address '%s'\n"
+msgstr "Fehler beim Parsern der Adresse '%s'\n"
+
+#: ../avahi-utils/avahi-resolve.c:316
+#, c-format
+msgid "Failed to create address resolver: %s\n"
+msgstr "Fehler beim Erzeugen des Adress-Auflösers: %s\n"
+
+#: ../avahi-utils/avahi-set-host-name.c:75
+#, c-format
msgid ""
-"If you edit properties of this tab, these filters will be dropped from the tab's configuration:\n"
-"%s\n"
-"Do you still want to edit properties of this tab?"
+"%s [options] <new host name>\n"
+"\n"
+" -h --help Show this help\n"
+" -V --version Show version\n"
+" -v --verbose Enable verbose mode\n"
msgstr ""
-"Wenn Sie die Eigenschaften dieses Registers bearbeiten, diese Filter aus der Register-Konfiguration werden verworfen:\n"
-"%s\n"
-"Wollen Sie immer nich die Eigenschaften dieses Registers bearbeiten?"
-
-#: ../src/tab_properties.py:400
-msgid "Tab name must not be empty"
-msgstr "Tab-Name darf nicht leer sein"
-
-#. self._validate_get_failure() doesn't allow empty tab name
-#: ../src/tab_properties.py:425
-#, python-format
-msgid "%s Properties"
-msgstr "%s-Eigenschaften"
-
-#: ../src/util.py:245
-#, python-format
-msgid "Invalid <%s %s> value %s"
-msgstr "Ungültiger <%s %s>-Wert %s"
-
-#: ../src/util.py:250
-#, python-format
-msgid "Unknown <%s %s> value %s"
-msgstr "Wert <%s %s> unbekannt %s"
-
-#: ../src/util.py:257
-#, python-format
-msgid "Attribute %s missing in <%s>"
-msgstr "Fehlendes %s-Attribut in <%s>"
-
-#: ../audit-viewer.desktop.in.h:1
-msgid "Audit Logs"
-msgstr "Audit-Protokolle"
-
-#: ../audit-viewer.desktop.in.h:2
-msgid "View audit logs"
-msgstr "Audit-Protokoll ansehen"
-
-#: ../audit-viewer.xml.in.h:1
-msgid "Audit viewer configuration"
-msgstr "Audit-Ansicht-Konfiguration"
+"%s [options] <new host name>\n"
+"\n"
+" -h --help Zeigt diese Hilfe an\n"
+" -V --version Zeigt die Version an\n"
+" -v --verbose Aktiviert detaillierten Modus\n"
+
+#: ../avahi-utils/avahi-set-host-name.c:116
+#, c-format
+msgid "Invalid number of arguments, expecting exactly one.\n"
+msgstr "Ungültige Anzahl von Argumenten, erwartet wird genau eines.\n"
+#: ../avahi-utils/avahi-set-host-name.c:195
+#, c-format
+msgid "Host name successfully changed to %s\n"
+msgstr "Rechnername erfolgreich geändert auf %s\n"
+
+#~ msgid "."
+#~ msgstr "."
+#~ msgid ":"
+#~ msgstr ":"
+#~ msgid "<b>Event Order</b>"
+#~ msgstr "<b>Ereignis-Reihenfolge</b>"
+#~ msgid "<b>Group Columns _by:</b>"
+#~ msgstr "<b>Gruppiere Spalte _nach:</b>"
+#~ msgid "<b>Group Rows by:</b>"
+#~ msgstr "<b>Gruppiere Zeile nach:</b>"
+#~ msgid "<b>Identification</b>"
+#~ msgstr "<b>Identifikation</b>"
+#~ msgid "<b>Limit to events _before:</b>"
+#~ msgstr "<b>Limit zu Er _before:</b>"
+#~ msgid "<b>Limit to events not _earlier than:</b>"
+#~ msgstr "<b>Limitieren auf Ereignisse nicht _später als:</b>"
+#~ msgid "<b>Records</b>"
+#~ msgstr "<b>Aufzeichnungen</b>"
+#~ msgid "<b>Tab</b>"
+#~ msgstr "<b>Tab</b>"
+#~ msgid "<b>_File</b>"
+#~ msgstr "<b>_Datei</b>"
+#~ msgid "<b>_System audit log</b>"
+#~ msgstr "<b>_System-Audit-Protokoll</b>"
+#~ msgid "Audit Event Source"
+#~ msgstr "Audit-Ewreignis-Quelle"
+#~ msgid "Audit Viewer"
+#~ msgstr "Audit Viewer"
+#~ msgid "Automatic file type e_xtension"
+#~ msgstr "Automatische Dateityp-Er_weiterung"
+#~ msgid "Change _event source..."
+#~ msgstr "Ändere _Ereignis-Quelle..."
+#~ msgid "Columns"
+#~ msgstr "Spalte"
+#~ msgid "Current Co_lumn"
+#~ msgstr "Aktuelle Sp_alte"
+#~ msgid "Current _Cell"
+#~ msgstr "Aktuelle _Zelle"
+#~ msgid "Current _Row"
+#~ msgstr "Aktuelle _Zeile"
+#~ msgid "Date Filter"
+#~ msgstr "Datum-Filter"
+#~ msgid "Event Details"
+#~ msgstr "_Ereignis-Details"
+#~ msgid "Expression"
+#~ msgstr "Ausdruck"
+#~ msgid "F_ield:"
+#~ msgstr "F_eld:"
+#~ msgid "File _type:"
+#~ msgstr "Datei-_Typ:"
+#~ msgid "Filter"
+#~ msgstr "Filter"
+#~ msgid "Filter:"
+#~ msgstr "Filter:"
+#~ msgid "General"
+#~ msgstr "Allgemeines"
+#~ msgid "Group _values by:"
+#~ msgstr "_Werte gruppieren nach:"
+#~ msgid "Grouping"
+#~ msgstr "Gruppierung"
+#~ msgid "LIST/REPORT"
+#~ msgstr "LISTE/BERICHT"
+#~ msgid "New _List"
+#~ msgstr "Neue _Liste"
+#~ msgid "New _Report on this View..."
+#~ msgstr "Neuer _Bericht aus dieser Ansicht..."
+#~ msgid "New _Report..."
+#~ msgstr "Neuer _Bericht..."
+#~ msgid "Order:"
+#~ msgstr "Reihenfolge:"
+#~ msgid "Re_fresh"
+#~ msgstr "Aktu_alisieren"
+#~ msgid "Serial number:"
+#~ msgstr "Seriennummer:"
+#~ msgid "Sort by:"
+#~ msgstr "Sortieren nach:"
+#~ msgid ""
+#~ "The chart has too many data points. Please restrict your data filter or "
+#~ "use coarser data grouping criteria."
+#~ msgstr ""
+#~ "Das Diagramm hat zu viele Datenpunkte. Bitte beschränken Sie Ihren "
+#~ "Datenfilter oder benutzen Sie coarser-Datengruppierungkriterien."
+#~ msgid "Time:"
+#~ msgstr "Zeit:"
+#~ msgid ""
+#~ "You can add aditional conditions using the <tt>ausearch</tt> expression "
+#~ "language. Run <tt>(man ausearch-expression)</tt> to read the "
+#~ "documentation of the language."
+#~ msgstr ""
+#~ "Sie können zusätzliche Bedingungen hinzufügen mit der <tt>ausearch</tt>-"
+#~ "Ausdruckssprache. Führen Sie <tt>(man ausearch-expression)</tt> aus, um "
+#~ "die Dokumentaion dieser Sprache zu lesen."
+#~ msgid "_Ascending"
+#~ msgstr "_Aufsteigend"
+#~ msgid "_Close"
+#~ msgstr "_Schliessen"
+#~ msgid "_Descending"
+#~ msgstr "_Absteigend"
+#~ msgid "_Event Details"
+#~ msgstr "_Ereignis-Details"
+#~ msgid "_Event Time"
+#~ msgstr "_Ereignis-Zeit"
+#~ msgid "_Export..."
+#~ msgstr "_Exportieren..."
+#~ msgid "_Expression:"
+#~ msgstr "_Ausdruck:"
+#~ msgid "_Field:"
+#~ msgstr "_Feld:"
+#~ msgid "_Group values by:"
+#~ msgstr "_Gruppen-Wert nach:"
+#~ msgid "_Help"
+#~ msgstr "_Hilfe"
+#~ msgid "_List Events for"
+#~ msgstr "_Auflisten der Ereignissen nach"
+#~ msgid "_Log file:"
+#~ msgstr "_Protokolldatei:"
+#~ msgid "_Next Event"
+#~ msgstr "_Nächstes Ereignis"
+#~ msgid "_Open in new window"
+#~ msgstr "_In neuem Fenster öffnen"
+#~ msgid "_Path:"
+#~ msgstr "_Pfad:"
+#~ msgid "_Previous Event"
+#~ msgstr "_Vorheriges Ereignis"
+#~ msgid "_Save Configuration as..."
+#~ msgstr "_Speichere Konfiguration als..."
+#~ msgid "_Save layout as..."
+#~ msgstr "_Speichere Anordnung als…"
+#~ msgid "_Show as a chart"
+#~ msgstr "_Zeige als Diagramm"
+#~ msgid "_View"
+#~ msgstr "_Ansicht"
+#~ msgid "_Window"
+#~ msgstr "_Fenster"
+#~ msgid "gtk-about"
+#~ msgstr "gtk-about"
+#~ msgid "gtk-apply"
+#~ msgstr "gtk-apply"
+#~ msgid "gtk-close"
+#~ msgstr "gtk-close"
+#~ msgid "gtk-open"
+#~ msgstr "gtk-open"
+#~ msgid "gtk-properties"
+#~ msgstr "gtk-properties"
+#~ msgid "gtk-quit"
+#~ msgstr "gtk-quit"
+#~ msgid "Not enough data available"
+#~ msgstr "Nicht genügend Daten verfügbar"
+#~ msgid "Field"
+#~ msgstr "Feld"
+#~ msgid "Value"
+#~ msgstr "Wert"
+#~ msgid "Record Type"
+#~ msgstr "Aufzeichnungstyp"
+#~ msgid "date %s %s.%03d"
+#~ msgstr "Datum %s %s.%03d"
+#~ msgid "%x %H:%M:%S"
+#~ msgstr "%x %H:%M:%S"
+#~ msgid "date %s now"
+#~ msgstr "Datum %s heute"
+#~ msgid "date %s %d minute ago"
+#~ msgid_plural "date %s %d minutes ago"
+#~ msgstr[0] "Datum %s %d Minute vergangen"
+#~ msgstr[1] "Datum %s %d Minuten vergangen"
+#~ msgid "date %s today 00:00"
+#~ msgstr "Datum %s Heute 00:00"
+#~ msgid "date %s yesterday 00:00"
+#~ msgstr "Datum %s Gestern 00:00"
+#~ msgid "date %s start of this week"
+#~ msgstr "Datum %s Start dieser Woche"
+#~ msgid "date %s start of this month"
+#~ msgstr "Datum %s Start dieses Monat"
+#~ msgid "date %s start of this year"
+#~ msgstr "Datum %s Start von diesem Jahr"
+#~ msgid "Event date"
+#~ msgstr "Ereignisdatum"
+#~ msgid "Other fields"
+#~ msgstr "Andere Felder"
+#~ msgid "Column"
+#~ msgstr "Spalte"
+#~ msgid "Field name must not be empty"
+#~ msgstr "Feldname darf nicht leer sein"
+#~ msgid "_List"
+#~ msgstr "_Liste"
+#~ msgid "List %d"
+#~ msgstr "Liste %d"
+#~ msgid "HTML"
+#~ msgstr "HTML"
+#~ msgid "CSV"
+#~ msgstr "CSV"
+#~ msgid "Raw log data"
+#~ msgstr "Rohe Log-Daten"
+#~ msgid "Export..."
+#~ msgstr "Export..."
+#~ msgid "Error writing to %s: %s"
+#~ msgstr "Fehler beim Schreiben von %s: %s"
+#~ msgid ", "
+#~ msgstr ", "
+#~ msgid "None"
+#~ msgstr "Nichts"
+#~ msgid "Other Fields"
+#~ msgstr "Andere Felder"
+#~ msgid "Date"
+#~ msgstr "Datum"
+#~ msgid "%prog [OPTION]... [FILE]..."
+#~ msgstr "%prog [OPTION]... [DATEI]..."
+#~ msgid "Start an audit event viewer."
+#~ msgstr "Starte eine Audit-Ereignis-Betrachter"
+#~ msgid ""
+#~ "do not attempt to start the privileged backend for reading system audit "
+#~ "logs"
+#~ msgstr ""
+#~ "versuchen Sie nicht das privilegierte Backend zum Lesen der System-Audit-"
+#~ "Berichte zu starten"
+#~ msgid "Error running audit-viewer-server: %s"
+#~ msgstr "Fehler beim Laufenlassen von audit-viewer-server: %s"
+#~ msgid "Audit viewer layout"
+#~ msgstr "Audit-Ansicht-Anordnung"
+#~ msgid "A file named \"%s\" already exists. Do you want to replace it?"
+#~ msgstr "Die Datei \"%s\" existiert bereits. Wollen Sie sie ersetzen?"
+#~ msgid ""
+#~ "The file already exists in \"%s\". Replacing it will overwrite its "
+#~ "contents."
+#~ msgstr ""
+#~ "Die Datei existiert bereits in \"%s\" . Falls Sie sie ersetzen, wird ihre "
+#~ "Inhalt überschreiben."
+#~ msgid "_Replace"
+#~ msgstr "_Ersetzen"
+#~ msgid "Error reading audit events: %s"
+#~ msgstr "Fehler beim Lesen der Audit-Ereignisse: %s"
+#~ msgid "All files"
+#~ msgstr "Alle Dateien"
+#~ msgid "Unexpected top element contents"
+#~ msgstr "Unerwarteter Top-Elementinhalt"
+#~ msgid "Unsupported file version %s"
+#~ msgstr "Nicht unterstützte Datei-Version %s"
+#~ msgid "Unexpected top element"
+#~ msgstr "Unerwartetes Topelement"
+#~ msgid "Error reading %s: %s"
+#~ msgstr "Fehler beim Lesen %s: %s"
+#~ msgid "Invalid contents of %s: %s"
+#~ msgstr "Ungültiger Inhalt von %s: %s"
+#~ msgid "Open..."
+#~ msgstr "Öffnen..."
+#~ msgid "Save Layout As..."
+#~ msgstr "Sichere Aufbau als..."
+#~ msgid "Save Configuration As..."
+#~ msgstr "Sichere Konfiguration als..."
+#~ msgid "translator-credits"
+#~ msgstr "Fabian Affolter <fab@fedoraproject.org>, 2008."
+#~ msgid "no such option: %s"
+#~ msgstr "Keine solche Option: %s"
+#~ msgid "ambiguous option: %s (%s?)"
+#~ msgstr "Mehrdeutige Option: %s (%s?)"
+#~ msgid "Usage: %s\n"
+#~ msgstr "Verwendung: %s\n"
+#~ msgid "Usage"
+#~ msgstr "Verwendung"
+#~ msgid "integer"
+#~ msgstr "Ganzzahl"
+#~ msgid "long integer"
+#~ msgstr "Lange Ganzzahl"
+#~ msgid "floating-point"
+#~ msgstr "Gleitkomma"
+#~ msgid "complex"
+#~ msgstr "Komplex"
+#~ msgid "option %s: invalid %s value: %r"
+#~ msgstr "Option %s: ungültiger %s Wert: %r"
+#~ msgid "option %s: invalid choice: %r (choose from %s)"
+#~ msgstr "Option %s: ungültige Wahl: %r (Wahl von %s)"
+#~ msgid "show this help message and exit"
+#~ msgstr "Diese Hilfe-Meldung ausgeben und beenden"
+#~ msgid "show program's version number and exit"
+#~ msgstr "Version des Programms anzeigen und beenden"
+#~ msgid "%prog [options]"
+#~ msgstr "%prog [Optionen]"
+#~ msgid "%s option requires an argument"
+#~ msgstr "%s Option benötigt ein Argument"
+#~ msgid "%s option requires %d arguments"
+#~ msgstr "%s Option benötigt %d Argumente"
+#~ msgid "%s option does not take a value"
+#~ msgstr "%s Option benötigt keine Wert"
+#~ msgid "Options"
+#~ msgstr "Optionen"
+#~ msgid "_Report"
+#~ msgstr "_Bericht"
+#~ msgid "Report %d"
+#~ msgstr "Bericht %d"
+#~ msgid "Listing events for this column is not supported."
+#~ msgstr "Auflisten von Ereignissen für diese Spalte ist nicht unterstützt."
+#~ msgid "Listing events for this cell is not supported."
+#~ msgstr "Auflisten von Ereignissen für diese Zelle ist nicht unterstützt."
+#~ msgid "Listing events for this row is not supported."
+#~ msgstr "Auflisten von Ereignissen für diese Zeile ist nicht unterstützt."
+#~ msgid "Count"
+#~ msgstr "Anzahl"
+#~ msgid "Search..."
+#~ msgstr "Suche..."
+#~ msgid ""
+#~ "This program is only for use by audit-viewer and it should not be run "
+#~ "manually.\n"
+#~ msgstr ""
+#~ "Dieses Programm ist nur für die Benutzung durch audit-viewer und es "
+#~ "sollte nicht manuell gestartet werden.\n"
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to %s.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Melden Sie Fehler an %s.\n"
+#~ msgid ""
+#~ "Copyright (C) 2008 Red Hat, Inc. All rights reserved.\n"
+#~ "This software is distributed under the GPL v.2.\n"
+#~ "\n"
+#~ "This program is provided with NO WARRANTY, to the extent permitted by law."
+#~ msgstr ""
+#~ "Copyright (C) 2008 Red Hat, Inc. Alle Rechte vorbehalten.\n"
+#~ "Diese Software wird unter der GPL v.2 verteilt.\n"
+#~ "\n"
+#~ "Dieses Programm wird OHNE GEWÄHRLEISTUNG bereitgestellt, im gesetzlich "
+#~ "ermöglichten Umfang."
+#~ msgid "The control file is not a socket"
+#~ msgstr "Die Kontrolldatei ist keine Socket"
+#~ msgid "Unknown server request %<PRIu32>"
+#~ msgstr "Unbekannte Serveranforderung %<PRIu32>"
+#~ msgid "Audit Log File"
+#~ msgstr "Audit-Protokoll-Datei"
+#~ msgid "Error opening %s: %s"
+#~ msgstr "Fehler beim Öffnen von %s: %s"
+#~ msgid "%x %X"
+#~ msgstr "%x %X"
+#~ msgid "%x %H:%M"
+#~ msgstr "%x %H:%M"
+#~ msgid "%x %H"
+#~ msgstr "%x %H"
+#~ msgid "hour"
+#~ msgstr "Stunde"
+#~ msgid "%d hour"
+#~ msgid_plural "%d hours"
+#~ msgstr[0] "%d Stunde"
+#~ msgstr[1] "%d Stunden"
+#~ msgid "minute"
+#~ msgstr "Minute"
+#~ msgid "%d minute"
+#~ msgid_plural "%d minutes"
+#~ msgstr[0] "%d Minute"
+#~ msgstr[1] "%d Minuten"
+#~ msgid "second"
+#~ msgstr "Sekunde"
+#~ msgid "%d second"
+#~ msgid_plural "%d seconds"
+#~ msgstr[0] "%d Sekunde"
+#~ msgstr[1] "%d Sekunden"
+#~ msgid "day"
+#~ msgstr "Tag"
+#~ msgid "week"
+#~ msgstr "Woche"
+#~ msgid "%b %Y"
+#~ msgstr "%b %Y"
+#~ msgid "month"
+#~ msgstr "Monat"
+#~ msgid "Specific time"
+#~ msgstr "Angegebene Zeit"
+#~ msgid "Now"
+#~ msgstr "Jetzt"
+#~ msgid "10 minutes ago"
+#~ msgstr "Vor 10 Minuten"
+#~ msgid "Today"
+#~ msgstr "Heute"
+#~ msgid "Yesterday"
+#~ msgstr "Gestern"
+#~ msgid "This week"
+#~ msgstr "Diese Woche"
+#~ msgid "This month"
+#~ msgstr "Diesen Monat"
+#~ msgid "This year"
+#~ msgstr "Dieses Jahr"
+#~ msgid "Unsupported date filter \"%s\""
+#~ msgstr "Nicht unterstützter Datumsfilter \"%s\""
+#~ msgid "Rule"
+#~ msgstr "Regel"
+#~ msgid "Unsupported timestamp operator in \"%s\""
+#~ msgstr "Nicht unterstützter Zeitstempel in \"%s\""
+#~ msgid "Editing of some filters is not supported"
+#~ msgstr "Bearbeiten von gewissen Filtern ist nicht unterstützt"
+#~ msgid ""
+#~ "If you edit properties of this tab, these filters will be dropped from "
+#~ "the tab's configuration:\n"
+#~ "%s\n"
+#~ "Do you still want to edit properties of this tab?"
+#~ msgstr ""
+#~ "Wenn Sie die Eigenschaften dieses Registers bearbeiten, diese Filter aus "
+#~ "der Register-Konfiguration werden verworfen:\n"
+#~ "%s\n"
+#~ "Wollen Sie immer nich die Eigenschaften dieses Registers bearbeiten?"
+#~ msgid "Tab name must not be empty"
+#~ msgstr "Tab-Name darf nicht leer sein"
+#~ msgid "%s Properties"
+#~ msgstr "%s-Eigenschaften"
+#~ msgid "Invalid <%s %s> value %s"
+#~ msgstr "Ungültiger <%s %s>-Wert %s"
+#~ msgid "Unknown <%s %s> value %s"
+#~ msgstr "Wert <%s %s> unbekannt %s"
+#~ msgid "Attribute %s missing in <%s>"
+#~ msgstr "Fehlendes %s-Attribut in <%s>"
+#~ msgid "Audit Logs"
+#~ msgstr "Audit-Protokolle"
+#~ msgid "View audit logs"
+#~ msgstr "Audit-Protokoll ansehen"
#~ msgid "Report Properties"
#~ msgstr "Bericht-Eigenschaften"
#~ msgid "_File"
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Spanish translation for avahi
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the avahi package.
#
+# Jorge González <jorgegonz@svn.gnome.org>, 2008.
msgid ""
msgstr ""
"Project-Id-Version: Avahi\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-06-17 04:34+0000\n"
-"PO-Revision-Date: 2008-06-25 10:48-0600\n"
-"Last-Translator: Juan M. Rodriguez <nushio@fedoraproject.org>\n"
-"Language-Team: Spanish Translation Team <fedora-trans-es@redhat.com>\n"
+"POT-Creation-Date: 2008-10-12 04:09+0000\n"
+"PO-Revision-Date: 2008-11-09 16:47+0100\n"
+"Last-Translator: Jorge González <jorgegonz@svn.gnome.org>\n"
+"Language-Team: Español <gnome-es-list@gnome.org>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Spanish\n"
-"X-Poedit-Country: MEXICO\n"
-"X-Poedit-SourceCharset: utf-8\n"
+"X-Launchpad-Export-Date: 2008-10-27 02:52+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
#: ../avahi-common/error.c:32
msgid "OK"
-msgstr "Ok"
+msgstr "Aceptar"
#: ../avahi-common/error.c:33
msgid "Operation failed"
-msgstr "La Operación Falló"
+msgstr "Falló la operación"
#: ../avahi-common/error.c:34
msgid "Bad state"
-msgstr "Mal Estado"
+msgstr "Estado incorrecto"
#: ../avahi-common/error.c:35
-#, fuzzy
msgid "Invalid host name"
-msgstr "Hostname invalido"
+msgstr "Nombre de equipo no válido"
#: ../avahi-common/error.c:36
msgid "Invalid domain name"
-msgstr "Nombre del Dominio Invalido"
+msgstr "Nombre de dominio no válido"
#: ../avahi-common/error.c:37
msgid "No suitable network protocol available"
-msgstr "No hay protocolos de red compatibles disponibles"
+msgstr "No hay disponible ningún protocolo de red apropiado"
#: ../avahi-common/error.c:38
msgid "Invalid DNS TTL"
-msgstr "TTL de DNS invalido"
+msgstr "El TTL del DNS no es válido"
#: ../avahi-common/error.c:39
msgid "Resource record key is pattern"
-msgstr ""
+msgstr "La clave del recurso de registro es un patrón"
#: ../avahi-common/error.c:40
msgid "Local name collision"
-msgstr ""
+msgstr "Colisión de nombre local"
#: ../avahi-common/error.c:41
msgid "Invalid record"
-msgstr ""
+msgstr "Registro no válido"
#: ../avahi-common/error.c:43
msgid "Invalid service name"
-msgstr ""
+msgstr "Nombre de servicio no válido"
#: ../avahi-common/error.c:44
msgid "Invalid service type"
-msgstr ""
+msgstr "Tipo de servicio no válido"
#: ../avahi-common/error.c:45
msgid "Invalid port number"
-msgstr ""
+msgstr "Número de puerto no válido"
#: ../avahi-common/error.c:46
msgid "Invalid record key"
-msgstr ""
+msgstr "Clave de registro no válida"
#: ../avahi-common/error.c:47
msgid "Invalid address"
-msgstr ""
+msgstr "Dirección no válida"
#: ../avahi-common/error.c:48
msgid "Timeout reached"
-msgstr ""
+msgstr "Se ha alcanzado el tiempo de espera establecido"
#: ../avahi-common/error.c:49
msgid "Too many clients"
-msgstr ""
+msgstr "Demasiados clientes"
#: ../avahi-common/error.c:50
msgid "Too many objects"
-msgstr ""
+msgstr "Demasiados objetos"
#: ../avahi-common/error.c:51
msgid "Too many entries"
-msgstr ""
+msgstr "Demasiadas entradas"
#: ../avahi-common/error.c:52
msgid "OS Error"
-msgstr ""
+msgstr "Error de SO"
#: ../avahi-common/error.c:54
msgid "Access denied"
-msgstr ""
+msgstr "Acceso denegado"
#: ../avahi-common/error.c:55
msgid "Invalid operation"
-msgstr ""
+msgstr "Operación no válida"
#: ../avahi-common/error.c:56
msgid "An unexpected D-Bus error occured"
-msgstr ""
+msgstr "Ocurrió un error de D-Bus no esperado"
#: ../avahi-common/error.c:57
msgid "Daemon connection failed"
-msgstr ""
+msgstr "Falló la conexión con el demonio"
#: ../avahi-common/error.c:58
msgid "Memory exhausted"
-msgstr ""
+msgstr "Memoria agotada"
#: ../avahi-common/error.c:59
msgid "The object passed in was not valid"
-msgstr ""
+msgstr "El objeto pasado no era válido"
#: ../avahi-common/error.c:60
msgid "Daemon not running"
-msgstr ""
+msgstr "El demonio no se está ejecutando"
#: ../avahi-common/error.c:61
msgid "Invalid interface index"
-msgstr ""
+msgstr "Índice de interfaz no válido"
#: ../avahi-common/error.c:62
msgid "Invalid protocol specification"
-msgstr ""
+msgstr "Especificación de protocolo no válida"
#: ../avahi-common/error.c:63
msgid "Invalid flags"
-msgstr ""
+msgstr "Opciones no válidas"
#: ../avahi-common/error.c:65
msgid "Not found"
-msgstr ""
+msgstr "No encontrado"
#: ../avahi-common/error.c:66
msgid "Invalid configuration"
-msgstr ""
+msgstr "Configuración no válida"
#: ../avahi-common/error.c:67
msgid "Version mismatch"
-msgstr ""
+msgstr "Incompatibilidad de versiones"
#: ../avahi-common/error.c:68
msgid "Invalid service subtype"
-msgstr ""
+msgstr "Subtipo de servicio no válido"
#: ../avahi-common/error.c:69
msgid "Invalid packet"
-msgstr ""
+msgstr "Paquete no válido"
#: ../avahi-common/error.c:70
msgid "Invalid DNS return code"
-msgstr ""
+msgstr "Código de retorno de DNS no válido"
#: ../avahi-common/error.c:71
msgid "DNS failure: FORMERR"
-msgstr ""
+msgstr "Fallo de DNS: FORMERR"
#: ../avahi-common/error.c:72
msgid "DNS failure: SERVFAIL"
-msgstr ""
+msgstr "Fallo de DNS: SERVFAIL"
#: ../avahi-common/error.c:73
msgid "DNS failure: NXDOMAIN"
-msgstr ""
+msgstr "Fallo de DNS: NXDOMAIN"
#: ../avahi-common/error.c:74
msgid "DNS failure: NOTIMP"
-msgstr ""
+msgstr "Fallo de DNS: NOTIMP"
#: ../avahi-common/error.c:76
msgid "DNS failure: REFUSED"
-msgstr ""
+msgstr "Fallo de DNS: REFUSED"
#: ../avahi-common/error.c:77
msgid "DNS failure: YXDOMAIN"
-msgstr ""
+msgstr "Fallo de DNS: YXDOMAIN"
#: ../avahi-common/error.c:78
msgid "DNS failure: YXRRSET"
-msgstr ""
+msgstr "Fallo de DNS: YXRRSET"
#: ../avahi-common/error.c:79
msgid "DNS failure: NXRRSET"
-msgstr ""
+msgstr "Fallo de DNS: NXRRSET"
#: ../avahi-common/error.c:80
msgid "DNS failure: NOTAUTH"
-msgstr ""
+msgstr "Fallo de DNS: NOTAUTH"
#: ../avahi-common/error.c:81
msgid "DNS failure: NOTZONE"
-msgstr ""
+msgstr "Fallo de DNS: NOTZONE"
#: ../avahi-common/error.c:82
msgid "Invalid RDATA"
-msgstr ""
+msgstr "RDATA no válido"
#: ../avahi-common/error.c:83
msgid "Invalid DNS type"
-msgstr ""
+msgstr "Tipo de DNS no válido"
#: ../avahi-common/error.c:84
msgid "Invalid DNS class"
-msgstr ""
+msgstr "Clase de DNS no válida"
#: ../avahi-common/error.c:85
msgid "Not supported"
-msgstr ""
+msgstr "No soportado"
#: ../avahi-common/error.c:87
msgid "Not permitted"
-msgstr ""
+msgstr "No permitido"
#: ../avahi-common/error.c:88
msgid "Invalid argument"
-msgstr ""
+msgstr "Argumento no válido"
#: ../avahi-common/error.c:89
msgid "Is empty"
-msgstr ""
+msgstr "Está vacío"
#: ../avahi-common/error.c:90
msgid "The requested operation is invalid because redundant"
-msgstr ""
+msgstr "La operación solicitada no es válida porque es redundante"
#: ../avahi-common/error.c:96
msgid "Invalid Error Code"
-msgstr ""
+msgstr "Código de error no válido"
#: ../avahi-ui/avahi-ui.c:326
#, c-format
msgid "Avahi client failure: %s"
-msgstr ""
+msgstr "Fallo del cliente de Avahi: %s"
#: ../avahi-ui/avahi-ui.c:388
#, c-format
msgid "Avahi resolver failure: %s"
-msgstr ""
+msgstr "Fallo del resolutor de Avahi: %s"
#: ../avahi-ui/avahi-ui.c:518
#, c-format
msgid "Browsing for service type %s in domain %s failed: %s"
-msgstr ""
+msgstr "Falló la exploración del tipo de servicio %s en el dominio %s: %s"
-#: ../avahi-ui/avahi-ui.c:519
-#: ../avahi-utils/avahi-browse.c:157
-#: ../avahi-utils/avahi-browse.c:158
-#: ../avahi-utils/avahi-browse.c:164
+#: ../avahi-ui/avahi-ui.c:519 ../avahi-utils/avahi-browse.c:157
+#: ../avahi-utils/avahi-browse.c:158 ../avahi-utils/avahi-browse.c:164
#: ../avahi-utils/avahi-browse.c:165
msgid "n/a"
-msgstr ""
+msgstr "n/d"
#: ../avahi-ui/avahi-ui.c:649
#, c-format
msgid "Avahi domain browser failure: %s"
-msgstr ""
+msgstr "Fallo de exploración de dominios de Avahi: %s"
#: ../avahi-ui/avahi-ui.c:684
#, c-format
msgid "Failed to read Avahi domain: %s"
-msgstr ""
+msgstr "Falló al leer el dominio de Avahi: %s"
#: ../avahi-ui/avahi-ui.c:717
#, c-format
msgid "Failed to connect to Avahi server: %s"
-msgstr ""
+msgstr "Falló al conectar con el servidor de Avahi: %s"
#: ../avahi-ui/avahi-ui.c:735
msgid "Browsing for services on <b>local network</b>:"
-msgstr ""
+msgstr "Examinando los servicios en la <b>red local</b>:"
#: ../avahi-ui/avahi-ui.c:737
#, c-format
msgid "Browsing for services in domain <b>%s</b>:"
-msgstr ""
+msgstr "Examinando los servicios en el dominio <b>%s</b>:"
#: ../avahi-ui/avahi-ui.c:773
#, c-format
msgid "Failed to create browser for %s: %s"
-msgstr ""
+msgstr "Falló al crear el examinador para %s: %s"
#: ../avahi-ui/avahi-ui.c:903
#, c-format
msgid "Failed to create resolver for %s of type %s in domain %s: %s"
-msgstr ""
+msgstr "Falló al crear el resolutor para %s de tipo %s en el dominio %s: %s"
#: ../avahi-ui/avahi-ui.c:978
#, c-format
msgid "Failed to create domain browser: %s"
-msgstr ""
+msgstr "Falló al crear el dominio de exploración: %s"
#: ../avahi-ui/avahi-ui.c:989
msgid "Change domain"
-msgstr ""
+msgstr "Cambiar el dominio"
#: ../avahi-ui/avahi-ui.c:1021
msgid "Service Name"
-msgstr ""
+msgstr "Nombre del servicio"
-#: ../avahi-ui/avahi-ui.c:1029
-#: ../avahi-ui/avahi-ui.c:1160
+#: ../avahi-ui/avahi-ui.c:1029 ../avahi-ui/avahi-ui.c:1160
msgid "Browsing ..."
-msgstr ""
+msgstr "Examinando..."
#: ../avahi-ui/avahi-ui.c:1118
msgid "Initializing..."
-msgstr ""
+msgstr "Inicializando..."
#: ../avahi-ui/avahi-ui.c:1164
msgid "_Domain..."
-msgstr ""
+msgstr "_Dominio..."
#: ../avahi-ui/bssh.c:57
#, c-format
" -S --shell Browse both SSH and VNC\n"
" -d --domain=DOMAIN The domain to browse in\n"
msgstr ""
+"%s [opciones]\n"
+"\n"
+" -h --help Mostrar esta ayuda\n"
+" -s --ssh Examinar servidores SSH\n"
+" -v --vnc Examinar servidores VNC\n"
+" -S --shell Examinar servidores SSH y VNC\n"
+" -d --domain=DOMINIO El dominio que examinar\n"
-#: ../avahi-ui/bssh.c:103
-#: ../avahi-utils/avahi-browse.c:759
+#: ../avahi-ui/bssh.c:103 ../avahi-utils/avahi-browse.c:759
#, c-format
msgid "Too many arguments\n"
-msgstr ""
+msgstr "Demasiados argumentos\n"
#: ../avahi-ui/bssh.c:147
msgid "Choose Shell Server"
-msgstr ""
+msgstr "Elegir el servidor de intérprete de comandos"
#: ../avahi-ui/bssh.c:149
msgid "Desktop"
-msgstr ""
+msgstr "Escritorio"
#: ../avahi-ui/bssh.c:150
msgid "Terminal"
-msgstr ""
+msgstr "Terminal"
#: ../avahi-ui/bssh.c:154
msgid "Choose VNC server"
-msgstr ""
+msgstr "Elegir el servidor VNC"
#: ../avahi-ui/bssh.c:159
msgid "Choose SSH server"
-msgstr ""
+msgstr "Elegir el servidor SSH"
#: ../avahi-ui/bssh.c:183
#, c-format
msgid "Connecting to '%s' ...\n"
-msgstr ""
+msgstr "Conectando con «%s» ...\n"
#: ../avahi-ui/bssh.c:238
#, c-format
msgid "execlp() failed: %s\n"
-msgstr ""
+msgstr "execlp() falló: %s\n"
#: ../avahi-ui/bssh.c:248
+#, c-format
msgid "Canceled.\n"
-msgstr ""
+msgstr "Cancelado.\n"
-#: ../avahi-ui/bssh.desktop.in.h:1
+#: ../avahi-ui/bssh.desktop.in.in.h:1
msgid "Avahi SSH Server Browser"
-msgstr ""
+msgstr "Examinador de servidores SSH de Avahi"
-#: ../avahi-ui/bssh.desktop.in.h:2
+#: ../avahi-ui/bssh.desktop.in.in.h:2
msgid "Browse for Zeroconf-enabled SSH Servers"
-msgstr ""
+msgstr "Examinar servidores SSH con zeroconf activado"
-#: ../avahi-ui/bvnc.desktop.in.h:1
+#: ../avahi-ui/bvnc.desktop.in.in.h:1
msgid "Avahi VNC Server Browser"
-msgstr ""
+msgstr "Examinador de servidores VNC de Avahi"
-#: ../avahi-ui/bvnc.desktop.in.h:2
+#: ../avahi-ui/bvnc.desktop.in.in.h:2
msgid "Browse for Zeroconf-enabled VNC Servers"
-msgstr ""
+msgstr "Examinar servidores VNC con zeroconf activado"
#: ../avahi-utils/avahi-browse.c:108
#, c-format
msgid ": All for now\n"
-msgstr ""
+msgstr ": Todo por ahora\n"
#: ../avahi-utils/avahi-browse.c:119
#, c-format
msgid ": Cache exhausted\n"
-msgstr ""
+msgstr ": Caché agotada\n"
-#: ../avahi-utils/avahi-browse.c:223
-#: ../avahi-utils/avahi-browse.c:245
+#: ../avahi-utils/avahi-browse.c:223 ../avahi-utils/avahi-browse.c:245
#, c-format
msgid "Failed to resolve service '%s' of type '%s' in domain '%s': %s\n"
-msgstr ""
+msgstr "Error al resolver el servicio «%s» de tipo «%s» en el dominio «%s»: %s\n"
#: ../avahi-utils/avahi-browse.c:324
#, c-format
msgid "service_browser failed: %s\n"
-msgstr ""
+msgstr "Falló service_browser: %s\n"
#: ../avahi-utils/avahi-browse.c:362
#, c-format
msgid "avahi_service_browser_new() failed: %s\n"
-msgstr ""
+msgstr "Falló avahi_service_browser_new(): %s\n"
#: ../avahi-utils/avahi-browse.c:398
#, c-format
msgid "service_type_browser failed: %s\n"
-msgstr ""
+msgstr "Falló service_type_browser: %s\n"
#: ../avahi-utils/avahi-browse.c:428
#, c-format
msgid "avahi_service_type_browser_new() failed: %s\n"
-msgstr ""
+msgstr "Falló avahi_service_type_browser_new(): %s\n"
#: ../avahi-utils/avahi-browse.c:503
#, c-format
msgid "avahi_domain_browser_new() failed: %s\n"
-msgstr ""
+msgstr "Falló avahi_domain_browser_new(): %s\n"
-#: ../avahi-utils/avahi-browse.c:519
-#: ../avahi-utils/avahi-publish.c:391
-#: ../avahi-utils/avahi-resolve.c:282
-#: ../avahi-utils/avahi-set-host-name.c:170
+#: ../avahi-utils/avahi-browse.c:519 ../avahi-utils/avahi-publish.c:391
+#: ../avahi-utils/avahi-resolve.c:282 ../avahi-utils/avahi-set-host-name.c:170
#, c-format
msgid "Failed to query version string: %s\n"
-msgstr ""
+msgstr "Error al consultar la cadena de versión: %s\n"
-#: ../avahi-utils/avahi-browse.c:524
-#: ../avahi-utils/avahi-publish.c:396
-#: ../avahi-utils/avahi-resolve.c:287
-#: ../avahi-utils/avahi-set-host-name.c:175
+#: ../avahi-utils/avahi-browse.c:524 ../avahi-utils/avahi-publish.c:396
+#: ../avahi-utils/avahi-resolve.c:287 ../avahi-utils/avahi-set-host-name.c:175
#: ../avahi-utils/avahi-set-host-name.c:191
#, c-format
msgid "Failed to query host name: %s\n"
-msgstr ""
+msgstr "Error al consultar el nombre del equipo: %s\n"
-#: ../avahi-utils/avahi-browse.c:528
-#: ../avahi-utils/avahi-publish.c:400
-#: ../avahi-utils/avahi-resolve.c:291
-#: ../avahi-utils/avahi-set-host-name.c:179
+#: ../avahi-utils/avahi-browse.c:528 ../avahi-utils/avahi-publish.c:400
+#: ../avahi-utils/avahi-resolve.c:291 ../avahi-utils/avahi-set-host-name.c:179
#, c-format
msgid "Server version: %s; Host name: %s\n"
-msgstr ""
+msgstr "Versión del servidor: %s; Nombre del equipo: %s\n"
#. Translators: This is a column heading with abbreviations for
#. * Event (+/-), Network Interface, Protocol (IPv4/v6), Domain
#: ../avahi-utils/avahi-browse.c:533
#, c-format
msgid "E Ifce Prot Domain\n"
-msgstr ""
+msgstr "E Ifaz Prot Dominio\n"
#. Translators: This is a column heading with abbreviations for
#. * Event (+/-), Network Interface, Protocol (IPv4/v6), Domain
#: ../avahi-utils/avahi-browse.c:537
#, c-format
msgid "E Ifce Prot %-*s %-20s Domain\n"
-msgstr ""
+msgstr "E Ifaz Prot %-*s %-20s Dominio\n"
#: ../avahi-utils/avahi-browse.c:537
msgid "Name"
-msgstr ""
+msgstr "Nombre"
#: ../avahi-utils/avahi-browse.c:537
msgid "Type"
-msgstr ""
+msgstr "Tipo"
#. We have been disconnected, so let reconnect
-#: ../avahi-utils/avahi-browse.c:569
-#: ../avahi-utils/avahi-publish.c:165
+#: ../avahi-utils/avahi-browse.c:569 ../avahi-utils/avahi-publish.c:165
#, c-format
msgid "Disconnected, reconnecting ...\n"
-msgstr ""
+msgstr "Desconectado; volviendo a conectar...\n"
-#: ../avahi-utils/avahi-browse.c:583
-#: ../avahi-utils/avahi-browse.c:813
-#: ../avahi-utils/avahi-publish.c:172
-#: ../avahi-utils/avahi-publish.c:383
-#: ../avahi-utils/avahi-resolve.c:274
-#: ../avahi-utils/avahi-set-host-name.c:162
+#: ../avahi-utils/avahi-browse.c:583 ../avahi-utils/avahi-browse.c:813
+#: ../avahi-utils/avahi-publish.c:172 ../avahi-utils/avahi-publish.c:383
+#: ../avahi-utils/avahi-resolve.c:274 ../avahi-utils/avahi-set-host-name.c:162
#, c-format
msgid "Failed to create client object: %s\n"
-msgstr ""
+msgstr "Falló al crear el objeto cliente: %s\n"
-#: ../avahi-utils/avahi-browse.c:588
-#: ../avahi-utils/avahi-publish.c:177
-#: ../avahi-utils/avahi-resolve.c:145
-#: ../avahi-utils/avahi-set-host-name.c:61
+#: ../avahi-utils/avahi-browse.c:588 ../avahi-utils/avahi-publish.c:177
+#: ../avahi-utils/avahi-resolve.c:145 ../avahi-utils/avahi-set-host-name.c:61
#, c-format
msgid "Client failure, exiting: %s\n"
-msgstr ""
+msgstr "Fallo del cliente; saliendo: %s\n"
-#: ../avahi-utils/avahi-browse.c:607
-#: ../avahi-utils/avahi-publish.c:208
+#: ../avahi-utils/avahi-browse.c:607 ../avahi-utils/avahi-publish.c:208
#, c-format
msgid "Waiting for daemon ...\n"
-msgstr "Esperando el daemon ...\n"
+msgstr "Esperando al demonio...\n"
#: ../avahi-utils/avahi-browse.c:631
msgid ""
" -a --all Show all services, regardless of the type\n"
" -d --domain=DOMAIN The domain to browse in\n"
" -v --verbose Enable verbose mode\n"
-" -t --terminate Terminate after dumping a more or less complete list\n"
+" -t --terminate Terminate after dumping a more or less complete "
+"list\n"
" -c --cache Terminate after dumping all entries from the cache\n"
" -l --ignore-local Ignore local services\n"
" -r --resolve Resolve services found\n"
msgstr ""
" -h --help Muestra esta ayuda\n"
" -V --version Muestra la versión\n"
-" -D --browse-domains Explora dominios en lugar de servicios\n"
-" -a --all Muestra todos los servicios sin importar su tipo\n"
-" -d --domain=DOMINIO El dominio el cual explorar\n"
-" -v --verbose Habilita modo detallado\n"
-" -t --terminate Termina despues de guardar la lista completa\n"
-" -c --cache Termina despues de guardar todas las entradas del caché\n"
-" -l --ignore-local Ignora servicios locales\n"
-" -r --resolve Resuelve servicios encontrados\n"
-" -f --no-fail No falla si el demonio no esta disponible\n"
-" -p --parsable Salida en formato interpretable\n"
+" -D --browse-domains Explora dominios de búsqueda en lugar de servicios\n"
+" -a --all Muestra todos los servicios independientemente del "
+"tipo.\n"
+" -d --domain=DOMAIN El dominio que examinar\n"
+" -v --verbose Activa el modo detallado\n"
+" -t --terminate Terminar al volcar una lista más o menos completa\n"
+" -c --cache Terminar después de volcar todas las entradas de la "
+"cache\n"
+" -l --ignore-local Ignorar los servicios locales\n"
+" -r --resolve Resolver servicios encontrados\n"
+" -f --no-fail No fallar si el demonio no está disponible\n"
+" -p --parsable Salida en formato analizable\n"
#: ../avahi-utils/avahi-browse.c:644
msgid ""
" -k --no-db-lookup Don't lookup service types\n"
" -b --dump-db Dump service type database\n"
msgstr ""
-" -k --no-db-lookup No busques tipos de servicio\n"
-" -b --dump-db Guardar base de datos de tipos de servicios\n"
+" -k --no-db-lookup No busca los tipos de servicios\n"
+" -b --dump-db Vuelva la base de datos de tipos de servicios\n"
-#: ../avahi-utils/avahi-browse.c:750
-#: ../avahi-utils/avahi-resolve.c:221
+#: ../avahi-utils/avahi-browse.c:750 ../avahi-utils/avahi-resolve.c:221
#, c-format
msgid "Too few arguments\n"
msgstr "Muy pocos argumentos\n"
-#: ../avahi-utils/avahi-browse.c:805
-#: ../avahi-utils/avahi-publish.c:375
-#: ../avahi-utils/avahi-resolve.c:266
-#: ../avahi-utils/avahi-set-host-name.c:154
-#, fuzzy, c-format
+#: ../avahi-utils/avahi-browse.c:805 ../avahi-utils/avahi-publish.c:375
+#: ../avahi-utils/avahi-resolve.c:266 ../avahi-utils/avahi-set-host-name.c:154
+#, c-format
msgid "Failed to create simple poll object.\n"
-msgstr "Falló al crear un simple objeto encuesta.\n"
+msgstr "Falló al crear un objeto de encuesta simple.\n"
#: ../avahi-utils/avahi-publish.c:78
#, c-format
msgid "Established under name '%s'\n"
-msgstr "Establecido bajo el nombre '%s'\n"
+msgstr "Establecido bajo el nombre «%s»\n"
#: ../avahi-utils/avahi-publish.c:83
#, c-format
#: ../avahi-utils/avahi-publish.c:96
#, c-format
msgid "Name collision, picking new name '%s'.\n"
-msgstr "Colisión de Nombres, escogiendo nuevo nombre '%s'.\n"
+msgstr "Colisión de nombres; se usa el nombre nuevo «%s».\n"
#: ../avahi-utils/avahi-publish.c:116
#, c-format
msgid "Failed to create entry group: %s\n"
-msgstr "Falló en crear grupo de entrada: %s\n"
+msgstr "Falló al crear el grupo de la entrada: %s\n"
#: ../avahi-utils/avahi-publish.c:126
#, c-format
msgid "Failed to add address: %s\n"
-msgstr "Falló al agregar dirección: %s\n"
+msgstr "Falló al añadir la dirección: %s\n"
#: ../avahi-utils/avahi-publish.c:136
#, c-format
msgid "Failed to add service: %s\n"
-msgstr "Falló al agregar servicio: %s\n"
+msgstr "Falló al añadir el servicio: %s\n"
#: ../avahi-utils/avahi-publish.c:142
#, c-format
msgid "Failed to add subtype '%s': %s\n"
-msgstr "Falló al agregar subtipo '%s': %s\n"
+msgstr "Falló al añadir el subtipo «%s»: %s\n"
#: ../avahi-utils/avahi-publish.c:193
#, c-format
msgid "Host name conflict\n"
-msgstr "Conflicto de Hostname\n"
+msgstr "Conflicto de nombres de equipo\n"
#: ../avahi-utils/avahi-publish.c:218
#, c-format
" -v --verbose Enable verbose mode\n"
" -d --domain=DOMAIN Domain to publish service in\n"
" -H --host=DOMAIN Host where service resides\n"
-" --subtype=SUBTYPE An additional subtype to register this service with\n"
+" --subtype=SUBTYPE An additional subtype to register this service "
+"with\n"
" -f --no-fail Don't fail if the daemon is not available\n"
msgstr ""
-"%s [opciones] %s <nombre> <tipo> <puerto> [<texto ...>]\n"
-"%s [opciones] %s <hostname> <dirección>\n"
+"%s [opciones] %s <nombre> <tipo> <puerto> [<txt ...>]\n"
+"%s [opciones] %s <nombre-del-equipo> <dirección>\n"
"\n"
-" -h --help Muestra esta ayuda\n"
-" -V --version Muestra la versión\n"
-" -s --service Publicar Servicio\n"
-" -a --address Publicar Dirección\n"
-" -v --verbose Habilitar modo detallado\n"
-" -d --domain=DOMINIO Dominio al cual se publicará el servicio\n"
-" -H --host=DOMINIO Host donde el servicio se encuentra\n"
-" --subtype=SUBTIPO Un Subtipo adicional con el cual registramos este servicio\n"
-" -f --no-fail No falles si el daemon no esta disponible\n"
-
-#: ../avahi-utils/avahi-publish.c:300
-#: ../avahi-utils/avahi-publish.c:315
+" -h --help Muestra esta ayuda\n"
+" -V --version Muestra la versión\n"
+" -s --service Publica el servicio\n"
+" -a --address Publica la dirección\n"
+" -v --vervose Activa el modo detallado\n"
+" -d --domain=DOMINIO Dominio donde publicar el servicio\n"
+" -H --host=DOMINIO Equipo donde reside el servicio\n"
+" --sbtype=SUBTIPO Un subtipo adicional con el que registrar este "
+"servicio\n"
+" -f --no-fail No fallar en caso que el demonio no esté disponible\n"
+
+#: ../avahi-utils/avahi-publish.c:300 ../avahi-utils/avahi-publish.c:315
#, c-format
msgid "Bad number of arguments\n"
-msgstr "Mal número de argumentos\n"
+msgstr "Número de argumentos incorrecto\n"
#: ../avahi-utils/avahi-publish.c:326
#, c-format
msgid "Failed to parse port number: %s\n"
-msgstr "Falló al interpretar el número de puerto: %s\n"
+msgstr "Falló al analizar el número de puerto: %s\n"
-#: ../avahi-utils/avahi-publish.c:358
-#: ../avahi-utils/avahi-resolve.c:248
+#: ../avahi-utils/avahi-publish.c:358 ../avahi-utils/avahi-resolve.c:248
#, c-format
msgid "No command specified.\n"
-msgstr "No se especificó comando.\n"
+msgstr "No se especificó ningún comando.\n"
#: ../avahi-utils/avahi-resolve.c:91
#, c-format
msgid "Failed to resolve host name '%s': %s\n"
-msgstr "Falló en resolver hostname '%s': '%s\n"
+msgstr "Error al resolver el nombre del equipo «%s»: %s\n"
#: ../avahi-utils/avahi-resolve.c:128
#, c-format
msgid "Failed to resolve address '%s': %s\n"
-msgstr "Falló en resolver dirección '%s': %s\n"
+msgstr "Error al resolver la dirección «%s»: %s\n"
#: ../avahi-utils/avahi-resolve.c:159
#, c-format
" -6 Lookup IPv6 address\n"
" -4 Lookup IPv4 address\n"
msgstr ""
-"%s [opciones] %s <host name ...>\n"
-"%s [opciones] %s <direccion ... >\n"
+"%s [opciones] %s <nombre del anfitrión ...>\n"
+"%s [opciones] %s <dirección ...>\n"
"\n"
-" -h --help Muestra esta ayuda\n"
-" -V --version Muestra versión\n"
-" -n --name Resuelve hostname\n"
-" -a --address Resuelve dirección\n"
-" -v --verbose Habilita modo detallado\n"
-" -6 Buscar dirección IPv6\n"
-" -4 Buscar dirección IPv4\n"
-
-#: ../avahi-utils/avahi-resolve.c:301
-#: ../avahi-utils/avahi-set-host-name.c:183
-#, fuzzy, c-format
+" -h --help Muestra esta ayuda\n"
+" -V --version Muestra la versión\n"
+" -n --name Resuelve el nombre del anfitrión\n"
+" -a --address Resuelve la dirección\n"
+" -v --vervose Activa el modo verboso\n"
+" -6 Busca dirección IPv6\n"
+" -4 Busca dirección IPv4\n"
+
+#: ../avahi-utils/avahi-resolve.c:301 ../avahi-utils/avahi-set-host-name.c:183
+#, c-format
msgid "Failed to create host name resolver: %s\n"
-msgstr "Falló en crear el resolvedor de hostname: %s\n"
+msgstr "Falló al crear el resolutor de nombres de equipo: %s\n"
#: ../avahi-utils/avahi-resolve.c:311
#, c-format
msgid "Failed to parse address '%s'\n"
-msgstr "Falló en interpretar dirección '%s'\n"
+msgstr "Falló al analizar la dirección «%s»\n"
#: ../avahi-utils/avahi-resolve.c:316
-#, fuzzy, c-format
+#, c-format
msgid "Failed to create address resolver: %s\n"
-msgstr "Falló en crear el resolvedor de direcciones: %s\n"
+msgstr "Falló al crear el resolutor de direcciones: %s\n"
#: ../avahi-utils/avahi-set-host-name.c:75
#, c-format
" -V --version Show version\n"
" -v --verbose Enable verbose mode\n"
msgstr ""
-"%s [opciones] <nuevo hostname>\n"
+"%s [opciones] <nuevo nombre de anfitrión>\n"
"\n"
" -h --help Muestra esta ayuda\n"
-" -V --version Muestra Versión\n"
-" -v --verbose Habilita modo detallado\n"
+" -V --version Muestra la versión\n"
+" -v --verbose Habilita el modo detallado\n"
#: ../avahi-utils/avahi-set-host-name.c:116
#, c-format
msgid "Invalid number of arguments, expecting exactly one.\n"
-msgstr "Número de argumentos invalidos, se espera exactamente uno.\n"
+msgstr "Número de argumentos incorrecto; se esperaba exactamente uno.\n"
#: ../avahi-utils/avahi-set-host-name.c:195
-#, fuzzy, c-format
+#, c-format
msgid "Host name successfully changed to %s\n"
-msgstr "El Hostname cambió a %s\n"
-
+msgstr "El nombre del equipo se ha cambiado con éxito a %s\n"
--- /dev/null
+# Avahi Finnish translation.
+# Copyright (C) 2008 Timo Jyrinki
+# This file is distributed under the same license as the avahi package.
+# Timo Jyrinki <timo.jyrinki@iki.fi>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: avahi\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-02 04:10+0000\n"
+"PO-Revision-Date: 2008-09-02 15:00+0300\n"
+"Last-Translator: Timo Jyrinki <timo.jyrinki@iki.fi>\n"
+"Language-Team: Finnish <gnome-fi-laatu@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../avahi-common/error.c:32
+msgid "OK"
+msgstr "OK"
+
+#: ../avahi-common/error.c:33
+msgid "Operation failed"
+msgstr "Toiminto epäonnistui"
+
+#: ../avahi-common/error.c:34
+msgid "Bad state"
+msgstr "Huono tila"
+
+#: ../avahi-common/error.c:35
+msgid "Invalid host name"
+msgstr "Kelvoton verkkonimi"
+
+#: ../avahi-common/error.c:36
+msgid "Invalid domain name"
+msgstr "Kelvoton verkkoalueen nimi"
+
+#: ../avahi-common/error.c:37
+msgid "No suitable network protocol available"
+msgstr "Sopivaa verkkoyhteyskäytäntöä ei ole saatavilla"
+
+#: ../avahi-common/error.c:38
+msgid "Invalid DNS TTL"
+msgstr "Virheellinen DNS TTL"
+
+#: ../avahi-common/error.c:39
+msgid "Resource record key is pattern"
+msgstr "Resurssin tietueavain on lauseke"
+
+#: ../avahi-common/error.c:40
+msgid "Local name collision"
+msgstr "Paikallinen nimien yhteentörmäys"
+
+#: ../avahi-common/error.c:41
+msgid "Invalid record"
+msgstr "Virheellinen tietue"
+
+#: ../avahi-common/error.c:43
+msgid "Invalid service name"
+msgstr "Virheellinen palvelun nimi"
+
+#: ../avahi-common/error.c:44
+msgid "Invalid service type"
+msgstr "Virheellinen palvelun tyyppi"
+
+#: ../avahi-common/error.c:45
+msgid "Invalid port number"
+msgstr "Virheellinen porttinumero"
+
+#: ../avahi-common/error.c:46
+msgid "Invalid record key"
+msgstr "Virheellinen tietueavain"
+
+#: ../avahi-common/error.c:47
+msgid "Invalid address"
+msgstr "Virheellinen osoite"
+
+#: ../avahi-common/error.c:48
+msgid "Timeout reached"
+msgstr "Tapahtui aikakatkaisu"
+
+#: ../avahi-common/error.c:49
+msgid "Too many clients"
+msgstr "Liian monta asiakasta"
+
+#: ../avahi-common/error.c:50
+msgid "Too many objects"
+msgstr "Liian monta objektia"
+
+#: ../avahi-common/error.c:51
+msgid "Too many entries"
+msgstr "Liian monta kohdetta"
+
+#: ../avahi-common/error.c:52
+msgid "OS Error"
+msgstr "OS-virhe"
+
+#: ../avahi-common/error.c:54
+msgid "Access denied"
+msgstr "Pääsy evätty"
+
+#: ../avahi-common/error.c:55
+msgid "Invalid operation"
+msgstr "Virheellinen toiminto"
+
+#: ../avahi-common/error.c:56
+msgid "An unexpected D-Bus error occured"
+msgstr "Tapahtui odottamaton D-Bus-virhe"
+
+#: ../avahi-common/error.c:57
+msgid "Daemon connection failed"
+msgstr "Taustaprosessiyhteys epäonnistui"
+
+#: ../avahi-common/error.c:58
+msgid "Memory exhausted"
+msgstr "Muisti loppui"
+
+#: ../avahi-common/error.c:59
+msgid "The object passed in was not valid"
+msgstr "Annettu objekti ei ollut kelvollinen"
+
+#: ../avahi-common/error.c:60
+msgid "Daemon not running"
+msgstr "Taustaprosessi ei käynnissä"
+
+#: ../avahi-common/error.c:61
+msgid "Invalid interface index"
+msgstr "Virheellinen liitännän järjestysnumero"
+
+#: ../avahi-common/error.c:62
+msgid "Invalid protocol specification"
+msgstr "Virheellinen yhteyskäytännön määrittely"
+
+#: ../avahi-common/error.c:63
+msgid "Invalid flags"
+msgstr "Virheelliset liput"
+
+#: ../avahi-common/error.c:65
+msgid "Not found"
+msgstr "Ei löytynyt"
+
+#: ../avahi-common/error.c:66
+msgid "Invalid configuration"
+msgstr "Virheelliset asetukset"
+
+#: ../avahi-common/error.c:67
+msgid "Version mismatch"
+msgstr "Versioristiriita"
+
+#: ../avahi-common/error.c:68
+msgid "Invalid service subtype"
+msgstr "Virheellinen palvelun alatyyppi"
+
+#: ../avahi-common/error.c:69
+msgid "Invalid packet"
+msgstr "Virheellinen paketti"
+
+#: ../avahi-common/error.c:70
+msgid "Invalid DNS return code"
+msgstr "Virheellinen DNS-palautuskoodi"
+
+#: ../avahi-common/error.c:71
+msgid "DNS failure: FORMERR"
+msgstr "DNS-toimintahäiriö: FORMERR"
+
+#: ../avahi-common/error.c:72
+msgid "DNS failure: SERVFAIL"
+msgstr "DNS-toimintahäiriö: SERVFAIL"
+
+#: ../avahi-common/error.c:73
+msgid "DNS failure: NXDOMAIN"
+msgstr "DNS-toimintahäiriö: NXDOMAIN"
+
+#: ../avahi-common/error.c:74
+msgid "DNS failure: NOTIMP"
+msgstr "DNS-toimintahäiriö: NOTIMP"
+
+#: ../avahi-common/error.c:76
+msgid "DNS failure: REFUSED"
+msgstr "DNS-toimintahäiriö: REFUSED"
+
+#: ../avahi-common/error.c:77
+msgid "DNS failure: YXDOMAIN"
+msgstr "DNS-toimintahäiriö: YXDOMAIN"
+
+#: ../avahi-common/error.c:78
+msgid "DNS failure: YXRRSET"
+msgstr "DNS-toimintahäiriö: YXRRSET"
+
+#: ../avahi-common/error.c:79
+msgid "DNS failure: NXRRSET"
+msgstr "DNS-toimintahäiriö: NXRRSET"
+
+#: ../avahi-common/error.c:80
+msgid "DNS failure: NOTAUTH"
+msgstr "DNS-toimintahäiriö: NOTAUTH"
+
+#: ../avahi-common/error.c:81
+msgid "DNS failure: NOTZONE"
+msgstr "DNS-toimintahäiriö: NOTZONE"
+
+#: ../avahi-common/error.c:82
+msgid "Invalid RDATA"
+msgstr "Virheellinen RDATA"
+
+#: ../avahi-common/error.c:83
+msgid "Invalid DNS type"
+msgstr "Virheellinen DNS-tyyppi"
+
+#: ../avahi-common/error.c:84
+msgid "Invalid DNS class"
+msgstr "Virheellinen DNS-luokka"
+
+#: ../avahi-common/error.c:85
+msgid "Not supported"
+msgstr "Ei tuettu"
+
+#: ../avahi-common/error.c:87
+msgid "Not permitted"
+msgstr "Ei sallittu"
+
+#: ../avahi-common/error.c:88
+msgid "Invalid argument"
+msgstr "Virheellinen argumentti"
+
+#: ../avahi-common/error.c:89
+msgid "Is empty"
+msgstr "On tyhjä"
+
+#: ../avahi-common/error.c:90
+msgid "The requested operation is invalid because redundant"
+msgstr "Pyydetty toiminto on tarpeettomuudesta johtuen virheellinen"
+
+#: ../avahi-common/error.c:96
+msgid "Invalid Error Code"
+msgstr "Kelvoton virhekoodi"
+
+#: ../avahi-ui/avahi-ui.c:326
+#, c-format
+msgid "Avahi client failure: %s"
+msgstr "Avahi-asiakkaan toimintahäiriö: %s"
+
+#: ../avahi-ui/avahi-ui.c:388
+#, c-format
+msgid "Avahi resolver failure: %s"
+msgstr "Avahi-selvittimen toimintahäiriö: %s"
+
+#: ../avahi-ui/avahi-ui.c:518
+#, c-format
+msgid "Browsing for service type %s in domain %s failed: %s"
+msgstr "Palvelutyypin %s selaaminen verkkoaluuessa %s epäonnistui: %s"
+
+#: ../avahi-ui/avahi-ui.c:519 ../avahi-utils/avahi-browse.c:157
+#: ../avahi-utils/avahi-browse.c:158 ../avahi-utils/avahi-browse.c:164
+#: ../avahi-utils/avahi-browse.c:165
+msgid "n/a"
+msgstr "-"
+
+#: ../avahi-ui/avahi-ui.c:649
+#, c-format
+msgid "Avahi domain browser failure: %s"
+msgstr "Avahi-verkkoalueselaimen toimintahäiriö: %s"
+
+#: ../avahi-ui/avahi-ui.c:684
+#, c-format
+msgid "Failed to read Avahi domain: %s"
+msgstr "Avahi-verkkoaluetta ei voi lukea: %s"
+
+#: ../avahi-ui/avahi-ui.c:717
+#, c-format
+msgid "Failed to connect to Avahi server: %s"
+msgstr "Avahi-palvelimeen ei voi yhdistää: %s"
+
+#: ../avahi-ui/avahi-ui.c:735
+msgid "Browsing for services on <b>local network</b>:"
+msgstr "Selataan palveluita <b>paikallisessa verkossa</b>:"
+
+#: ../avahi-ui/avahi-ui.c:737
+#, c-format
+msgid "Browsing for services in domain <b>%s</b>:"
+msgstr "Selataan palveluita verkkoalueessa <b>%s</b>:"
+
+#: ../avahi-ui/avahi-ui.c:773
+#, c-format
+msgid "Failed to create browser for %s: %s"
+msgstr "Selainta ei voi luoda kohteelle %s: %s"
+
+#: ../avahi-ui/avahi-ui.c:903
+#, c-format
+msgid "Failed to create resolver for %s of type %s in domain %s: %s"
+msgstr "Kohteelle %s ei voi luoda selvitintyyppiä %s verkkoalueessa %s: %s"
+
+#: ../avahi-ui/avahi-ui.c:978
+#, c-format
+msgid "Failed to create domain browser: %s"
+msgstr "Verkkoalueselainta ei voi luoda: %s"
+
+#: ../avahi-ui/avahi-ui.c:989
+msgid "Change domain"
+msgstr "Vaihda verkkoaluetta"
+
+#: ../avahi-ui/avahi-ui.c:1021
+msgid "Service Name"
+msgstr "Palvelun nimi"
+
+#: ../avahi-ui/avahi-ui.c:1029 ../avahi-ui/avahi-ui.c:1160
+msgid "Browsing ..."
+msgstr "Selataan..."
+
+#: ../avahi-ui/avahi-ui.c:1118
+msgid "Initializing..."
+msgstr "Alustetaan..."
+
+#: ../avahi-ui/avahi-ui.c:1164
+msgid "_Domain..."
+msgstr "_Verkkoalue..."
+
+#: ../avahi-ui/bssh.c:57
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+" -h --help Show this help\n"
+" -s --ssh Browse SSH servers\n"
+" -v --vnc Browse VNC servers\n"
+" -S --shell Browse both SSH and VNC\n"
+" -d --domain=DOMAIN The domain to browse in\n"
+msgstr ""
+"%s [valitsimet]\n"
+"\n"
+" -h --help Näytä tämä ohje\n"
+" -s --ssh Selaa SSH-palvelimia\n"
+" -v --vnc Selaa VNC-palvelimia\n"
+" -S --shell Selaa sekä SSH- että VNC-palvelimia\n"
+" -d --domain=DOMAIN Selattava verkkoalue\n"
+
+#: ../avahi-ui/bssh.c:103 ../avahi-utils/avahi-browse.c:759
+#, c-format
+msgid "Too many arguments\n"
+msgstr "Liian monta argumenttia\n"
+
+#: ../avahi-ui/bssh.c:147
+msgid "Choose Shell Server"
+msgstr "Valitse päätepalvelin"
+
+#: ../avahi-ui/bssh.c:149
+msgid "Desktop"
+msgstr "Työpöytä"
+
+#: ../avahi-ui/bssh.c:150
+msgid "Terminal"
+msgstr "Pääte"
+
+#: ../avahi-ui/bssh.c:154
+msgid "Choose VNC server"
+msgstr "Valitse VNC-palvelin"
+
+#: ../avahi-ui/bssh.c:159
+msgid "Choose SSH server"
+msgstr "Valitse SSH-palvelin"
+
+#: ../avahi-ui/bssh.c:183
+#, c-format
+msgid "Connecting to '%s' ...\n"
+msgstr "Yhdistetään kohteeseen \"%s\"...\n"
+
+#: ../avahi-ui/bssh.c:238
+#, c-format
+msgid "execlp() failed: %s\n"
+msgstr "execlp() epäonnistui: %s\n"
+
+#: ../avahi-ui/bssh.c:248
+#, c-format
+msgid "Canceled.\n"
+msgstr "Peruttu.\n"
+
+#: ../avahi-ui/bssh.desktop.in.in.h:1
+msgid "Avahi SSH Server Browser"
+msgstr "Avahin SSH-palvelinselain"
+
+#: ../avahi-ui/bssh.desktop.in.in.h:2
+msgid "Browse for Zeroconf-enabled SSH Servers"
+msgstr "Selaa Zeroconf-varustettuja SSH-palvelimia"
+
+#: ../avahi-ui/bvnc.desktop.in.in.h:1
+msgid "Avahi VNC Server Browser"
+msgstr "Avahin VNC-palvelinselain"
+
+#: ../avahi-ui/bvnc.desktop.in.in.h:2
+msgid "Browse for Zeroconf-enabled VNC Servers"
+msgstr "Selaa Zeroconf-varustettuja VNC-palvelimia"
+
+#: ../avahi-utils/avahi-browse.c:108
+#, c-format
+msgid ": All for now\n"
+msgstr ": Kaikki toistaiseksi\n"
+
+#: ../avahi-utils/avahi-browse.c:119
+#, c-format
+msgid ": Cache exhausted\n"
+msgstr ": Välimuisti kulutettu loppuun\n"
+
+#: ../avahi-utils/avahi-browse.c:223 ../avahi-utils/avahi-browse.c:245
+#, c-format
+msgid "Failed to resolve service '%s' of type '%s' in domain '%s': %s\n"
+msgstr ""
+"Palvelua \"%s\", tyypiltään \"%s\", ei voi selvittää verkkoalueessa "
+"\"%s\": %s\n"
+
+#: ../avahi-utils/avahi-browse.c:324
+#, c-format
+msgid "service_browser failed: %s\n"
+msgstr "service_browser epäonnistui: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:362
+#, c-format
+msgid "avahi_service_browser_new() failed: %s\n"
+msgstr "avahi_service_browser_new() epäonnistui: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:398
+#, c-format
+msgid "service_type_browser failed: %s\n"
+msgstr "service_type_browser epäonnistui: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:428
+#, c-format
+msgid "avahi_service_type_browser_new() failed: %s\n"
+msgstr "avahi_service_type_browser_new() epäonnistui: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:503
+#, c-format
+msgid "avahi_domain_browser_new() failed: %s\n"
+msgstr "avahi_domain_browser_new() epäonnistui: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:519 ../avahi-utils/avahi-publish.c:391
+#: ../avahi-utils/avahi-resolve.c:282 ../avahi-utils/avahi-set-host-name.c:170
+#, c-format
+msgid "Failed to query version string: %s\n"
+msgstr "Versiomerkkijonon pyyntö epäonnistui: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:524 ../avahi-utils/avahi-publish.c:396
+#: ../avahi-utils/avahi-resolve.c:287 ../avahi-utils/avahi-set-host-name.c:175
+#: ../avahi-utils/avahi-set-host-name.c:191
+#, c-format
+msgid "Failed to query host name: %s\n"
+msgstr "Verkko-osoitteen pyyntö epäonnistui: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:528 ../avahi-utils/avahi-publish.c:400
+#: ../avahi-utils/avahi-resolve.c:291 ../avahi-utils/avahi-set-host-name.c:179
+#, c-format
+msgid "Server version: %s; Host name: %s\n"
+msgstr "Palvelimen versio: %s, palvelinnimi: %s\n"
+
+#. Translators: This is a column heading with abbreviations for
+#. * Event (+/-), Network Interface, Protocol (IPv4/v6), Domain
+#: ../avahi-utils/avahi-browse.c:533
+#, c-format
+msgid "E Ifce Prot Domain\n"
+msgstr "T Liit Yhtk Verkkonimi\n"
+
+#. Translators: This is a column heading with abbreviations for
+#. * Event (+/-), Network Interface, Protocol (IPv4/v6), Domain
+#: ../avahi-utils/avahi-browse.c:537
+#, c-format
+msgid "E Ifce Prot %-*s %-20s Domain\n"
+msgstr "T Liit Yhtk %-*s %-20s Verkkonimi\n"
+
+#: ../avahi-utils/avahi-browse.c:537
+msgid "Name"
+msgstr "Nimi"
+
+#: ../avahi-utils/avahi-browse.c:537
+msgid "Type"
+msgstr "Tyyppi"
+
+#. We have been disconnected, so let reconnect
+#: ../avahi-utils/avahi-browse.c:569 ../avahi-utils/avahi-publish.c:165
+#, c-format
+msgid "Disconnected, reconnecting ...\n"
+msgstr "Yhteys katkaistiin, yhdistetään uudelleen...\n"
+
+#: ../avahi-utils/avahi-browse.c:583 ../avahi-utils/avahi-browse.c:813
+#: ../avahi-utils/avahi-publish.c:172 ../avahi-utils/avahi-publish.c:383
+#: ../avahi-utils/avahi-resolve.c:274 ../avahi-utils/avahi-set-host-name.c:162
+#, c-format
+msgid "Failed to create client object: %s\n"
+msgstr "Asiakasobjektia ei voi luoda: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:588 ../avahi-utils/avahi-publish.c:177
+#: ../avahi-utils/avahi-resolve.c:145 ../avahi-utils/avahi-set-host-name.c:61
+#, c-format
+msgid "Client failure, exiting: %s\n"
+msgstr "Asiakkaan toimintahäiriö, poistutaan: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:607 ../avahi-utils/avahi-publish.c:208
+#, c-format
+msgid "Waiting for daemon ...\n"
+msgstr "Odotetaan taustaprosessia...\n"
+
+#: ../avahi-utils/avahi-browse.c:631
+msgid ""
+" -h --help Show this help\n"
+" -V --version Show version\n"
+" -D --browse-domains Browse for browsing domains instead of services\n"
+" -a --all Show all services, regardless of the type\n"
+" -d --domain=DOMAIN The domain to browse in\n"
+" -v --verbose Enable verbose mode\n"
+" -t --terminate Terminate after dumping a more or less complete "
+"list\n"
+" -c --cache Terminate after dumping all entries from the cache\n"
+" -l --ignore-local Ignore local services\n"
+" -r --resolve Resolve services found\n"
+" -f --no-fail Don't fail if the daemon is not available\n"
+" -p --parsable Output in parsable format\n"
+msgstr ""
+" -h --help Näytä tämä ohje\n"
+" -V --version Näytä versio\n"
+" -D --browse-domains Selaa selaavia verkkoalueita palveluiden sijaan\n"
+" -a --all Näytä kaikki palvelut tyypistä riippumatta\n"
+" -d --domain=DOMAIN Selattava verkkoalue\n"
+" -v --verbose Ota käyttöön suulaampi tila\n"
+" -t --terminate Poistu enemmän tai vähemmän täydellisen luettelon "
+"tulostuksen jälkeen\n"
+" -c --cache Poistu kun kaikki kohteet tulostettu välimuistista\n"
+" -l --ignore-local Jätä paikalliset palvelut huomiotta\n"
+" -r --resolve Selvitä löydetyt palvelut\n"
+" -f --no-fail Älä epäonnistu jos taustaprosessia ei saatavilla\n"
+" -p --parsable Tulosta jäsennettävissä olevassa muodossa\n"
+
+#: ../avahi-utils/avahi-browse.c:644
+msgid ""
+" -k --no-db-lookup Don't lookup service types\n"
+" -b --dump-db Dump service type database\n"
+msgstr ""
+" -k --no-db-lookup Älä etsi palvelutyyppejä\n"
+" -b --dump-db Tulosta palvelutyyppien tietokanta\n"
+
+#: ../avahi-utils/avahi-browse.c:750 ../avahi-utils/avahi-resolve.c:221
+#, c-format
+msgid "Too few arguments\n"
+msgstr "Liian vähän argumentteja\n"
+
+#: ../avahi-utils/avahi-browse.c:805 ../avahi-utils/avahi-publish.c:375
+#: ../avahi-utils/avahi-resolve.c:266 ../avahi-utils/avahi-set-host-name.c:154
+#, c-format
+msgid "Failed to create simple poll object.\n"
+msgstr "Yksinkertaisen kyselyobjektin luonti epäonnistui.\n"
+
+#: ../avahi-utils/avahi-publish.c:78
+#, c-format
+msgid "Established under name '%s'\n"
+msgstr "Muodostettiin nimellä \"%s\"\n"
+
+#: ../avahi-utils/avahi-publish.c:83
+#, c-format
+msgid "Failed to register: %s\n"
+msgstr "Rekisteröiminen epäonnistui: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:96
+#, c-format
+msgid "Name collision, picking new name '%s'.\n"
+msgstr "Nimien yhteentörmäys, valitaan uusi nimi \"%s\".\n"
+
+#: ../avahi-utils/avahi-publish.c:116
+#, c-format
+msgid "Failed to create entry group: %s\n"
+msgstr "Kohderyhmän luominen epäonnistui: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:126
+#, c-format
+msgid "Failed to add address: %s\n"
+msgstr "Osoitteen lisääminen epäonnistui: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:136
+#, c-format
+msgid "Failed to add service: %s\n"
+msgstr "Palvelun lisääminen epäonnistui: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:142
+#, c-format
+msgid "Failed to add subtype '%s': %s\n"
+msgstr "Alatyypin \"%s\" lisääminen epäonnistui: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:193
+#, c-format
+msgid "Host name conflict\n"
+msgstr "Palvelinnimen ristiriita\n"
+
+#: ../avahi-utils/avahi-publish.c:218
+#, c-format
+msgid ""
+"%s [options] %s <name> <type> <port> [<txt ...>]\n"
+"%s [options] %s <host-name> <address>\n"
+"\n"
+" -h --help Show this help\n"
+" -V --version Show version\n"
+" -s --service Publish service\n"
+" -a --address Publish address\n"
+" -v --verbose Enable verbose mode\n"
+" -d --domain=DOMAIN Domain to publish service in\n"
+" -H --host=DOMAIN Host where service resides\n"
+" --subtype=SUBTYPE An additional subtype to register this service "
+"with\n"
+" -f --no-fail Don't fail if the daemon is not available\n"
+msgstr ""
+"%s [valitsimet] %s <nimi> <tyyppi> <portti> [<teksti ...>]\n"
+"%s [valitsimet] %s <verkkonimi> <osoite>\n"
+"\n"
+" -h --help Näytä ohje\n"
+" -V --version Näytä versio\n"
+" -s --service Julkista palvelu\n"
+" -a --address Julkista osoite\n"
+" -v --verbose Ota suulaampi tila käyttöön\n"
+" -d --domain=DOMAIN Verkkoalue jossa palvelu julkaistaan\n"
+" -H --host=DOMAIN Palvelin jolla palvelu sijaitsee\n"
+" --subtype=SUBTYPE Lisäalatyyppi, jolle tämä palvelu rekisteröidään\n"
+" -f --no-fail Älä epäonnistui jos taustaprosessia ei saatavilla\n"
+
+#: ../avahi-utils/avahi-publish.c:300 ../avahi-utils/avahi-publish.c:315
+#, c-format
+msgid "Bad number of arguments\n"
+msgstr "Virheellinen argumenttien lukumäärä\n"
+
+#: ../avahi-utils/avahi-publish.c:326
+#, c-format
+msgid "Failed to parse port number: %s\n"
+msgstr "Porttinumeron jäsentäminen epäonnistui: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:358 ../avahi-utils/avahi-resolve.c:248
+#, c-format
+msgid "No command specified.\n"
+msgstr "Komentoa ei määritelty.\n"
+
+#: ../avahi-utils/avahi-resolve.c:91
+#, c-format
+msgid "Failed to resolve host name '%s': %s\n"
+msgstr "Verkko-osoitteen \"%s\" selvittäminen epäonnistui: %s\n"
+
+#: ../avahi-utils/avahi-resolve.c:128
+#, c-format
+msgid "Failed to resolve address '%s': %s\n"
+msgstr "Osoitteen \"%s\" selvittäminen epäonnistui: %s\n"
+
+#: ../avahi-utils/avahi-resolve.c:159
+#, c-format
+msgid ""
+"%s [options] %s <host name ...>\n"
+"%s [options] %s <address ... >\n"
+"\n"
+" -h --help Show this help\n"
+" -V --version Show version\n"
+" -n --name Resolve host name\n"
+" -a --address Resolve address\n"
+" -v --verbose Enable verbose mode\n"
+" -6 Lookup IPv6 address\n"
+" -4 Lookup IPv4 address\n"
+msgstr ""
+"%s [valitsimet] %s <verkkonimi ...>\n"
+"%s [valitsimet] %s <osoite ... >\n"
+"\n"
+" -h --help Näytä ohje\n"
+" -V --version Näytä versio\n"
+" -n --name Selvitä verkkonimi\n"
+" -a --address Selvitä osoite\n"
+" -v --verbose Ota suulaampi tila käyttöön\n"
+" -6 Etsi IPv6-osoite\n"
+" -4 Etsi IPv4-osoite\n"
+
+#: ../avahi-utils/avahi-resolve.c:301 ../avahi-utils/avahi-set-host-name.c:183
+#, c-format
+msgid "Failed to create host name resolver: %s\n"
+msgstr "Verkko-osoitteen selvittimen luonti epäonnistui: %s\n"
+
+#: ../avahi-utils/avahi-resolve.c:311
+#, c-format
+msgid "Failed to parse address '%s'\n"
+msgstr "Osoitetta \"%s\" ei voi jäsentää\n"
+
+#: ../avahi-utils/avahi-resolve.c:316
+#, c-format
+msgid "Failed to create address resolver: %s\n"
+msgstr "Osoitteen selvittimen luonti epäonnistui: %s\n"
+
+#: ../avahi-utils/avahi-set-host-name.c:75
+#, c-format
+msgid ""
+"%s [options] <new host name>\n"
+"\n"
+" -h --help Show this help\n"
+" -V --version Show version\n"
+" -v --verbose Enable verbose mode\n"
+msgstr ""
+"%s [valitsimet] <uusi verkkonimi>\n"
+"\n"
+" -h --help Näytä tämä ohje\n"
+" -V --version Näytä versio\n"
+" -v --verbose Ota suulaampi tila käyttöön\n"
+
+#: ../avahi-utils/avahi-set-host-name.c:116
+#, c-format
+msgid "Invalid number of arguments, expecting exactly one.\n"
+msgstr "Virheellinen argumenttien lukumäärä, odotettiin täsmälleen yhtä.\n"
+
+#: ../avahi-utils/avahi-set-host-name.c:195
+#, c-format
+msgid "Host name successfully changed to %s\n"
+msgstr "Verkko-osoite muutettiin onnistuneesti nimelle %s\n"
+
--- /dev/null
+# Hungarian translation of avahi
+# Copyright (C) 2008, Free Software Foundation, Inc.
+# This file is distributed under the same license as the avahi package.
+#
+# Gabor Kelemen <kelemeng@gnome.hu>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-08-29 01:22+0200\n"
+"PO-Revision-Date: 2008-08-30 04:14+0200\n"
+"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
+"Language-Team: Hungarian <gnome@fsf.hu>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../avahi-common/error.c:32
+msgid "OK"
+msgstr "OK"
+
+#: ../avahi-common/error.c:33
+msgid "Operation failed"
+msgstr "A művelet meghiúsult"
+
+#: ../avahi-common/error.c:34
+msgid "Bad state"
+msgstr "Hibás állapot"
+
+#: ../avahi-common/error.c:35
+msgid "Invalid host name"
+msgstr "Érvénytelen gépnév"
+
+#: ../avahi-common/error.c:36
+msgid "Invalid domain name"
+msgstr "Érvénytelen tartománynév"
+
+#: ../avahi-common/error.c:37
+msgid "No suitable network protocol available"
+msgstr "Nem áll rendelkezésre megfelelő hálózati protokoll"
+
+#: ../avahi-common/error.c:38
+msgid "Invalid DNS TTL"
+msgstr "Érvénytelen DNS TTL"
+
+#: ../avahi-common/error.c:39
+msgid "Resource record key is pattern"
+msgstr "Az erőforrásrekord kulcsa minta"
+
+#: ../avahi-common/error.c:40
+msgid "Local name collision"
+msgstr "Helyi névütközés"
+
+#: ../avahi-common/error.c:41
+msgid "Invalid record"
+msgstr "Érvénytelen rekord"
+
+#: ../avahi-common/error.c:43
+msgid "Invalid service name"
+msgstr "Érvénytelen szolgáltatásnév"
+
+#: ../avahi-common/error.c:44
+msgid "Invalid service type"
+msgstr "Érvénytelen szolgáltatástípus"
+
+#: ../avahi-common/error.c:45
+msgid "Invalid port number"
+msgstr "Érvénytelen portszám"
+
+#: ../avahi-common/error.c:46
+msgid "Invalid record key"
+msgstr "Érvénytelen rekordkulcs"
+
+#: ../avahi-common/error.c:47
+msgid "Invalid address"
+msgstr "Érvénytelen cím"
+
+#: ../avahi-common/error.c:48
+msgid "Timeout reached"
+msgstr "Időtúllépés"
+
+#: ../avahi-common/error.c:49
+msgid "Too many clients"
+msgstr "Túl sok kliens"
+
+#: ../avahi-common/error.c:50
+msgid "Too many objects"
+msgstr "Túl sok objektum"
+
+#: ../avahi-common/error.c:51
+msgid "Too many entries"
+msgstr "Túl sok bejegyzés"
+
+#: ../avahi-common/error.c:52
+msgid "OS Error"
+msgstr "OS hiba"
+
+#: ../avahi-common/error.c:54
+msgid "Access denied"
+msgstr "Hozzáférés megtagadva"
+
+#: ../avahi-common/error.c:55
+msgid "Invalid operation"
+msgstr "Érvénytelen művelet"
+
+#: ../avahi-common/error.c:56
+msgid "An unexpected D-Bus error occured"
+msgstr "Váratlan D-Bus hiba történt"
+
+#: ../avahi-common/error.c:57
+msgid "Daemon connection failed"
+msgstr "A csatlakozás meghiúsult a démonhoz"
+
+#: ../avahi-common/error.c:58
+msgid "Memory exhausted"
+msgstr "Elfogyott a memória"
+
+#: ../avahi-common/error.c:59
+msgid "The object passed in was not valid"
+msgstr "Az átadott objektum érvénytelen volt"
+
+#: ../avahi-common/error.c:60
+msgid "Daemon not running"
+msgstr "A démon nem fut"
+
+#: ../avahi-common/error.c:61
+msgid "Invalid interface index"
+msgstr "Érvénytelen felületindex"
+
+#: ../avahi-common/error.c:62
+msgid "Invalid protocol specification"
+msgstr "Érvénytelen protokollmeghatározás"
+
+#: ../avahi-common/error.c:63
+msgid "Invalid flags"
+msgstr "Érvénytelen jelzők"
+
+#: ../avahi-common/error.c:65
+msgid "Not found"
+msgstr "Nem található"
+
+#: ../avahi-common/error.c:66
+msgid "Invalid configuration"
+msgstr "Érvénytelen konfiguráció"
+
+#: ../avahi-common/error.c:67
+msgid "Version mismatch"
+msgstr "Verzióeltérés"
+
+#: ../avahi-common/error.c:68
+msgid "Invalid service subtype"
+msgstr "Érvénytelen szolgáltatásaltípus"
+
+#: ../avahi-common/error.c:69
+msgid "Invalid packet"
+msgstr "Érvénytelen csomag"
+
+#: ../avahi-common/error.c:70
+msgid "Invalid DNS return code"
+msgstr "Érvénytelen DNS visszatérési érték"
+
+#: ../avahi-common/error.c:71
+msgid "DNS failure: FORMERR"
+msgstr "DNS hiba: FORMERR"
+
+#: ../avahi-common/error.c:72
+msgid "DNS failure: SERVFAIL"
+msgstr "DNS hiba: SERVFAIL"
+
+#: ../avahi-common/error.c:73
+msgid "DNS failure: NXDOMAIN"
+msgstr "DNS hiba: NXDOMAIN"
+
+#: ../avahi-common/error.c:74
+msgid "DNS failure: NOTIMP"
+msgstr "DNS hiba: NOTIMP"
+
+#: ../avahi-common/error.c:76
+msgid "DNS failure: REFUSED"
+msgstr "DNS hiba: REFUSED"
+
+#: ../avahi-common/error.c:77
+msgid "DNS failure: YXDOMAIN"
+msgstr "DNS hiba: YXDOMAIN"
+
+#: ../avahi-common/error.c:78
+msgid "DNS failure: YXRRSET"
+msgstr "DNS hiba: YXRRSET"
+
+#: ../avahi-common/error.c:79
+msgid "DNS failure: NXRRSET"
+msgstr "DNS hiba: NXRRSET"
+
+#: ../avahi-common/error.c:80
+msgid "DNS failure: NOTAUTH"
+msgstr "DNS hiba: NOTAUTH"
+
+#: ../avahi-common/error.c:81
+msgid "DNS failure: NOTZONE"
+msgstr "DNS hiba: NOTZONE"
+
+#: ../avahi-common/error.c:82
+msgid "Invalid RDATA"
+msgstr "Érvénytelen RDATA"
+
+#: ../avahi-common/error.c:83
+msgid "Invalid DNS type"
+msgstr "Érvénytelen DNS-típus"
+
+#: ../avahi-common/error.c:84
+msgid "Invalid DNS class"
+msgstr "Érvénytelen DNS-osztály"
+
+#: ../avahi-common/error.c:85
+msgid "Not supported"
+msgstr "Nem támogatott"
+
+#: ../avahi-common/error.c:87
+msgid "Not permitted"
+msgstr "Nem engedélyezett"
+
+#: ../avahi-common/error.c:88
+msgid "Invalid argument"
+msgstr "Érvénytelen paraméter"
+
+#: ../avahi-common/error.c:89
+msgid "Is empty"
+msgstr "Üres"
+
+#: ../avahi-common/error.c:90
+msgid "The requested operation is invalid because redundant"
+msgstr "A kért művelet érvénytelen, mivel redundáns"
+
+#: ../avahi-common/error.c:96
+msgid "Invalid Error Code"
+msgstr "Érvénytelen hibakód"
+
+#: ../avahi-ui/avahi-ui.c:326
+#, c-format
+msgid "Avahi client failure: %s"
+msgstr "Avahi klienshiba: %s"
+
+#: ../avahi-ui/avahi-ui.c:388
+#, c-format
+msgid "Avahi resolver failure: %s"
+msgstr "Avahi feloldási hiba: %s"
+
+#: ../avahi-ui/avahi-ui.c:518
+#, c-format
+msgid "Browsing for service type %s in domain %s failed: %s"
+msgstr "A szolgáltatástípus (%s) tallózása a tartományban (%s) meghiúsult: %s"
+
+#: ../avahi-ui/avahi-ui.c:519 ../avahi-utils/avahi-browse.c:157
+#: ../avahi-utils/avahi-browse.c:158 ../avahi-utils/avahi-browse.c:164
+#: ../avahi-utils/avahi-browse.c:165
+msgid "n/a"
+msgstr "ismeretlen"
+
+#: ../avahi-ui/avahi-ui.c:649
+#, c-format
+msgid "Avahi domain browser failure: %s"
+msgstr "Avahi tartományböngésző-hiba: %s"
+
+#: ../avahi-ui/avahi-ui.c:684
+#, c-format
+msgid "Failed to read Avahi domain: %s"
+msgstr "Az Avahi tartomány olvasása meghiúsult: %s"
+
+#: ../avahi-ui/avahi-ui.c:717
+#, c-format
+msgid "Failed to connect to Avahi server: %s"
+msgstr "A csatlakozás meghiúsult az Avahi kiszolgálóhoz: %s"
+
+#: ../avahi-ui/avahi-ui.c:735
+msgid "Browsing for services on <b>local network</b>:"
+msgstr "Szolgáltatások tallózása a <b>helyi hálózaton</b>:"
+
+#: ../avahi-ui/avahi-ui.c:737
+#, c-format
+msgid "Browsing for services in domain <b>%s</b>:"
+msgstr "Szolgáltatások tallózása a(z) <b>%s</b> tartományban:"
+
+#: ../avahi-ui/avahi-ui.c:773
+#, c-format
+msgid "Failed to create browser for %s: %s"
+msgstr "Nem sikerült tallózót létrehozni a következőhöz: %s: %s"
+
+#: ../avahi-ui/avahi-ui.c:903
+#, c-format
+msgid "Failed to create resolver for %s of type %s in domain %s: %s"
+msgstr "Nem sikerült $%2s típusú feloldót létrehozni a következőhöz: $%1s a(z) $%3s tartományban: $%4s"
+
+#: ../avahi-ui/avahi-ui.c:978
+#, c-format
+msgid "Failed to create domain browser: %s"
+msgstr "Nem sikerült tartománytallózót létrehozni: %s"
+
+#: ../avahi-ui/avahi-ui.c:989
+msgid "Change domain"
+msgstr "Tartomány módosítása"
+
+#: ../avahi-ui/avahi-ui.c:1021
+msgid "Service Name"
+msgstr "Szolgáltatásnév"
+
+#: ../avahi-ui/avahi-ui.c:1029 ../avahi-ui/avahi-ui.c:1160
+msgid "Browsing ..."
+msgstr "Tallózás..."
+
+#: ../avahi-ui/avahi-ui.c:1118
+msgid "Initializing..."
+msgstr "Előkészítés..."
+
+#: ../avahi-ui/avahi-ui.c:1164
+msgid "_Domain..."
+msgstr "_Tartomány..."
+
+#: ../avahi-ui/bssh.c:57
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+" -h --help Show this help\n"
+" -s --ssh Browse SSH servers\n"
+" -v --vnc Browse VNC servers\n"
+" -S --shell Browse both SSH and VNC\n"
+" -d --domain=DOMAIN The domain to browse in\n"
+msgstr ""
+"%s [kapcsolók]\n"
+"\n"
+" -h --help Ezen súgó megjelenítése\n"
+" -s --ssh SSH kiszolgálók tallózása\n"
+" -v --vnc VNC kiszolgálók tallózása\n"
+" -S --shell SSH és VNC kiszolgálók tallózása\n"
+" -d --domain=TARTOMÁNY A tallózandó tartomány\n"
+
+#: ../avahi-ui/bssh.c:103 ../avahi-utils/avahi-browse.c:759
+#, c-format
+msgid "Too many arguments\n"
+msgstr "Túl sok paraméter\n"
+
+#: ../avahi-ui/bssh.c:147
+msgid "Choose Shell Server"
+msgstr "Válassza ki a shell kiszolgálót"
+
+#: ../avahi-ui/bssh.c:149
+msgid "Desktop"
+msgstr "Asztal"
+
+#: ../avahi-ui/bssh.c:150
+msgid "Terminal"
+msgstr "Terminál"
+
+#: ../avahi-ui/bssh.c:154
+msgid "Choose VNC server"
+msgstr "Válasszon VNC kiszolgálót"
+
+#: ../avahi-ui/bssh.c:159
+msgid "Choose SSH server"
+msgstr "Válasszon SSH kiszolgálót"
+
+#: ../avahi-ui/bssh.c:183
+#, c-format
+msgid "Connecting to '%s' ...\n"
+msgstr "Csatlakozás ehhez: „%s” ...\n"
+
+#: ../avahi-ui/bssh.c:238
+#, c-format
+msgid "execlp() failed: %s\n"
+msgstr "Az execlp() meghiúsult: %s\n"
+
+#: ../avahi-ui/bssh.c:248
+#, c-format
+msgid "Canceled.\n"
+msgstr "Megszakítva.\n"
+
+#: ../avahi-ui/bssh.desktop.in.in.h:1
+msgid "Avahi SSH Server Browser"
+msgstr "Avahi SSH-kiszolgálóböngésző"
+
+#: ../avahi-ui/bssh.desktop.in.in.h:2
+msgid "Browse for Zeroconf-enabled SSH Servers"
+msgstr "Zeroconf-képes SSH kiszolgálók keresése"
+
+#: ../avahi-ui/bvnc.desktop.in.in.h:1
+msgid "Avahi VNC Server Browser"
+msgstr "Avahi VNC-kiszolgálóböngésző"
+
+#: ../avahi-ui/bvnc.desktop.in.in.h:2
+msgid "Browse for Zeroconf-enabled VNC Servers"
+msgstr "Zeroconf-képes VNC kiszolgálók keresése"
+
+# fixme: wtf?
+#: ../avahi-utils/avahi-browse.c:108
+#, c-format
+msgid ": All for now\n"
+msgstr ": most mind\n"
+
+#: ../avahi-utils/avahi-browse.c:119
+#, c-format
+msgid ": Cache exhausted\n"
+msgstr ": a gyorsítótár elfogyott\n"
+
+#: ../avahi-utils/avahi-browse.c:223 ../avahi-utils/avahi-browse.c:245
+#, c-format
+msgid "Failed to resolve service '%s' of type '%s' in domain '%s': %s\n"
+msgstr "A(z) $%2s típusú $%1s szolgáltatás feloldása meghiúsult a(z) $%3s tartományban: $%4s\n"
+
+#: ../avahi-utils/avahi-browse.c:324
+#, c-format
+msgid "service_browser failed: %s\n"
+msgstr "a service_browser sikertelen: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:362
+#, c-format
+msgid "avahi_service_browser_new() failed: %s\n"
+msgstr "az avahi_service_browser_new() sikertelen: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:398
+#, c-format
+msgid "service_type_browser failed: %s\n"
+msgstr "a service_type_browser sikertelen: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:428
+#, c-format
+msgid "avahi_service_type_browser_new() failed: %s\n"
+msgstr "az avahi_service_type_browser_new() sikertelen: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:503
+#, c-format
+msgid "avahi_domain_browser_new() failed: %s\n"
+msgstr "az avahi_domain_browser_new() sikertelen: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:519 ../avahi-utils/avahi-publish.c:391
+#: ../avahi-utils/avahi-resolve.c:282 ../avahi-utils/avahi-set-host-name.c:170
+#, c-format
+msgid "Failed to query version string: %s\n"
+msgstr "A verzió-karakterlánc lekérdezése meghiúsult: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:524 ../avahi-utils/avahi-publish.c:396
+#: ../avahi-utils/avahi-resolve.c:287 ../avahi-utils/avahi-set-host-name.c:175
+#: ../avahi-utils/avahi-set-host-name.c:191
+#, c-format
+msgid "Failed to query host name: %s\n"
+msgstr "A gépnév lekérdezése meghiúsult: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:528 ../avahi-utils/avahi-publish.c:400
+#: ../avahi-utils/avahi-resolve.c:291 ../avahi-utils/avahi-set-host-name.c:179
+#, c-format
+msgid "Server version: %s; Host name: %s\n"
+msgstr "Kiszolgálóverzió: %s; gépnév: %s\n"
+
+#. Translators: This is a column heading with abbreviations for
+#. * Event (+/-), Network Interface, Protocol (IPv4/v6), Domain
+#: ../avahi-utils/avahi-browse.c:533
+#, c-format
+msgid "E Ifce Prot Domain\n"
+msgstr "E Csat Prot Tartom\n"
+
+#. Translators: This is a column heading with abbreviations for
+#. * Event (+/-), Network Interface, Protocol (IPv4/v6), Domain
+#: ../avahi-utils/avahi-browse.c:537
+#, c-format
+msgid "E Ifce Prot %-*s %-20s Domain\n"
+msgstr "E Csat Prot %-*s %-20s Tartom\n"
+
+#: ../avahi-utils/avahi-browse.c:537
+msgid "Name"
+msgstr "Név"
+
+#: ../avahi-utils/avahi-browse.c:537
+msgid "Type"
+msgstr "Típus"
+
+#. We have been disconnected, so let reconnect
+#: ../avahi-utils/avahi-browse.c:569 ../avahi-utils/avahi-publish.c:165
+#, c-format
+msgid "Disconnected, reconnecting ...\n"
+msgstr "Leválsztva, újracsatlakozás...\n"
+
+#: ../avahi-utils/avahi-browse.c:583 ../avahi-utils/avahi-browse.c:813
+#: ../avahi-utils/avahi-publish.c:172 ../avahi-utils/avahi-publish.c:383
+#: ../avahi-utils/avahi-resolve.c:274 ../avahi-utils/avahi-set-host-name.c:162
+#, c-format
+msgid "Failed to create client object: %s\n"
+msgstr "Kliensobjektum létrehozása meghiúsult: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:588 ../avahi-utils/avahi-publish.c:177
+#: ../avahi-utils/avahi-resolve.c:145 ../avahi-utils/avahi-set-host-name.c:61
+#, c-format
+msgid "Client failure, exiting: %s\n"
+msgstr "Klienshiba, kilépés: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:607 ../avahi-utils/avahi-publish.c:208
+#, c-format
+msgid "Waiting for daemon ...\n"
+msgstr "Várakozás a démonra...\n"
+
+#: ../avahi-utils/avahi-browse.c:631
+msgid ""
+" -h --help Show this help\n"
+" -V --version Show version\n"
+" -D --browse-domains Browse for browsing domains instead of services\n"
+" -a --all Show all services, regardless of the type\n"
+" -d --domain=DOMAIN The domain to browse in\n"
+" -v --verbose Enable verbose mode\n"
+" -t --terminate Terminate after dumping a more or less complete "
+"list\n"
+" -c --cache Terminate after dumping all entries from the cache\n"
+" -l --ignore-local Ignore local services\n"
+" -r --resolve Resolve services found\n"
+" -f --no-fail Don't fail if the daemon is not available\n"
+" -p --parsable Output in parsable format\n"
+msgstr ""
+" -h --help Ezen súgó megjelenítése\n"
+" -V --version Verziószám megjelenítése\n"
+" -D --browse-domains Szolgáltatások helyett tartományok tallózása\n"
+" -a --all Minden szolgáltatás megjelenítése, típusfüggetlenül\n"
+" -d --domain=TARTOMÁNY A tallózandó tartomány\n"
+" -v --verbose Részletes mód engedélyezése\n"
+" -t --terminate Befejezés a többé-kevésbé teljes lista kiírása után\n"
+" -c --cache Befejezés a gyorsítótár bejegyzéseinek kiírása után\n"
+" -l --ignore-local Helyi szolgáltatások figyelmen kívül hagyása\n"
+" -r --resolve Talált szolgáltatások feloldása\n"
+" -f --no-fail Ne hibázzon, ha a démon nem érhető el\n"
+" -p --parsable Kimenet feldolgozható formában\n"
+
+#: ../avahi-utils/avahi-browse.c:644
+msgid ""
+" -k --no-db-lookup Don't lookup service types\n"
+" -b --dump-db Dump service type database\n"
+msgstr ""
+" -k --no-db-lookup Ne keresse ki a szolgáltatástípusokat\n"
+" -b --dump-db Szolgáltatástípus-adatbázis kiírása\n"
+
+#: ../avahi-utils/avahi-browse.c:750 ../avahi-utils/avahi-resolve.c:221
+#, c-format
+msgid "Too few arguments\n"
+msgstr "Túl kevés paraméter\n"
+
+#: ../avahi-utils/avahi-browse.c:805 ../avahi-utils/avahi-publish.c:375
+#: ../avahi-utils/avahi-resolve.c:266 ../avahi-utils/avahi-set-host-name.c:154
+#, c-format
+msgid "Failed to create simple poll object.\n"
+msgstr "Az egyszerű lekérdezési objektum létrehozása meghiúsult.\n"
+
+#: ../avahi-utils/avahi-publish.c:78
+#, c-format
+msgid "Established under name '%s'\n"
+msgstr "Létrehozva ezen név alatt: „%s”\n"
+
+#: ../avahi-utils/avahi-publish.c:83
+#, c-format
+msgid "Failed to register: %s\n"
+msgstr "A regisztráció meghiúsult: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:96
+#, c-format
+msgid "Name collision, picking new name '%s'.\n"
+msgstr "Névütközés, új név választása: „%s”.\n"
+
+#: ../avahi-utils/avahi-publish.c:116
+#, c-format
+msgid "Failed to create entry group: %s\n"
+msgstr "A bejegyzéscsoport létrehozása meghiúsult: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:126
+#, c-format
+msgid "Failed to add address: %s\n"
+msgstr "A cím hozzáadása meghiúsult: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:136
+#, c-format
+msgid "Failed to add service: %s\n"
+msgstr "A szolgáltatás hozzáadása meghiúsult: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:142
+#, c-format
+msgid "Failed to add subtype '%s': %s\n"
+msgstr "Az altípus („%s”) hozzáadása meghiúsult: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:193
+#, c-format
+msgid "Host name conflict\n"
+msgstr "Gépnévütközés\n"
+
+#: ../avahi-utils/avahi-publish.c:218
+#, c-format
+msgid ""
+"%s [options] %s <name> <type> <port> [<txt ...>]\n"
+"%s [options] %s <host-name> <address>\n"
+"\n"
+" -h --help Show this help\n"
+" -V --version Show version\n"
+" -s --service Publish service\n"
+" -a --address Publish address\n"
+" -v --verbose Enable verbose mode\n"
+" -d --domain=DOMAIN Domain to publish service in\n"
+" -H --host=DOMAIN Host where service resides\n"
+" --subtype=SUBTYPE An additional subtype to register this service "
+"with\n"
+" -f --no-fail Don't fail if the daemon is not available\n"
+msgstr ""
+"%s [kapcsolók] %s <név> <típus> <port> [<txt ...>]\n"
+"%s [kapcsolók] %s <gépnév> <cím>\n"
+"\n"
+" -h --help Ezen súgó megjelenítése\n"
+" -V --version Verziószám megjelenítése\n"
+" -s --service Szolgáltatás közzététele\n"
+" -a --address Cím közzététele\n"
+" -v --verbose Részletes mód engedélyezése\n"
+" -d --domain=TARTOMÁNY Szolgáltatás közzététele ebben a tartományban\n"
+" -H --host=TARTOMÁNY A szolgáltatás ezen a gépen található\n"
+" --subtype=ALTÍPUS További altípus, amellyel a szolgáltatás regisztrálandó\n"
+" -f --no-fail Ne hibázzon, ha a démon nem érhető el\n"
+
+#: ../avahi-utils/avahi-publish.c:300 ../avahi-utils/avahi-publish.c:315
+#, c-format
+msgid "Bad number of arguments\n"
+msgstr "A paraméterek száma nem megfelelő\n"
+
+#: ../avahi-utils/avahi-publish.c:326
+#, c-format
+msgid "Failed to parse port number: %s\n"
+msgstr "A portszám feldolgozása meghiúsult: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:358 ../avahi-utils/avahi-resolve.c:248
+#, c-format
+msgid "No command specified.\n"
+msgstr "Nincs megadva parancs.\n"
+
+#: ../avahi-utils/avahi-resolve.c:91
+#, c-format
+msgid "Failed to resolve host name '%s': %s\n"
+msgstr "A gépnév („%s”) feloldása meghiúsult: %s\n"
+
+#: ../avahi-utils/avahi-resolve.c:128
+#, c-format
+msgid "Failed to resolve address '%s': %s\n"
+msgstr "A cím („%s”) feloldása meghiúsult: %s\n"
+
+#: ../avahi-utils/avahi-resolve.c:159
+#, c-format
+msgid ""
+"%s [options] %s <host name ...>\n"
+"%s [options] %s <address ... >\n"
+"\n"
+" -h --help Show this help\n"
+" -V --version Show version\n"
+" -n --name Resolve host name\n"
+" -a --address Resolve address\n"
+" -v --verbose Enable verbose mode\n"
+" -6 Lookup IPv6 address\n"
+" -4 Lookup IPv4 address\n"
+msgstr ""
+"%s [kapcsolók] %s <gépnév ...>\n"
+"%s [kapcsolók] %s <cím ... >\n"
+"\n"
+" -h --help Ezen súgó megjelenítése\n"
+" -V --version Verziószám megjelenítése\n"
+" -n --name Gépnév feloldása\n"
+" -a --address Cím feloldása\n"
+" -v --verbose Részletes mód engedélyezése\n"
+" -6 IPv6 cím kikeresése\n"
+" -4 IPv4 cím kikeresése\n"
+
+#: ../avahi-utils/avahi-resolve.c:301 ../avahi-utils/avahi-set-host-name.c:183
+#, c-format
+msgid "Failed to create host name resolver: %s\n"
+msgstr "A gépnévfeloldó létrehozása meghiúsult: %s\n"
+
+#: ../avahi-utils/avahi-resolve.c:311
+#, c-format
+msgid "Failed to parse address '%s'\n"
+msgstr "A cím („%s”) feldolgozása meghiúsult\n"
+
+#: ../avahi-utils/avahi-resolve.c:316
+#, c-format
+msgid "Failed to create address resolver: %s\n"
+msgstr "A címfeloldó létrehozása meghiúsult: %s\n"
+
+#: ../avahi-utils/avahi-set-host-name.c:75
+#, c-format
+msgid ""
+"%s [options] <new host name>\n"
+"\n"
+" -h --help Show this help\n"
+" -V --version Show version\n"
+" -v --verbose Enable verbose mode\n"
+msgstr ""
+"%s [kapcsolók] <új gépnév>\n"
+"\n"
+" -h --help Ezen súgó megjelenítése\n"
+" -V --version Verziószám megjelenítése\n"
+" -v --verbose Részletes mód engedélyezése\n"
+
+#: ../avahi-utils/avahi-set-host-name.c:116
+#, c-format
+msgid "Invalid number of arguments, expecting exactly one.\n"
+msgstr "Érvénytelen számú argumentum, pontosan egy szükséges.\n"
+
+#: ../avahi-utils/avahi-set-host-name.c:195
+#, c-format
+msgid "Host name successfully changed to %s\n"
+msgstr "A gépnév sikeresen módosítva a következőre: %s\n"
+
-# translation of avahi.po to italiano
-# Italian translation of avahi.
+# translation of avahi.master-tx.it.po to Italiano
# Copyright (C) 2008 avahi.
# This file is distributed under the same license as the avahi package.
#
# Silvio Pierro <perplesso82@gmail.com>, 2008.
# Gianluca Busiello <busiello@ceinge.unina.it>, 2008.
+# Francesco Tombolini <tombo@adamantio.net>, 2008.
msgid ""
msgstr ""
-"Project-Id-Version: avahi\n"
+"Project-Id-Version: avahi.master-tx.it\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-21 10:21+0000\n"
-"PO-Revision-Date: 2008-03-28 23:26+0100\n"
-"Last-Translator: Gianluca Busiello <busiello@ceinge.unina.it>\n"
-"Language-Team: italiano <fedora-trans-it@redhat.com>\n"
+"POT-Creation-Date: 2008-08-29 09:19+0000\n"
+"PO-Revision-Date: 2008-09-24 03:12+0200\n"
+"Last-Translator: Francesco Tombolini <tombo@adamantio.net>\n"
+"Language-Team: Italiano <fedora-trans-it@redhat.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../avahi-common/error.c:32
msgid "OK"
#: ../avahi-ui/avahi-ui.c:903
#, c-format
msgid "Failed to create resolver for %s of type %s in domain %s: %s"
-msgstr "Fallimento nella creazione del risolutore per %s del tipo %s nel dominio %s: %s"
+msgstr ""
+"Fallimento nella creazione del risolutore per %s del tipo %s nel dominio %s: "
+"%s"
#: ../avahi-ui/avahi-ui.c:978
#, c-format
msgid "_Domain..."
msgstr "_Dominio..."
-#: ../avahi-ui/bssh.c:51
+#: ../avahi-ui/bssh.c:57
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+" -h --help Show this help\n"
+" -s --ssh Browse SSH servers\n"
+" -v --vnc Browse VNC servers\n"
+" -S --shell Browse both SSH and VNC\n"
+" -d --domain=DOMAIN The domain to browse in\n"
+msgstr ""
+"%s [opzioni]\n"
+"\n"
+" -h --help Mostra questo aiuto\n"
+" -s --ssh Sfoglia i server SSH\n"
+" -v --vnc Sfoglia i server VNC\n"
+" -S --shell Sfoglia sia SSH che VNC\n"
+" -d --domain=DOMINIO Il dominio in cui ricercare\n"
+
+#: ../avahi-ui/bssh.c:103 ../avahi-utils/avahi-browse.c:759
+#, c-format
+msgid "Too many arguments\n"
+msgstr "Troppi argomenti\n"
+
+#: ../avahi-ui/bssh.c:147
msgid "Choose Shell Server"
msgstr "Selezionare il server shell"
-#: ../avahi-ui/bssh.c:53
+#: ../avahi-ui/bssh.c:149
msgid "Desktop"
msgstr "Desktop"
-#: ../avahi-ui/bssh.c:54
+#: ../avahi-ui/bssh.c:150
msgid "Terminal"
msgstr "Terminale"
-#: ../avahi-ui/bssh.c:56
+#: ../avahi-ui/bssh.c:154
msgid "Choose VNC server"
msgstr "Selezionare il server VNC"
-#: ../avahi-ui/bssh.c:59
+#: ../avahi-ui/bssh.c:159
msgid "Choose SSH server"
msgstr "Selezionare il server SSH"
-#: ../avahi-ui/bssh.c:81
+#: ../avahi-ui/bssh.c:183
#, c-format
msgid "Connecting to '%s' ...\n"
msgstr "Connessione a '%s' ...\n"
-#: ../avahi-ui/bssh.c:135
+#: ../avahi-ui/bssh.c:238
#, c-format
msgid "execlp() failed: %s\n"
msgstr "fallito execlp(): %s\n"
-#: ../avahi-ui/bssh.c:145
+#: ../avahi-ui/bssh.c:248
msgid "Canceled.\n"
msgstr "Cancellato.\n"
+#: ../avahi-ui/bssh.desktop.in.h:1
+msgid "Avahi SSH Server Browser"
+msgstr "Browser avahi per i server SSH"
+
+#: ../avahi-ui/bssh.desktop.in.h:2
+msgid "Browse for Zeroconf-enabled SSH Servers"
+msgstr "Browser per i server SSH Zeroconf-enabled"
+
+#: ../avahi-ui/bvnc.desktop.in.h:1
+msgid "Avahi VNC Server Browser"
+msgstr "Browser avahi per i server VNC"
+
+#: ../avahi-ui/bvnc.desktop.in.h:2
+msgid "Browse for Zeroconf-enabled VNC Servers"
+msgstr "Browser per i server VNC Zeroconf-enabled"
+
#: ../avahi-utils/avahi-browse.c:108
#, c-format
msgid ": All for now\n"
msgid "Server version: %s; Host name: %s\n"
msgstr "Versione server: %s; Nome host: %s\n"
-#: ../avahi-utils/avahi-browse.c:531
+#. Translators: This is a column heading with abbreviations for
+#. * Event (+/-), Network Interface, Protocol (IPv4/v6), Domain
+#: ../avahi-utils/avahi-browse.c:533
#, c-format
msgid "E Ifce Prot Domain\n"
msgstr "E Ifce Prot Domain\n"
-#: ../avahi-utils/avahi-browse.c:533
+#. Translators: This is a column heading with abbreviations for
+#. * Event (+/-), Network Interface, Protocol (IPv4/v6), Domain
+#: ../avahi-utils/avahi-browse.c:537
#, c-format
msgid "E Ifce Prot %-*s %-20s Domain\n"
msgstr "E Ifce Prot %-*s %-20s Domain\n"
-#: ../avahi-utils/avahi-browse.c:533
+#: ../avahi-utils/avahi-browse.c:537
msgid "Name"
msgstr "Nome"
-#: ../avahi-utils/avahi-browse.c:533
+#: ../avahi-utils/avahi-browse.c:537
msgid "Type"
msgstr "Tipo"
#. We have been disconnected, so let reconnect
-#: ../avahi-utils/avahi-browse.c:564 ../avahi-utils/avahi-publish.c:165
+#: ../avahi-utils/avahi-browse.c:569 ../avahi-utils/avahi-publish.c:165
#, c-format
msgid "Disconnected, reconnecting ...\n"
msgstr "Disconnesso, riconnessione ...\n"
-#: ../avahi-utils/avahi-browse.c:578 ../avahi-utils/avahi-browse.c:808
+#: ../avahi-utils/avahi-browse.c:583 ../avahi-utils/avahi-browse.c:813
#: ../avahi-utils/avahi-publish.c:172 ../avahi-utils/avahi-publish.c:383
#: ../avahi-utils/avahi-resolve.c:274 ../avahi-utils/avahi-set-host-name.c:162
#, c-format
msgid "Failed to create client object: %s\n"
msgstr "Creazione dell'oggetto client fallita: %s\n"
-#: ../avahi-utils/avahi-browse.c:583 ../avahi-utils/avahi-publish.c:177
+#: ../avahi-utils/avahi-browse.c:588 ../avahi-utils/avahi-publish.c:177
#: ../avahi-utils/avahi-resolve.c:145 ../avahi-utils/avahi-set-host-name.c:61
#, c-format
msgid "Client failure, exiting: %s\n"
msgstr "Fallimento client, uscita: %s\n"
-#: ../avahi-utils/avahi-browse.c:602 ../avahi-utils/avahi-publish.c:208
+#: ../avahi-utils/avahi-browse.c:607 ../avahi-utils/avahi-publish.c:208
#, c-format
msgid "Waiting for daemon ...\n"
msgstr "In attesa per il demone ...\n"
-#: ../avahi-utils/avahi-browse.c:626
+#: ../avahi-utils/avahi-browse.c:631
msgid ""
" -h --help Show this help\n"
" -V --version Show version\n"
msgstr ""
" -h --help Mostra questo messaggio\n"
" -V --version Mostra la versione\n"
-" -D --browse-domains Condividi per i domini condivisi invece dei servizi\n"
+" -D --browse-domains Condividi per i domini condivisi invece dei "
+"servizi\n"
" -a --all Mostra tutti i servizi, senza tener conto il tipo\n"
" -d --domain=DOMAIN Il dominio nel quale fare browsing\n"
" -v --verbose Abilita la modalità con dettagli\n"
-" -t --terminate Termina dopo lo scaricamento di una lista piu o meno\n"
+" -t --terminate Termina dopo lo scaricamento di una lista piu o "
+"meno\n"
" completa\n"
-" -c --cache Termina dopo lo scaricamento di tutte le voci dalla\n"
+" -c --cache Termina dopo lo scaricamento di tutte le voci "
+"dalla\n"
" cache\n"
" -l --ignore-local Ignora i servizi locali\n"
" -r --resolve Risolvi i servizi trovati\n"
-" -f --no-fail Non terminare con errore se il demone non è disponibile\n"
+" -f --no-fail Non terminare con errore se il demone non è "
+"disponibile\n"
" -p --parsable Ritorna un formato analizzabile\n"
-#: ../avahi-utils/avahi-browse.c:639
+#: ../avahi-utils/avahi-browse.c:644
msgid ""
" -k --no-db-lookup Don't lookup service types\n"
" -b --dump-db Dump service type database\n"
" -k --no-db-lookup Non guardare i tipi di servizi\n"
" -b --dump-db Scarica il database dei tipi di servizi\n"
-#: ../avahi-utils/avahi-browse.c:745 ../avahi-utils/avahi-resolve.c:221
+#: ../avahi-utils/avahi-browse.c:750 ../avahi-utils/avahi-resolve.c:221
#, c-format
msgid "Too few arguments\n"
msgstr "Troppo pochi argomenti\n"
-#: ../avahi-utils/avahi-browse.c:754
-#, c-format
-msgid "Too many arguments\n"
-msgstr "Troppi argomenti\n"
-
-#: ../avahi-utils/avahi-browse.c:800 ../avahi-utils/avahi-publish.c:375
+#: ../avahi-utils/avahi-browse.c:805 ../avahi-utils/avahi-publish.c:375
#: ../avahi-utils/avahi-resolve.c:266 ../avahi-utils/avahi-set-host-name.c:154
#, c-format
msgid "Failed to create simple poll object.\n"
" -H --host=DOMAIN L'host dove risiedono i servizi\n"
" --subtype=SUBTYPE Un sottotipo addizionale con cui registrare questo\n"
" servizio\n"
-" -f --no-fail Non terminare con errore se il demone non è disponibile\n"
+" -f --no-fail Non terminare con errore se il demone non è "
+"disponibile\n"
#: ../avahi-utils/avahi-publish.c:300 ../avahi-utils/avahi-publish.c:315
#, c-format
--- /dev/null
+# Swedish translation for avahi.
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the avahi package.
+# Daniel Nylander <po@danielnylander.se>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: avahi\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-04 04:23+0000\n"
+"PO-Revision-Date: 2008-09-05 00:18+0100\n"
+"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../avahi-common/error.c:32
+msgid "OK"
+msgstr "OK"
+
+#: ../avahi-common/error.c:33
+msgid "Operation failed"
+msgstr "Åtgärden misslyckades"
+
+#: ../avahi-common/error.c:34
+msgid "Bad state"
+msgstr "Felaktigt tillstånd"
+
+#: ../avahi-common/error.c:35
+msgid "Invalid host name"
+msgstr "Ogiltigt värdnamn"
+
+#: ../avahi-common/error.c:36
+msgid "Invalid domain name"
+msgstr "Ogiltigt domännamn"
+
+#: ../avahi-common/error.c:37
+msgid "No suitable network protocol available"
+msgstr "Inget lämpligt nätverksprotokoll tillgängligt"
+
+#: ../avahi-common/error.c:38
+msgid "Invalid DNS TTL"
+msgstr "Ogiltigt DNS TTL"
+
+#: ../avahi-common/error.c:39
+msgid "Resource record key is pattern"
+msgstr "Resursens postnyckel är mönster"
+
+#: ../avahi-common/error.c:40
+msgid "Local name collision"
+msgstr "Lokal namnkollision"
+
+#: ../avahi-common/error.c:41
+msgid "Invalid record"
+msgstr "Ogiltig post"
+
+#: ../avahi-common/error.c:43
+msgid "Invalid service name"
+msgstr "Ogiltigt tjänstenamn"
+
+#: ../avahi-common/error.c:44
+msgid "Invalid service type"
+msgstr "Ogiltig tjänstetyp"
+
+#: ../avahi-common/error.c:45
+msgid "Invalid port number"
+msgstr "Ogiltigt portnummer"
+
+#: ../avahi-common/error.c:46
+msgid "Invalid record key"
+msgstr "Ogiltig postnyckel"
+
+#: ../avahi-common/error.c:47
+msgid "Invalid address"
+msgstr "Ogiltig adress"
+
+#: ../avahi-common/error.c:48
+msgid "Timeout reached"
+msgstr "Tidsgräns nåddes"
+
+#: ../avahi-common/error.c:49
+msgid "Too many clients"
+msgstr "För många klienter"
+
+#: ../avahi-common/error.c:50
+msgid "Too many objects"
+msgstr "För många objekt"
+
+#: ../avahi-common/error.c:51
+msgid "Too many entries"
+msgstr "För många poster"
+
+#: ../avahi-common/error.c:52
+msgid "OS Error"
+msgstr "Operativsystemsfel"
+
+#: ../avahi-common/error.c:54
+msgid "Access denied"
+msgstr "Åtkomst nekad"
+
+#: ../avahi-common/error.c:55
+msgid "Invalid operation"
+msgstr "Ogiltig åtgärd"
+
+#: ../avahi-common/error.c:56
+msgid "An unexpected D-Bus error occured"
+msgstr "Ett oväntat D-Bus-fel har inträffat"
+
+#: ../avahi-common/error.c:57
+msgid "Daemon connection failed"
+msgstr "Anslutning till demon misslyckades"
+
+#: ../avahi-common/error.c:58
+msgid "Memory exhausted"
+msgstr "Minnet är slut"
+
+#: ../avahi-common/error.c:59
+msgid "The object passed in was not valid"
+msgstr "Objektet som skickades in var inte giltigt"
+
+#: ../avahi-common/error.c:60
+msgid "Daemon not running"
+msgstr "Demonen är inte igång"
+
+#: ../avahi-common/error.c:61
+msgid "Invalid interface index"
+msgstr "Ogiltigt gränssnittsindex"
+
+#: ../avahi-common/error.c:62
+msgid "Invalid protocol specification"
+msgstr "Ogiltig protokollspecifikation"
+
+#: ../avahi-common/error.c:63
+msgid "Invalid flags"
+msgstr "Ogiltiga flaggor"
+
+#: ../avahi-common/error.c:65
+msgid "Not found"
+msgstr "Hittades inte"
+
+#: ../avahi-common/error.c:66
+msgid "Invalid configuration"
+msgstr "Ogiltig konfiguration"
+
+#: ../avahi-common/error.c:67
+msgid "Version mismatch"
+msgstr "Versionen stämmer inte"
+
+#: ../avahi-common/error.c:68
+msgid "Invalid service subtype"
+msgstr "Ogiltig undertyp för tjänst"
+
+#: ../avahi-common/error.c:69
+msgid "Invalid packet"
+msgstr "Ogiltigt paket"
+
+#: ../avahi-common/error.c:70
+msgid "Invalid DNS return code"
+msgstr "Ogiltig DNS-svarskod"
+
+#: ../avahi-common/error.c:71
+msgid "DNS failure: FORMERR"
+msgstr "DNS-fel: FORMERR"
+
+#: ../avahi-common/error.c:72
+msgid "DNS failure: SERVFAIL"
+msgstr "DNS-fel: SERVFAIL"
+
+#: ../avahi-common/error.c:73
+msgid "DNS failure: NXDOMAIN"
+msgstr "DNS-fel: NXDOMAIN"
+
+#: ../avahi-common/error.c:74
+msgid "DNS failure: NOTIMP"
+msgstr "DNS-fel: NOTIMP"
+
+#: ../avahi-common/error.c:76
+msgid "DNS failure: REFUSED"
+msgstr "DNS-fel: REFUSED"
+
+#: ../avahi-common/error.c:77
+msgid "DNS failure: YXDOMAIN"
+msgstr "DNS-fel: YXDOMAIN"
+
+#: ../avahi-common/error.c:78
+msgid "DNS failure: YXRRSET"
+msgstr "DNS-fel: YXRRSET"
+
+#: ../avahi-common/error.c:79
+msgid "DNS failure: NXRRSET"
+msgstr "DNS-fel: NXRRSET"
+
+#: ../avahi-common/error.c:80
+msgid "DNS failure: NOTAUTH"
+msgstr "DNS-fel: NOTAUTH"
+
+#: ../avahi-common/error.c:81
+msgid "DNS failure: NOTZONE"
+msgstr "DNS-fel: NOTZONE"
+
+#: ../avahi-common/error.c:82
+msgid "Invalid RDATA"
+msgstr "Ogiltig RDATA"
+
+#: ../avahi-common/error.c:83
+msgid "Invalid DNS type"
+msgstr "Ogiltig DNS-typ"
+
+#: ../avahi-common/error.c:84
+msgid "Invalid DNS class"
+msgstr "Ogiltig DNS-klass"
+
+#: ../avahi-common/error.c:85
+msgid "Not supported"
+msgstr "Stöds inte"
+
+#: ../avahi-common/error.c:87
+msgid "Not permitted"
+msgstr "Inte tillåten"
+
+#: ../avahi-common/error.c:88
+msgid "Invalid argument"
+msgstr "Ogiltigt argument"
+
+#: ../avahi-common/error.c:89
+msgid "Is empty"
+msgstr "Är tom"
+
+#: ../avahi-common/error.c:90
+msgid "The requested operation is invalid because redundant"
+msgstr "Den begärda åtgärden är ogiltig därför den är redundant"
+
+#: ../avahi-common/error.c:96
+msgid "Invalid Error Code"
+msgstr "Ogiltig felkod"
+
+#: ../avahi-ui/avahi-ui.c:326
+#, c-format
+msgid "Avahi client failure: %s"
+msgstr "Fel i Avahi-klient: %s"
+
+#: ../avahi-ui/avahi-ui.c:388
+#, c-format
+msgid "Avahi resolver failure: %s"
+msgstr "Fel i Avahi-uppslag: %s"
+
+#: ../avahi-ui/avahi-ui.c:518
+#, c-format
+msgid "Browsing for service type %s in domain %s failed: %s"
+msgstr "Bläddring efter tjänstetypen %s i domänen %s misslyckades: %s"
+
+#: ../avahi-ui/avahi-ui.c:519
+#: ../avahi-utils/avahi-browse.c:157
+#: ../avahi-utils/avahi-browse.c:158
+#: ../avahi-utils/avahi-browse.c:164
+#: ../avahi-utils/avahi-browse.c:165
+msgid "n/a"
+msgstr "Inte tillgänglig"
+
+#: ../avahi-ui/avahi-ui.c:649
+#, c-format
+msgid "Avahi domain browser failure: %s"
+msgstr "Fel i Avahi-domänbläddrare: %s"
+
+#: ../avahi-ui/avahi-ui.c:684
+#, c-format
+msgid "Failed to read Avahi domain: %s"
+msgstr "Misslyckades att läsa Avahi-domän: %s"
+
+#: ../avahi-ui/avahi-ui.c:717
+#, c-format
+msgid "Failed to connect to Avahi server: %s"
+msgstr "Misslyckades att ansluta till Avahi-server: %s"
+
+#: ../avahi-ui/avahi-ui.c:735
+msgid "Browsing for services on <b>local network</b>:"
+msgstr "Bläddrar efter tjänster på <b>lokalt nätverk</b>:"
+
+#: ../avahi-ui/avahi-ui.c:737
+#, c-format
+msgid "Browsing for services in domain <b>%s</b>:"
+msgstr "Bläddring efter tjänster i domänen <b>%s</b>:"
+
+#: ../avahi-ui/avahi-ui.c:773
+#, c-format
+msgid "Failed to create browser for %s: %s"
+msgstr "Misslyckades med att skapa bläddrare för %s: %s"
+
+#: ../avahi-ui/avahi-ui.c:903
+#, c-format
+msgid "Failed to create resolver for %s of type %s in domain %s: %s"
+msgstr "Misslyckades med att skapa uppslagare för %s av typen %s i domänen %s: %s"
+
+#: ../avahi-ui/avahi-ui.c:978
+#, c-format
+msgid "Failed to create domain browser: %s"
+msgstr "Misslyckades med att skapa domänbläddrare: %s"
+
+#: ../avahi-ui/avahi-ui.c:989
+msgid "Change domain"
+msgstr "Byt domän"
+
+#: ../avahi-ui/avahi-ui.c:1021
+msgid "Service Name"
+msgstr "Tjänstenamn"
+
+#: ../avahi-ui/avahi-ui.c:1029
+#: ../avahi-ui/avahi-ui.c:1160
+msgid "Browsing ..."
+msgstr "Bläddrar ..."
+
+#: ../avahi-ui/avahi-ui.c:1118
+msgid "Initializing..."
+msgstr "Initierar..."
+
+#: ../avahi-ui/avahi-ui.c:1164
+msgid "_Domain..."
+msgstr "_Domän..."
+
+#: ../avahi-ui/bssh.c:57
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+" -h --help Show this help\n"
+" -s --ssh Browse SSH servers\n"
+" -v --vnc Browse VNC servers\n"
+" -S --shell Browse both SSH and VNC\n"
+" -d --domain=DOMAIN The domain to browse in\n"
+msgstr ""
+"%s [flaggor]\n"
+"\n"
+" -h --help Visa denna hjälp\n"
+" -s --ssh Bläddra bland SSH-servrar\n"
+" -v --vnc Bläddra bland VNC-servrar\n"
+" -S --shell Bläddra bland både SSH och VNC\n"
+" -d --domain=DOMÄN Domänen att bläddra i\n"
+
+#: ../avahi-ui/bssh.c:103
+#: ../avahi-utils/avahi-browse.c:759
+#, c-format
+msgid "Too many arguments\n"
+msgstr "För många argument\n"
+
+#: ../avahi-ui/bssh.c:147
+msgid "Choose Shell Server"
+msgstr "Välj skalserver"
+
+#: ../avahi-ui/bssh.c:149
+msgid "Desktop"
+msgstr "Skrivbord"
+
+#: ../avahi-ui/bssh.c:150
+msgid "Terminal"
+msgstr "Terminal"
+
+#: ../avahi-ui/bssh.c:154
+msgid "Choose VNC server"
+msgstr "Välj VNC-server"
+
+#: ../avahi-ui/bssh.c:159
+msgid "Choose SSH server"
+msgstr "Välj SSH-server"
+
+#: ../avahi-ui/bssh.c:183
+#, c-format
+msgid "Connecting to '%s' ...\n"
+msgstr "Ansluter till \"%s\"...\n"
+
+#: ../avahi-ui/bssh.c:238
+#, c-format
+msgid "execlp() failed: %s\n"
+msgstr "execlp() misslyckades: %s\n"
+
+#: ../avahi-ui/bssh.c:248
+#, c-format
+msgid "Canceled.\n"
+msgstr "Avbruten.\n"
+
+#: ../avahi-ui/bssh.desktop.in.in.h:1
+msgid "Avahi SSH Server Browser"
+msgstr "Avahi SSH-serverbläddrare"
+
+#: ../avahi-ui/bssh.desktop.in.in.h:2
+msgid "Browse for Zeroconf-enabled SSH Servers"
+msgstr "Bläddra efter Zeroconf-aktiverade SSH-servrar"
+
+#: ../avahi-ui/bvnc.desktop.in.in.h:1
+msgid "Avahi VNC Server Browser"
+msgstr "Avahi VNC-serverbläddrare"
+
+#: ../avahi-ui/bvnc.desktop.in.in.h:2
+msgid "Browse for Zeroconf-enabled VNC Servers"
+msgstr "Bläddra efter Zeroconf-aktiverade VNC-servrar"
+
+#: ../avahi-utils/avahi-browse.c:108
+#, c-format
+msgid ": All for now\n"
+msgstr ": Alla just nu\n"
+
+#: ../avahi-utils/avahi-browse.c:119
+#, c-format
+msgid ": Cache exhausted\n"
+msgstr ": Cachen är full\n"
+
+#: ../avahi-utils/avahi-browse.c:223
+#: ../avahi-utils/avahi-browse.c:245
+#, c-format
+msgid "Failed to resolve service '%s' of type '%s' in domain '%s': %s\n"
+msgstr "Misslyckades med att slå upp tjänsten \"%s\" av typen \"%s\" i domänen \"%s\": %s\n"
+
+#: ../avahi-utils/avahi-browse.c:324
+#, c-format
+msgid "service_browser failed: %s\n"
+msgstr "service_browser misslyckades: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:362
+#, c-format
+msgid "avahi_service_browser_new() failed: %s\n"
+msgstr "avahi_service_browser_new() misslyckades: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:398
+#, c-format
+msgid "service_type_browser failed: %s\n"
+msgstr "service_type_browser misslyckades: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:428
+#, c-format
+msgid "avahi_service_type_browser_new() failed: %s\n"
+msgstr "avahi_service_type_browser_new() misslyckades: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:503
+#, c-format
+msgid "avahi_domain_browser_new() failed: %s\n"
+msgstr "avahi_domain_browser_new() misslyckades: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:519
+#: ../avahi-utils/avahi-publish.c:391
+#: ../avahi-utils/avahi-resolve.c:282
+#: ../avahi-utils/avahi-set-host-name.c:170
+#, c-format
+msgid "Failed to query version string: %s\n"
+msgstr "Misslyckades med att fråga efter versionssträng: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:524
+#: ../avahi-utils/avahi-publish.c:396
+#: ../avahi-utils/avahi-resolve.c:287
+#: ../avahi-utils/avahi-set-host-name.c:175
+#: ../avahi-utils/avahi-set-host-name.c:191
+#, c-format
+msgid "Failed to query host name: %s\n"
+msgstr "Misslyckades med att fråga efter värdnamn: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:528
+#: ../avahi-utils/avahi-publish.c:400
+#: ../avahi-utils/avahi-resolve.c:291
+#: ../avahi-utils/avahi-set-host-name.c:179
+#, c-format
+msgid "Server version: %s; Host name: %s\n"
+msgstr "Serverversion: %s; Värdnamn: %s\n"
+
+#. Translators: This is a column heading with abbreviations for
+#. * Event (+/-), Network Interface, Protocol (IPv4/v6), Domain
+#: ../avahi-utils/avahi-browse.c:533
+#, c-format
+msgid "E Ifce Prot Domain\n"
+msgstr "H Grän Prot Domän\n"
+
+#. Translators: This is a column heading with abbreviations for
+#. * Event (+/-), Network Interface, Protocol (IPv4/v6), Domain
+#: ../avahi-utils/avahi-browse.c:537
+#, c-format
+msgid "E Ifce Prot %-*s %-20s Domain\n"
+msgstr "H Grän Prot %-*s %-20s Domän\n"
+
+#: ../avahi-utils/avahi-browse.c:537
+msgid "Name"
+msgstr "Namn"
+
+#: ../avahi-utils/avahi-browse.c:537
+msgid "Type"
+msgstr "Typ"
+
+#. We have been disconnected, so let reconnect
+#: ../avahi-utils/avahi-browse.c:569
+#: ../avahi-utils/avahi-publish.c:165
+#, c-format
+msgid "Disconnected, reconnecting ...\n"
+msgstr "Frånkopplad, återansluter ...\n"
+
+#: ../avahi-utils/avahi-browse.c:583
+#: ../avahi-utils/avahi-browse.c:813
+#: ../avahi-utils/avahi-publish.c:172
+#: ../avahi-utils/avahi-publish.c:383
+#: ../avahi-utils/avahi-resolve.c:274
+#: ../avahi-utils/avahi-set-host-name.c:162
+#, c-format
+msgid "Failed to create client object: %s\n"
+msgstr "Misslyckades med att skapa klientobjekt: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:588
+#: ../avahi-utils/avahi-publish.c:177
+#: ../avahi-utils/avahi-resolve.c:145
+#: ../avahi-utils/avahi-set-host-name.c:61
+#, c-format
+msgid "Client failure, exiting: %s\n"
+msgstr "Klientfel, avslutar: %s\n"
+
+#: ../avahi-utils/avahi-browse.c:607
+#: ../avahi-utils/avahi-publish.c:208
+#, c-format
+msgid "Waiting for daemon ...\n"
+msgstr "Väntar på demon ...\n"
+
+#: ../avahi-utils/avahi-browse.c:631
+msgid ""
+" -h --help Show this help\n"
+" -V --version Show version\n"
+" -D --browse-domains Browse for browsing domains instead of services\n"
+" -a --all Show all services, regardless of the type\n"
+" -d --domain=DOMAIN The domain to browse in\n"
+" -v --verbose Enable verbose mode\n"
+" -t --terminate Terminate after dumping a more or less complete list\n"
+" -c --cache Terminate after dumping all entries from the cache\n"
+" -l --ignore-local Ignore local services\n"
+" -r --resolve Resolve services found\n"
+" -f --no-fail Don't fail if the daemon is not available\n"
+" -p --parsable Output in parsable format\n"
+msgstr ""
+" -h --help Visa denna hjälp\n"
+" -V --version Visa version\n"
+" -D --browse-domains Bläddra efter bläddringsdomäner istället för tjänster\n"
+" -a --all Visa alla tjänster, oavsett typen\n"
+" -d --domain=DOMÄN Domänen att bläddra i\n"
+" -v --verbose Aktivera informativt läge\n"
+" -t --terminate Avsluta efter dumpning av en mer eller mindre komplett lista\n"
+" -c --cache Avsluta efter dumpning av alla poster från cachen\n"
+" -l --ignore-local Ignorera lokala tjänster\n"
+" -r --resolve Slå upp tjänster som hittats\n"
+" -f --no-fail Misslycka inte om demonen inte är tillgänglig\n"
+" -p --parsable Skriv ut i tolkningsbart format\n"
+
+#: ../avahi-utils/avahi-browse.c:644
+msgid ""
+" -k --no-db-lookup Don't lookup service types\n"
+" -b --dump-db Dump service type database\n"
+msgstr ""
+" -k --no-db-lookup Slå inte upp tjänstetyper\n"
+" -b --dump-db Dumpa databasen över tjänstetyper\n"
+
+#: ../avahi-utils/avahi-browse.c:750
+#: ../avahi-utils/avahi-resolve.c:221
+#, c-format
+msgid "Too few arguments\n"
+msgstr "För få argument\n"
+
+#: ../avahi-utils/avahi-browse.c:805
+#: ../avahi-utils/avahi-publish.c:375
+#: ../avahi-utils/avahi-resolve.c:266
+#: ../avahi-utils/avahi-set-host-name.c:154
+#, c-format
+msgid "Failed to create simple poll object.\n"
+msgstr "Misslyckades med att skapa enkelt poll-objekt: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:78
+#, c-format
+msgid "Established under name '%s'\n"
+msgstr "Etablerad under namnet \"%s\"\n"
+
+#: ../avahi-utils/avahi-publish.c:83
+#, c-format
+msgid "Failed to register: %s\n"
+msgstr "Misslyckades att registrera: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:96
+#, c-format
+msgid "Name collision, picking new name '%s'.\n"
+msgstr "Namnkollision, väljer nytt namn \"%s\".\n"
+
+#: ../avahi-utils/avahi-publish.c:116
+#, c-format
+msgid "Failed to create entry group: %s\n"
+msgstr "Misslyckades med att skapa postgrupp: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:126
+#, c-format
+msgid "Failed to add address: %s\n"
+msgstr "Misslyckades att lägga till adress: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:136
+#, c-format
+msgid "Failed to add service: %s\n"
+msgstr "Misslyckades att lägga till tjänst: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:142
+#, c-format
+msgid "Failed to add subtype '%s': %s\n"
+msgstr "Misslyckades med att lägga till undertypen \"%s\": %s\n"
+
+#: ../avahi-utils/avahi-publish.c:193
+#, c-format
+msgid "Host name conflict\n"
+msgstr "Värdnamnskonflikt\n"
+
+#: ../avahi-utils/avahi-publish.c:218
+#, c-format
+msgid ""
+"%s [options] %s <name> <type> <port> [<txt ...>]\n"
+"%s [options] %s <host-name> <address>\n"
+"\n"
+" -h --help Show this help\n"
+" -V --version Show version\n"
+" -s --service Publish service\n"
+" -a --address Publish address\n"
+" -v --verbose Enable verbose mode\n"
+" -d --domain=DOMAIN Domain to publish service in\n"
+" -H --host=DOMAIN Host where service resides\n"
+" --subtype=SUBTYPE An additional subtype to register this service with\n"
+" -f --no-fail Don't fail if the daemon is not available\n"
+msgstr ""
+"%s [flaggor] %s <namn> <typ> <port> [<txt ...>]\n"
+"%s [flaggor] %s <värdnamn> <adress>\n"
+"\n"
+" -h --help Visa denna hjälp\n"
+" -V --version Visa version\n"
+" -s --service Publicera tjänst\n"
+" -a --address Publicera adress\n"
+" -v --verbose Aktivera informativt läge\n"
+" -d --domain=DOMÄN Domän att publicera tjänst i\n"
+" -H --host=DOMÄN Värd där tjänsten finns\n"
+" --subtype=UNDERTYP En ytterligare undertyp att registrera denna tjänst med\n"
+" -f --no-fail Misslycka inte om demonen inte är tillgänglig\n"
+
+#: ../avahi-utils/avahi-publish.c:300
+#: ../avahi-utils/avahi-publish.c:315
+#, c-format
+msgid "Bad number of arguments\n"
+msgstr "Dåligt antal argument\n"
+
+#: ../avahi-utils/avahi-publish.c:326
+#, c-format
+msgid "Failed to parse port number: %s\n"
+msgstr "Misslyckades med att tolka portnummer: %s\n"
+
+#: ../avahi-utils/avahi-publish.c:358
+#: ../avahi-utils/avahi-resolve.c:248
+#, c-format
+msgid "No command specified.\n"
+msgstr "Inget kommando specificerat.\n"
+
+#: ../avahi-utils/avahi-resolve.c:91
+#, c-format
+msgid "Failed to resolve host name '%s': %s\n"
+msgstr "Misslyckades med att slå upp värdnamnet \"%s\": %s\n"
+
+#: ../avahi-utils/avahi-resolve.c:128
+#, c-format
+msgid "Failed to resolve address '%s': %s\n"
+msgstr "Misslyckades med att slå upp adressen \"%s\": %s\n"
+
+#: ../avahi-utils/avahi-resolve.c:159
+#, c-format
+msgid ""
+"%s [options] %s <host name ...>\n"
+"%s [options] %s <address ... >\n"
+"\n"
+" -h --help Show this help\n"
+" -V --version Show version\n"
+" -n --name Resolve host name\n"
+" -a --address Resolve address\n"
+" -v --verbose Enable verbose mode\n"
+" -6 Lookup IPv6 address\n"
+" -4 Lookup IPv4 address\n"
+msgstr ""
+"%s [flaggor] %s <värdnamn ...>\n"
+"%s [flaggor] %s <adress ... >\n"
+"\n"
+" -h --help Visa denna hjälp\n"
+" -V --version Visa version\n"
+" -n --name Slå upp värdnamn\n"
+" -a --address Slå upp adress\n"
+" -v --verbose Aktivera informativt läge\n"
+" -6 Slå upp IPv6-adress\n"
+" -4 Slå upp IPv4-adress\n"
+
+#: ../avahi-utils/avahi-resolve.c:301
+#: ../avahi-utils/avahi-set-host-name.c:183
+#, c-format
+msgid "Failed to create host name resolver: %s\n"
+msgstr "Misslyckades med att skapa uppslagare för värdnamn: %s\n"
+
+#: ../avahi-utils/avahi-resolve.c:311
+#, c-format
+msgid "Failed to parse address '%s'\n"
+msgstr "Misslyckades med att tolka adressen \"%s\"\n"
+
+#: ../avahi-utils/avahi-resolve.c:316
+#, c-format
+msgid "Failed to create address resolver: %s\n"
+msgstr "Misslyckades med att skapa adressuppslagare: %s\n"
+
+#: ../avahi-utils/avahi-set-host-name.c:75
+#, c-format
+msgid ""
+"%s [options] <new host name>\n"
+"\n"
+" -h --help Show this help\n"
+" -V --version Show version\n"
+" -v --verbose Enable verbose mode\n"
+msgstr ""
+"%s [flaggor] <nytt värdnamn>\n"
+"\n"
+" -h --help Visa denna hjälp\n"
+" -V --version Visa version\n"
+" -v --verbose Aktivera informativt läge\n"
+
+#: ../avahi-utils/avahi-set-host-name.c:116
+#, c-format
+msgid "Invalid number of arguments, expecting exactly one.\n"
+msgstr "Ogiltigt antal argument, exakt ett argument förväntas.\n"
+
+#: ../avahi-utils/avahi-set-host-name.c:195
+#, c-format
+msgid "Host name successfully changed to %s\n"
+msgstr "Värdnamnet ändrades till %s\n"
+