]> git.meshlink.io Git - catta/commitdiff
Merge branch 'master' of ssh://rootserver/home/lennart/git/public/avahi
authorLennart Poettering <lennart@poettering.net>
Thu, 5 Mar 2009 10:04:40 +0000 (11:04 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 5 Mar 2009 10:04:40 +0000 (11:04 +0100)
44 files changed:
avahi-autoipd/main.c
avahi-client/client.c
avahi-common/Makefile.am
avahi-common/address.c
avahi-common/gccmacro.h
avahi-common/malloc.h
avahi-common/thread-watch.c
avahi-core/core.h
avahi-core/iface-pfroute.c
avahi-core/iface.c
avahi-core/server.c
avahi-daemon/Makefile.am
avahi-daemon/avahi-daemon.conf
avahi-daemon/inotify-nosys.h [deleted file]
avahi-daemon/main.c
avahi-discover-standalone/Makefile.am
avahi-dnsconfd/avahi-dnsconfd.action
avahi-python/Makefile.am
avahi-python/avahi-bookmarks.in
avahi-python/avahi-discover/Makefile.am
avahi-python/avahi-discover/avahi-discover.desktop.in [deleted file]
avahi-python/avahi-discover/avahi-discover.desktop.in.in [new file with mode: 0644]
avahi-python/avahi-discover/avahi-discover.in
avahi-python/avahi/Makefile.am
avahi-ui/Makefile.am
avahi-ui/avahi-ui.c
avahi-ui/avahi-ui.h
avahi-ui/bssh.c
common/.gitignore
configure.ac
docs/NEWS
initscript/fedora/avahi-daemon.in
initscript/fedora/avahi-dnsconfd.in
man/Makefile.am
man/avahi-daemon.conf.5.xml.in
po/LINGUAS
po/POTFILES.in
po/POTFILES.skip
po/de.po
po/es.po
po/fi.po [new file with mode: 0644]
po/hu.po [new file with mode: 0644]
po/it.po
po/sv.po [new file with mode: 0644]

index ef529b9337c253ba48d6549f676dd539cf3b42e8..eb71c3b97a14e22e6793565a0f1d2388924bf251 100644 (file)
@@ -1281,7 +1281,7 @@ static int loop(int iface, uint32_t addr) {
                     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.");
 
@@ -1306,7 +1306,7 @@ static int loop(int iface, uint32_t addr) {
             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.");
index f665613c0598e09dc3199620a38bbab0bcdc92b3..389a3d11ce0bedcc17b2dfdd79cb1a41ba90b963 100644 (file)
@@ -2,17 +2,17 @@
 
 /***
   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
@@ -75,9 +75,9 @@ static void client_set_state (AvahiClient *client, AvahiServerState state) {
                 dbus_connection_unref(client->bus);
                 client->bus = NULL;
             }
-            
+
             /* Fall through */
-            
+
         case AVAHI_CLIENT_S_COLLISION:
         case AVAHI_CLIENT_S_REGISTERING:
 
@@ -94,9 +94,9 @@ static void client_set_state (AvahiClient *client, AvahiServerState state) {
         case AVAHI_CLIENT_S_RUNNING:
         case AVAHI_CLIENT_CONNECTING:
             break;
-            
+
     }
-    
+
     if (client->callback)
         client->callback (client, state, client->userdata);
 }
@@ -107,7 +107,7 @@ static DBusHandlerResult filter_func(DBusConnection *bus, DBusMessage *message,
 
     assert(bus);
     assert(message);
-    
+
     dbus_error_init(&error);
 
 /*     fprintf(stderr, "dbus: interface=%s, path=%s, member=%s\n", */
@@ -124,10 +124,10 @@ static DBusHandlerResult filter_func(DBusConnection *bus, DBusMessage *message,
     } 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,
@@ -149,12 +149,12 @@ static DBusHandlerResult filter_func(DBusConnection *bus, DBusMessage *message,
                  * 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;
@@ -163,14 +163,14 @@ static DBusHandlerResult filter_func(DBusConnection *bus, DBusMessage *message,
         }
 
     } 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,
@@ -184,7 +184,7 @@ static DBusHandlerResult filter_func(DBusConnection *bus, DBusMessage *message,
 
         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")) {
@@ -195,12 +195,12 @@ static DBusHandlerResult filter_func(DBusConnection *bus, DBusMessage *message,
         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,
@@ -215,79 +215,79 @@ static DBusHandlerResult filter_func(DBusConnection *bus, DBusMessage *message,
 
             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:
@@ -298,7 +298,7 @@ fail:
     }
 
     client_set_state(client, AVAHI_CLIENT_FAILURE);
-    
+
     return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
 }
 
@@ -307,7 +307,7 @@ static int get_server_state(AvahiClient *client, int *ret_error) {
     DBusError error;
     int32_t state;
     int e = AVAHI_ERR_NO_MEMORY;
-    
+
     assert(client);
 
     dbus_error_init(&error);
@@ -328,15 +328,15 @@ static int get_server_state(AvahiClient *client, int *ret_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;
 
@@ -344,7 +344,7 @@ fail:
         dbus_message_unref(message);
     if (reply)
         dbus_message_unref(reply);
-    
+
     return e;
 }
 
@@ -353,7 +353,7 @@ static int check_version(AvahiClient *client, int *ret_error) {
     DBusError error;
     uint32_t version;
     int e = AVAHI_ERR_NO_MEMORY;
-    
+
     assert(client);
 
     dbus_error_init(&error);
@@ -372,7 +372,7 @@ static int check_version(AvahiClient *client, int *ret_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);
@@ -381,25 +381,25 @@ static int check_version(AvahiClient *client, int *ret_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;
@@ -408,14 +408,14 @@ static int check_version(AvahiClient *client, int *ret_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;
@@ -424,13 +424,13 @@ fail:
         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;
 
@@ -448,14 +448,14 @@ static DBusConnection* avahi_dbus_bus_get(DBusError *error) {
 #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;
 
@@ -479,6 +479,8 @@ AvahiClient *avahi_client_new(const AvahiPoll *poll_api, AvahiClientFlags flags,
     AvahiClient *client = NULL;
     DBusError error;
 
+    avahi_init_i18n();
+
     dbus_error_init(&error);
 
     if (!(client = avahi_new(AvahiClient, 1))) {
@@ -493,13 +495,13 @@ AvahiClient *avahi_client_new(const AvahiPoll *poll_api, AvahiClientFlags flags,
     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);
@@ -523,10 +525,10 @@ AvahiClient *avahi_client_new(const AvahiPoll *poll_api, AvahiClientFlags flags,
 
     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', "
@@ -567,17 +569,17 @@ AvahiClient *avahi_client_new(const AvahiPoll *poll_api, AvahiClientFlags flags,
         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)
@@ -600,10 +602,10 @@ fail:
             else
                 *ret_error = avahi_error_dbus_to_number(error.name);
         }
-        
+
         dbus_error_free(&error);
     }
-        
+
     return NULL;
 }
 
@@ -618,7 +620,7 @@ void avahi_client_free(AvahiClient *client) {
 #else
         dbus_connection_disconnect(client->bus);
 #endif
-    
+
     while (client->groups)
         avahi_entry_group_free(client->groups);
 
@@ -642,7 +644,7 @@ void avahi_client_free(AvahiClient *client) {
 
     while (client->record_browsers)
         avahi_record_browser_free(client->record_browsers);
-    
+
     if (client->bus)
         dbus_connection_unref(client->bus);
 
@@ -650,7 +652,7 @@ void avahi_client_free(AvahiClient *client) {
     avahi_free(client->host_name);
     avahi_free(client->host_name_fqdn);
     avahi_free(client->domain_name);
-    
+
     avahi_free(client);
 }
 
@@ -675,7 +677,7 @@ static char* avahi_client_get_string_reply_and_block (AvahiClient *client, const
             goto fail;
         }
     }
-    
+
     reply = dbus_connection_send_with_reply_and_block (client->bus, message, -1, &error);
 
     if (!reply || dbus_error_is_set (&error))
@@ -684,7 +686,7 @@ static char* avahi_client_get_string_reply_and_block (AvahiClient *client, const
     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;
@@ -692,7 +694,7 @@ static char* avahi_client_get_string_reply_and_block (AvahiClient *client, const
 
     dbus_message_unref(message);
     dbus_message_unref(reply);
-    
+
     return n;
 
 fail:
@@ -701,7 +703,7 @@ 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);
@@ -734,13 +736,13 @@ const char* avahi_client_get_domain_name(AvahiClient *client) {
 
     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;
@@ -748,7 +750,7 @@ const char* avahi_client_get_host_name(AvahiClient *client) {
 
     if (!client->host_name)
         client->host_name = avahi_client_get_string_reply_and_block(client, "GetHostName", NULL);
-    
+
     return client->host_name;
 }
 
@@ -759,7 +761,7 @@ const char* avahi_client_get_host_name_fqdn (AvahiClient *client) {
         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);
 
@@ -774,7 +776,7 @@ AvahiClientState avahi_client_get_state(AvahiClient *client) {
 
 int avahi_client_errno(AvahiClient *client) {
     assert(client);
-    
+
     return client->error;
 }
 
@@ -783,25 +785,25 @@ int avahi_client_simple_method_call(AvahiClient *client, const char *path, const
     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);
@@ -812,7 +814,7 @@ int avahi_client_simple_method_call(AvahiClient *client, const char *path, const
     dbus_message_unref(reply);
 
     return AVAHI_OK;
-    
+
 fail:
     if (dbus_error_is_set(&error)) {
         r = avahi_client_set_dbus_error(client, &error);
@@ -856,7 +858,7 @@ uint32_t avahi_client_get_local_service_cookie(AvahiClient *client) {
     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);
 
@@ -869,7 +871,7 @@ 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);
@@ -892,7 +894,7 @@ int avahi_client_set_host_name(AvahiClient* client, const char *name) {
     DBusError error;
 
     assert(client);
-    
+
     if (!avahi_client_is_connected(client))
         return avahi_client_set_errno(client, AVAHI_ERR_BAD_STATE);
 
@@ -907,7 +909,7 @@ int avahi_client_set_host_name(AvahiClient* client, const char *name) {
         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))
@@ -924,7 +926,7 @@ int avahi_client_set_host_name(AvahiClient* client, const char *name) {
     client->host_name = NULL;
     avahi_free(client->host_name_fqdn);
     client->host_name_fqdn = NULL;
-    
+
     return 0;
 
 fail:
@@ -933,7 +935,7 @@ 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);
index b00cd789228a99cfe2373818b32a95d3b3e673fd..b4bc917eb2cc08fc72adaabe9522283a1f578338 100644 (file)
@@ -71,7 +71,7 @@ libavahi_common_la_SOURCES = \
        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 = \
index c8ddf7fd72975e88b5d75130e9a2a477fb0eddf1..270292c60794a4b995c758e09c01e63a23e5d79a 100644 (file)
@@ -2,17 +2,17 @@
 
 /***
   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
@@ -48,7 +48,7 @@ static size_t address_get_size(const AvahiAddress *a) {
 int avahi_address_cmp(const AvahiAddress *a, const AvahiAddress *b) {
     assert(a);
     assert(b);
-    
+
     if (a->proto != b->proto)
         return -1;
 
@@ -59,10 +59,10 @@ char *avahi_address_snprint(char *s, size_t length, const AvahiAddress *a) {
     assert(s);
     assert(length);
     assert(a);
-    
+
     if (!(inet_ntop(avahi_proto_to_af(a->proto), a->data.data, s, length)))
         return NULL;
-    
+
     return s;
 }
 
@@ -119,10 +119,10 @@ AvahiAddress *avahi_address_parse(const char *s, AvahiProtocol proto, AvahiAddre
     } else {
         if (inet_pton(avahi_proto_to_af(proto), s, ret_addr->data.data) <= 0)
             return NULL;
-        
+
         ret_addr->proto = proto;
     }
-    
+
     return ret_addr;
 }
 
index 78a09a73fd99208d20e8adb057b6e380407f6d90..dd495022929840c112991161c24d76560f5162a9 100644 (file)
 
 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
index 2430199290dfab668ad065f7fcd835d44a88335f..511b51c0328bce73ff8a75064096476cafc10c1b 100644 (file)
 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);
 }
@@ -56,7 +56,7 @@ static inline void* avahi_new_internal(unsigned n, size_t 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);
 }
@@ -71,14 +71,14 @@ char *avahi_strdup(const char *s);
 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)
index 1a5d9d245dd9183daa5bcc959617bded507589da..4f236081d9c55f2cdfa52ca9cce5bffead6683a7 100644 (file)
@@ -2,17 +2,17 @@
 
 /***
   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
@@ -53,7 +53,7 @@ static int poll_func(struct pollfd *ufds, unsigned int nfds, int timeout, void *
 
     /* 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);
@@ -68,11 +68,11 @@ static void* thread(void *userdata){
     /* 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;
 }
 
@@ -81,14 +81,14 @@ AvahiThreadedPoll *avahi_threaded_poll_new(void) {
 
     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;
@@ -136,6 +136,8 @@ int avahi_threaded_poll_start(AvahiThreadedPoll *p) {
     if (pthread_create(&p->thread_id, NULL, thread, p) < 0)
         return -1;
 
+    p->thread_running = 1;
+
     return 0;
 }
 
@@ -151,7 +153,7 @@ int avahi_threaded_poll_stop(AvahiThreadedPoll *p) {
     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;
 
@@ -172,7 +174,7 @@ void avahi_threaded_poll_lock(AvahiThreadedPoll *p) {
 
     /* 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);
 }
 
@@ -181,6 +183,6 @@ void avahi_threaded_poll_unlock(AvahiThreadedPoll *p) {
 
     /* 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);
 }
index 55aafe2e8ce34a75d96af11c304e27ceef2e91d1..94d19700271d73435f456c148bc3d41182d532f7 100644 (file)
@@ -47,6 +47,8 @@ typedef struct AvahiServerConfig {
     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 */
index f96bfc2924f827322d1ac090586fc6e4fb441c03..391081eeca6d2318e25729848cc4bb085afae527 100644 (file)
@@ -125,7 +125,7 @@ static void rtm_addr(struct rt_msghdr *rtm, AvahiInterfaceMonitor *m)
   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;
@@ -135,17 +135,30 @@ static void rtm_addr(struct rt_msghdr *rtm, AvahiInterfaceMonitor *m)
     ((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
@@ -172,6 +185,13 @@ static void rtm_addr(struct rt_msghdr *rtm, AvahiInterfaceMonitor *m)
          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;
@@ -196,9 +216,12 @@ static void rtm_addr(struct rt_msghdr *rtm, AvahiInterfaceMonitor *m)
       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
     {
index 8098de4a38bb335465feaebbab7c9af5d0947755..5fbfc199c6c4fe9a7439f920c5d9b3f20baaca77 100644 (file)
@@ -2,17 +2,17 @@
 
 /***
   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
@@ -59,19 +59,19 @@ void avahi_interface_address_update_rrs(AvahiInterfaceAddress *a, int remove_rrs
         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));
 
@@ -97,15 +97,15 @@ void avahi_interface_address_update_rrs(AvahiInterfaceAddress *a, int remove_rrs
                 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)
@@ -132,21 +132,21 @@ void avahi_hw_interface_update_rrs(AvahiHwInterface *hw, int remove_rrs) {
 
         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)) {
@@ -179,7 +179,7 @@ static int interface_mdns_mcast_join(AvahiInterface *i, int join) {
     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;
 
@@ -210,7 +210,7 @@ static int interface_mdns_mcast_join(AvahiInterface *i, int join) {
         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);
     }
 
@@ -218,7 +218,7 @@ static int interface_mdns_mcast_join(AvahiInterface *i, int join) {
         i->mcast_joined = 0;
     else
         i->mcast_joined = join;
-    
+
     return 0;
 }
 
@@ -231,11 +231,11 @@ static int interface_mdns_mcast_rejoin(AvahiInterface *i) {
 
     /* 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)
@@ -250,7 +250,7 @@ static int interface_mdns_mcast_rejoin(AvahiInterface *i) {
     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);
 }
@@ -266,7 +266,7 @@ void avahi_interface_address_free(AvahiInterfaceAddress *a) {
         avahi_s_entry_group_free(a->entry_group);
 
     interface_mdns_mcast_rejoin(a->interface);
-    
+
     avahi_free(a);
 }
 
@@ -280,14 +280,14 @@ void avahi_interface_free(AvahiInterface *i, int send_goodbye) {
 
     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);
 
@@ -295,10 +295,10 @@ void avahi_interface_free(AvahiInterface *i, int send_goodbye) {
     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);
 }
 
@@ -306,13 +306,13 @@ void avahi_hw_interface_free(AvahiHwInterface *hw, int send_goodbye) {
     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);
 
@@ -322,14 +322,14 @@ void avahi_hw_interface_free(AvahiHwInterface *hw, int send_goodbye) {
 
 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;
@@ -354,7 +354,7 @@ AvahiInterface* avahi_interface_new(AvahiInterfaceMonitor *m, AvahiHwInterface *
     AVAHI_LLIST_PREPEND(AvahiInterface, interface, m->interfaces, i);
 
     return i;
-    
+
 fail:
 
     if (i) {
@@ -373,13 +373,13 @@ fail:
 
 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;
@@ -390,7 +390,7 @@ AvahiHwInterface *avahi_hw_interface_new(AvahiInterfaceMonitor *m, AvahiIfIndex
 
     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)
@@ -441,7 +441,7 @@ void avahi_interface_check_relevant(AvahiInterface *i) {
             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));
 
@@ -456,14 +456,14 @@ void avahi_interface_check_relevant(AvahiInterface *i) {
         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)
@@ -484,7 +484,7 @@ AvahiInterfaceMonitor *avahi_interface_monitor_new(AvahiServer *s) {
 
     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);
@@ -511,7 +511,7 @@ void avahi_interface_monitor_free(AvahiInterfaceMonitor *m) {
     assert(!m->interfaces);
 
     avahi_interface_monitor_free_osdep(m);
-    
+
     if (m->hashmap)
         avahi_hashmap_free(m->hashmap);
 
@@ -522,7 +522,7 @@ void avahi_interface_monitor_free(AvahiInterfaceMonitor *m) {
 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);
@@ -546,7 +546,7 @@ AvahiHwInterface* avahi_interface_monitor_get_hw_interface(AvahiInterfaceMonitor
 
 AvahiInterfaceAddress* avahi_interface_monitor_get_address(AvahiInterfaceMonitor *m, AvahiInterface *i, const AvahiAddress *raddr) {
     AvahiInterfaceAddress *ia;
-    
+
     assert(m);
     assert(i);
     assert(raddr);
@@ -564,7 +564,7 @@ void avahi_interface_send_packet_unicast(AvahiInterface *i, AvahiDnsPacket *p, c
 
     if (!i->announcing)
         return;
-    
+
     assert(!a || a->proto == i->protocol);
 
     if (i->protocol == AVAHI_PROTO_INET && i->monitor->server->fd_ipv4 >= 0)
@@ -586,7 +586,7 @@ int avahi_interface_post_query(AvahiInterface *i, AvahiKey *key, int immediately
 
     if (!i->announcing)
         return 0;
-    
+
     return avahi_query_scheduler_post(i->query_scheduler, key, immediately, ret_id);
 }
 
@@ -601,14 +601,14 @@ int avahi_interface_post_response(AvahiInterface *i, AvahiRecord *record, int fl
 
     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;
 
@@ -632,21 +632,42 @@ int avahi_dump_caches(AvahiInterfaceMonitor *m, AvahiDumpCallback callback, void
     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);
@@ -655,12 +676,12 @@ int avahi_interface_address_is_relevant(AvahiInterfaceAddress *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;
         }
@@ -673,7 +694,7 @@ int avahi_interface_address_is_relevant(AvahiInterfaceAddress *a) {
 
 int avahi_interface_match(AvahiInterface *i, AvahiIfIndex idx, AvahiProtocol protocol) {
     assert(i);
-    
+
     if (idx != AVAHI_IF_UNSPEC && idx != i->hardware->index)
         return 0;
 
@@ -686,14 +707,14 @@ int avahi_interface_match(AvahiInterface *i, AvahiIfIndex idx, AvahiProtocol pro
 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;
@@ -703,10 +724,10 @@ void avahi_interface_monitor_walk(AvahiInterfaceMonitor *m, AvahiIfIndex interfa
                     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);
@@ -730,7 +751,7 @@ int avahi_address_is_local(AvahiInterfaceMonitor *m, const AvahiAddress *a) {
 
 int avahi_interface_address_on_link(AvahiInterface *i, const AvahiAddress *a) {
     AvahiInterfaceAddress *ia;
-    
+
     assert(i);
     assert(a);
 
@@ -741,9 +762,9 @@ int avahi_interface_address_on_link(AvahiInterface *i, const AvahiAddress *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 {
@@ -752,13 +773,13 @@ int avahi_interface_address_on_link(AvahiInterface *i, const AvahiAddress *a) {
             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;
@@ -766,7 +787,7 @@ int avahi_interface_address_on_link(AvahiInterface *i, const AvahiAddress *a) {
                     m = ~(0xFF >> pl);
                     pl = 0;
                 }
-                
+
                 if ((a->data.ipv6.address[j] & m) != (ia->address.data.ipv6.address[j] & m))
                     break;
             }
@@ -779,7 +800,7 @@ int avahi_interface_address_on_link(AvahiInterface *i, const AvahiAddress *a) {
 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);
@@ -809,7 +830,7 @@ AvahiIfIndex avahi_find_interface_for_address(AvahiInterfaceMonitor *m, const Av
 
         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;
index 453db092fd9afd6e892cb45dca5f86fb4d047294..73ae1cb17c074817c6f2104399d89b7beabaea3e 100644 (file)
@@ -2,17 +2,17 @@
 
 /***
   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
@@ -59,7 +59,7 @@ static void enum_aux_records(AvahiServer *s, AvahiInterface *i, const char *name
 
     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) &&
@@ -70,14 +70,14 @@ static void enum_aux_records(AvahiServer *s, AvahiInterface *i, const char *name
     } 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);
     }
 }
@@ -89,7 +89,7 @@ void avahi_server_enumerate_aux_records(AvahiServer *s, AvahiInterface *i, Avahi
     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);
@@ -121,7 +121,7 @@ void avahi_server_prepare_matching_responses(AvahiServer *s, AvahiInterface *i,
         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);
@@ -130,7 +130,7 @@ void avahi_server_prepare_matching_responses(AvahiServer *s, AvahiInterface *i,
         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);
@@ -145,7 +145,7 @@ void avahi_server_prepare_matching_responses(AvahiServer *s, AvahiInterface *i,
 
         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);
     }
@@ -160,11 +160,11 @@ static void withdraw_entry(AvahiServer *s, AvahiEntry *e) {
 
     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;
@@ -183,12 +183,12 @@ static void withdraw_entry(AvahiServer *s, AvahiEntry *e) {
 
 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);
 }
@@ -196,25 +196,25 @@ static void withdraw_rrset(AvahiServer *s, AvahiKey *key) {
 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;
@@ -226,14 +226,14 @@ static void incoming_probe(AvahiServer *s, AvahiRecord *record, AvahiInterface *
 
     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);
     }
 }
@@ -241,13 +241,13 @@ static void incoming_probe(AvahiServer *s, AvahiRecord *record, AvahiInterface *
 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;
 
@@ -261,7 +261,7 @@ static int handle_conflict(AvahiServer *s, AvahiInterface *i, AvahiRecord *recor
                 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);
 
@@ -273,36 +273,36 @@ static int handle_conflict(AvahiServer *s, AvahiInterface *i, AvahiRecord *recor
             /* 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;
@@ -320,11 +320,11 @@ static int handle_conflict(AvahiServer *s, AvahiInterface *i, AvahiRecord *recor
 
     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);
@@ -349,7 +349,7 @@ static void append_aux_callback(AvahiServer *s, AvahiRecord *r, int flush_cache,
     assert(s);
     assert(r);
     assert(unicast_response);
-    
+
     avahi_record_list_push(s->record_list, r, flush_cache, *unicast_response, 1);
 }
 
@@ -372,11 +372,11 @@ void avahi_server_generate_response(AvahiServer *s, AvahiInterface *i, AvahiDnsP
 
         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 {
@@ -402,7 +402,7 @@ void avahi_server_generate_response(AvahiServer *s, AvahiInterface *i, AvahiDnsP
         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;
@@ -411,7 +411,7 @@ void avahi_server_generate_response(AvahiServer *s, AvahiInterface *i, AvahiDnsP
              * 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;
 
@@ -422,21 +422,21 @@ void avahi_server_generate_response(AvahiServer *s, AvahiInterface *i, AvahiDnsP
                  * 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;
                     }
@@ -456,7 +456,7 @@ void avahi_server_generate_response(AvahiServer *s, AvahiInterface *i, AvahiDnsP
 
                             /* 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;
 
@@ -465,7 +465,7 @@ void avahi_server_generate_response(AvahiServer *s, AvahiInterface *i, AvahiDnsP
                             /* 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;
@@ -487,7 +487,7 @@ void avahi_server_generate_response(AvahiServer *s, AvahiInterface *i, AvahiDnsP
         }
 
         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);
         }
@@ -498,7 +498,7 @@ void avahi_server_generate_response(AvahiServer *s, AvahiInterface *i, AvahiDnsP
 
 static void reflect_response(AvahiServer *s, AvahiInterface *i, AvahiRecord *r, int flush_cache) {
     AvahiInterface *j;
-    
+
     assert(s);
     assert(i);
     assert(r);
@@ -525,7 +525,7 @@ static void* reflect_cache_walk_callback(AvahiCache *c, AvahiKey *pattern, Avahi
 
 static void reflect_query(AvahiServer *s, AvahiInterface *i, AvahiKey *k) {
     AvahiInterface *j;
-    
+
     assert(s);
     assert(i);
     assert(k);
@@ -547,7 +547,7 @@ static void reflect_query(AvahiServer *s, AvahiInterface *i, AvahiKey *k) {
 
 static void reflect_probe(AvahiServer *s, AvahiInterface *i, AvahiRecord *r) {
     AvahiInterface *j;
-    
+
     assert(s);
     assert(i);
     assert(r);
@@ -563,7 +563,7 @@ static void reflect_probe(AvahiServer *s, AvahiInterface *i, AvahiRecord *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);
@@ -572,7 +572,7 @@ static void handle_query_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInterfac
     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;
@@ -594,7 +594,7 @@ static void handle_query_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInterfac
             /* 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);
     }
@@ -605,35 +605,35 @@ static void handle_query_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInterfac
         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);
         }
     }
@@ -642,14 +642,14 @@ static void handle_query_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInterfac
         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);
@@ -660,7 +660,7 @@ static void handle_response_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInter
         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;
@@ -675,7 +675,7 @@ static void handle_response_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInter
                 avahi_response_scheduler_incoming(i->response_scheduler, record, cache_flush);
             }
         }
-            
+
         avahi_record_unref(record);
     }
 
@@ -689,7 +689,7 @@ static void handle_response_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInter
 static AvahiLegacyUnicastReflectSlot* allocate_slot(AvahiServer *s) {
     unsigned n, idx = (unsigned) -1;
     AvahiLegacyUnicastReflectSlot *slot;
-    
+
     assert(s);
 
     if (!s->legacy_unicast_reflect_slots)
@@ -697,7 +697,7 @@ static AvahiLegacyUnicastReflectSlot* allocate_slot(AvahiServer *s) {
 
     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;
     }
@@ -711,7 +711,7 @@ static AvahiLegacyUnicastReflectSlot* allocate_slot(AvahiServer *s) {
     s->legacy_unicast_reflect_slots[idx] = slot;
     slot->id = s->legacy_unicast_reflect_id++;
     slot->server = s;
-    
+
     return slot;
 }
 
@@ -726,7 +726,7 @@ static void deallocate_slot(AvahiServer *s, AvahiLegacyUnicastReflectSlot *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;
 }
@@ -748,12 +748,12 @@ static void free_slots(AvahiServer *s) {
 
 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)
@@ -782,7 +782,7 @@ static void reflect_legacy_unicast_query_packet(AvahiServer *s, AvahiDnsPacket *
     assert(a);
     assert(port > 0);
     assert(i->protocol == a->proto);
-    
+
     if (!s->config.enable_reflector)
         return;
 
@@ -810,7 +810,7 @@ static void reflect_legacy_unicast_query_packet(AvahiServer *s, AvahiDnsPacket *
 
     /* 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 &&
@@ -833,14 +833,14 @@ static int originates_from_local_legacy_unicast_socket(AvahiServer *s, const Ava
 
     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
@@ -884,7 +884,7 @@ static int originates_from_local_iface(AvahiServer *s, AvahiIfIndex iface, const
 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);
@@ -898,6 +898,12 @@ static void dispatch_packet(AvahiServer *s, AvahiDnsPacket *p, const AvahiAddres
         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;
@@ -931,36 +937,40 @@ static void dispatch_packet(AvahiServer *s, AvahiDnsPacket *p, const AvahiAddres
                 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;
         }
 
@@ -971,7 +981,7 @@ static void dispatch_packet(AvahiServer *s, AvahiDnsPacket *p, const AvahiAddres
 static void dispatch_legacy_unicast_packet(AvahiServer *s, AvahiDnsPacket *p) {
     AvahiInterface *j;
     AvahiLegacyUnicastReflectSlot *slot;
-    
+
     assert(s);
     assert(p);
 
@@ -1001,7 +1011,7 @@ static void dispatch_legacy_unicast_packet(AvahiServer *s, AvahiDnsPacket *p) {
 
 static void cleanup_dead(AvahiServer *s) {
     assert(s);
-    
+
     avahi_cleanup_dead_entries(s);
     avahi_browser_cleanup(s);
 }
@@ -1017,7 +1027,7 @@ static void mcast_socket_event(AvahiWatch *w, int fd, AvahiWatchEvent events, vo
     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);
@@ -1026,11 +1036,11 @@ static void mcast_socket_event(AvahiWatch *w, int fd, AvahiWatchEvent events, vo
         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
@@ -1049,7 +1059,7 @@ static void legacy_unicast_socket_event(AvahiWatch *w, int fd, AvahiWatchEvent e
     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 {
@@ -1070,11 +1080,11 @@ static void server_set_state(AvahiServer *s, AvahiServerState state) {
 
     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);
 }
@@ -1094,7 +1104,7 @@ static void withdraw_host_rrs(AvahiServer *s) {
 
 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)
@@ -1108,12 +1118,12 @@ void avahi_host_rr_entry_group_callback(AvahiServer *s, AvahiSEntryGroup *g, Ava
     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);
@@ -1122,9 +1132,9 @@ void avahi_host_rr_entry_group_callback(AvahiServer *s, AvahiSEntryGroup *g, Ava
 static void register_hinfo(AvahiServer *s) {
     struct utsname utsname;
     AvahiRecord *r;
-    
+
     assert(s);
-    
+
     if (!s->config.publish_hinfo)
         return;
 
@@ -1137,19 +1147,19 @@ static void register_hinfo(AvahiServer *s) {
         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;
@@ -1167,7 +1177,7 @@ static void register_hinfo(AvahiServer *s) {
 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);
@@ -1194,7 +1204,7 @@ static void register_browse_domain(AvahiServer *s) {
         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;
@@ -1215,14 +1225,14 @@ static void register_stuff(AvahiServer *s) {
     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);
@@ -1237,7 +1247,7 @@ static void update_fqdn(AvahiServer *s) {
 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) {
@@ -1250,12 +1260,12 @@ int avahi_server_set_host_name(AvahiServer *s, const char *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);
@@ -1272,7 +1282,7 @@ int avahi_server_set_domain_name(AvahiServer *s, const char *domain_name) {
         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);
@@ -1297,10 +1307,10 @@ static int valid_server_config(const AvahiServerConfig *sc) {
 
     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;
 
@@ -1313,10 +1323,10 @@ static int valid_server_config(const AvahiServerConfig *sc) {
 
 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;
 
@@ -1327,35 +1337,35 @@ static int setup_sockets(AvahiServer *s) {
 
     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;
@@ -1376,10 +1386,10 @@ AvahiServer *avahi_server_new(const AvahiPoll *poll_api, const AvahiServerConfig
 
         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;
@@ -1412,7 +1422,7 @@ AvahiServer *avahi_server_new(const AvahiPoll *poll_api, const AvahiServerConfig
     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;
@@ -1431,13 +1441,13 @@ AvahiServer *avahi_server_new(const AvahiPoll *poll_api, const AvahiServerConfig
         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;
 }
 
@@ -1462,7 +1472,7 @@ void avahi_server_free(AvahiServer* 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)
@@ -1484,33 +1494,33 @@ void avahi_server_free(AvahiServer* s) {
     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);
@@ -1562,6 +1572,8 @@ AvahiServerConfig* avahi_server_config_init(AvahiServerConfig *c) {
     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;
@@ -1581,7 +1593,7 @@ AvahiServerConfig* avahi_server_config_init(AvahiServerConfig *c) {
     c->allow_point_to_point = 0;
     c->publish_aaaa_on_ipv4 = 1;
     c->publish_a_on_ipv6 = 0;
-    
+
     return c;
 }
 
@@ -1591,11 +1603,13 @@ void avahi_server_config_free(AvahiServerConfig *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);
 
@@ -1609,23 +1623,40 @@ AvahiServerConfig* avahi_server_config_copy(AvahiServerConfig *ret, const AvahiS
             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;
 }
 
@@ -1644,7 +1675,7 @@ uint32_t avahi_server_get_local_service_cookie(AvahiServer *s) {
 
 static AvahiEntry *find_entry(AvahiServer *s, AvahiIfIndex interface, AvahiProtocol protocol, AvahiKey *key) {
     AvahiEntry *e;
-    
+
     assert(s);
     assert(key);
 
@@ -1664,7 +1695,7 @@ int avahi_server_get_group_of_service(AvahiServer *s, AvahiIfIndex interface, Av
     AvahiEntry *e;
     int ret;
     char n[AVAHI_DOMAIN_NAME_MAX];
-    
+
     assert(s);
     assert(name);
     assert(type);
@@ -1678,7 +1709,7 @@ int avahi_server_get_group_of_service(AvahiServer *s, AvahiIfIndex interface, Av
 
     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);
 
@@ -1702,7 +1733,7 @@ int avahi_server_is_service_local(AvahiServer *s, AvahiIfIndex interface, AvahiP
 
     if (!s->host_name_fqdn)
         return 0;
-    
+
     if (!(key = avahi_key_new(name, AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_SRV)))
         return 0;
 
@@ -1711,7 +1742,7 @@ int avahi_server_is_service_local(AvahiServer *s, AvahiIfIndex interface, AvahiP
 
     if (!e)
         return 0;
-    
+
     return avahi_domain_equal(s->host_name_fqdn, e->record->data.srv.name);
 }
 
@@ -1720,7 +1751,7 @@ int avahi_server_is_record_local(AvahiServer *s, AvahiIfIndex interface, AvahiPr
 
     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) &&
@@ -1752,13 +1783,13 @@ const AvahiServerConfig* avahi_server_get_config(AvahiServer *s) {
 /** 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);
 
index 622b4de6f8f9739b42b164be69ac7b0d023f826f..0aac0fc9ab8410c6e30e777118be6beb25f3cbf3 100644 (file)
@@ -53,8 +53,7 @@ avahi_daemon_SOURCES = \
        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)
index 69df050af209d3d9c7a876cf7558b2e6adf820aa..ad69c735354ded96b43b96f765c13c42f4cea41e 100644 (file)
@@ -26,6 +26,8 @@
 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
diff --git a/avahi-daemon/inotify-nosys.h b/avahi-daemon/inotify-nosys.h
deleted file mode 100644 (file)
index 6af44dc..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * 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 */
index d8f9aa6fdd69eecd1327de19545d5b8813765bd9..c3cbb0e898f9a4025de28cbe4fe1d5a652388ef3 100644 (file)
@@ -2,17 +2,17 @@
 
 /***
   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
@@ -148,7 +144,7 @@ static int has_prefix(const char *s, const char *prefix) {
     size_t l;
 
     l = strlen(prefix);
-    
+
     return strlen(s) >= l && strncmp(s, prefix, l) == 0;
 }
 
@@ -156,19 +152,19 @@ static int load_resolv_conf(void) {
     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;
@@ -223,7 +219,7 @@ 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;
     }
@@ -240,14 +236,14 @@ static AvahiSEntryGroup* add_dns_servers(AvahiServer *s, AvahiSEntryGroup* g, ch
     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
@@ -267,8 +263,8 @@ static void remove_dns_server_entry_groups(void) {
 
     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);
 }
 
@@ -297,10 +293,10 @@ static AvahiStringList *filter_duplicate_domains(AvahiStringList *l) {
 
     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);
@@ -323,7 +319,7 @@ static void update_browse_domains(void) {
     }
 
     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);
@@ -332,13 +328,13 @@ static void update_browse_domains(void) {
     }
 
     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);
 
@@ -346,7 +342,7 @@ static void server_callback(AvahiServer *s, AvahiServerState state, void *userda
      * 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);
@@ -355,28 +351,28 @@ static void server_callback(AvahiServer *s, AvahiServerState state, void *userda
     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();
@@ -398,16 +394,16 @@ static void server_callback(AvahiServer *s, AvahiServerState state, void *userda
         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;
-            
+
     }
 }
 
@@ -425,9 +421,9 @@ static void help(FILE *f) {
             "                       "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);
@@ -440,13 +436,13 @@ static int parse_command_line(DaemonConfig *c, int argc, char *argv[]) {
     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' },
@@ -522,13 +518,13 @@ static int parse_command_line(DaemonConfig *c, int argc, char *argv[]) {
         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';
 }
 
@@ -541,9 +537,9 @@ static int load_config_file(DaemonConfig *c) {
 
     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;
 
@@ -559,7 +555,7 @@ static int load_config_file(DaemonConfig *c) {
                     char **e, **t;
 
                     e = avahi_split_csv(p->value);
-                    
+
                     for (t = e; *t; t++) {
                         char cleaned[AVAHI_DOMAIN_NAME_MAX];
 
@@ -571,7 +567,7 @@ static int load_config_file(DaemonConfig *c) {
 
                         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);
@@ -601,17 +597,39 @@ static int load_config_file(DaemonConfig *c) {
                     }
                 }
 #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)
@@ -645,7 +663,7 @@ static int load_config_file(DaemonConfig *c) {
             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 {
@@ -653,12 +671,12 @@ static int load_config_file(DaemonConfig *c) {
                     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)
@@ -668,12 +686,12 @@ static int load_config_file(DaemonConfig *c) {
                     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);
@@ -705,7 +723,7 @@ static int load_config_file(DaemonConfig *c) {
                 }
 
             }
-            
+
         } else {
             avahi_log_error("Invalid configuration file group \"%s\".\n", g->name);
             goto finish;
@@ -718,7 +736,7 @@ finish:
 
     if (f)
         avahi_ini_file_free(f);
-    
+
     return r;
 }
 
@@ -731,7 +749,7 @@ static void log_function(AvahiLogLevel level, const char *txt) {
         LOG_INFO,
         LOG_DEBUG
     };
-    
+
     assert(level < AVAHI_LOG_LEVEL_MAX);
     assert(txt);
 
@@ -758,7 +776,7 @@ static void add_inotify_watches(void) {
 #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
@@ -837,18 +855,18 @@ static void reload_config(void) {
 #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);
 }
@@ -908,7 +926,7 @@ static void kqueue_callback(AvahiWatch *watch, int fd, AVAHI_GCC_UNUSED AvahiWat
 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);
 
@@ -1013,17 +1031,17 @@ static int run_server(DaemonConfig *c) {
             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
@@ -1031,7 +1049,7 @@ static int run_server(DaemonConfig *c) {
         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;
@@ -1080,17 +1098,17 @@ static int run_server(DaemonConfig *c) {
             /* 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();
 
@@ -1098,7 +1116,7 @@ finish:
     static_hosts_free_all();
 
     remove_dns_server_entry_groups();
-    
+
     simple_protocol_shutdown();
 
 #ifdef HAVE_DBUS
@@ -1133,7 +1151,7 @@ finish:
             close(kfds[i]);
     }
 #endif
-    
+
     if (simple_poll_api) {
         avahi_simple_poll_free(simple_poll_api);
         simple_poll_api = NULL;
@@ -1141,7 +1159,7 @@ finish:
 
     if (!retval_is_sent && c->daemonize)
         daemon_retval_send(1);
-    
+
     return r;
 }
 
@@ -1151,7 +1169,7 @@ static int drop_root(void) {
     struct passwd *pw;
     struct group * gr;
     int r;
-    
+
     if (!(pw = getpwnam(AVAHI_USER))) {
         avahi_log_error( "Failed to find user '"AVAHI_USER"'.");
         return -1;
@@ -1234,12 +1252,12 @@ static int make_runtime_dir(void) {
 
     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) {
@@ -1322,7 +1340,7 @@ int main(int argc, char *argv[]) {
     avahi_set_log_function(log_function);
 
     init_rand_seed();
-    
+
     avahi_server_config_init(&config.server_config);
     config.command = DAEMON_RUN;
     config.daemonize = 0;
@@ -1331,7 +1349,7 @@ int main(int argc, char *argv[]) {
     config.enable_dbus = 1;
     config.fail_on_missing_dbus = 1;
 #endif
-    
+
     config.drop_root = 1;
     config.set_rlimits = 1;
 #ifdef ENABLE_CHROOT
@@ -1353,7 +1371,7 @@ int main(int argc, char *argv[]) {
 #ifdef RLIMIT_NPROC
     config.rlimit_nproc_set = 0;
 #endif
-    
+
     if ((argv0 = strrchr(argv[0], '/')))
         argv0 = avahi_strdup(argv0 + 1);
     else
@@ -1362,7 +1380,7 @@ int main(int argc, char *argv[]) {
     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;
 
@@ -1372,7 +1390,7 @@ int main(int argc, char *argv[]) {
 #ifdef ENABLE_CHROOT
     config.use_chroot = config.use_chroot && config.drop_root;
 #endif
-    
+
     if (config.command == DAEMON_HELP) {
         help(stdout);
         r = 0;
@@ -1394,7 +1412,7 @@ int main(int argc, char *argv[]) {
         }
 
         r = 0;
-        
+
     } else if (config.command == DAEMON_CHECK)
         r = (daemon_pid_file_is_running() >= 0) ? 0 : 1;
     else if (config.command == DAEMON_RUN) {
@@ -1404,7 +1422,7 @@ int main(int argc, char *argv[]) {
             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;
@@ -1412,10 +1430,10 @@ int main(int argc, char *argv[]) {
 
         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) {
@@ -1441,7 +1459,7 @@ int main(int argc, char *argv[]) {
             avahi_log_error("Failed to close remaining file descriptors: %s", strerror(errno));
             goto finish;
         }
-        
+
         if (make_runtime_dir() < 0)
             goto finish;
 
@@ -1451,7 +1469,7 @@ int main(int argc, char *argv[]) {
                 if (avahi_caps_reduce() < 0)
                     goto finish;
 #endif
-            
+
             if (drop_root() < 0)
                 goto finish;
 
@@ -1486,11 +1504,11 @@ int main(int argc, char *argv[]) {
         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)
@@ -1515,6 +1533,6 @@ finish:
 #endif
 
     avahi_free(argv0);
-    
+
     return r;
 }
index ca007be22d959d70e65d79af0e338a7bf5f3b0df..542aeae6f87ffc95ea238c7b92be197d4d580789 100644 (file)
@@ -52,7 +52,7 @@ else
 
 if HAVE_PYTHON_DBUS
 
-interfaces_DATA = $(interfaces)
+interfaces_DATA =
 
 endif
 endif
index 9337a6ddfd20ac78effc355ceedb2af1ad5d75fd..f7d3aa42c1ae1e22067075785306ae565bf1f4ca 100755 (executable)
@@ -35,7 +35,27 @@ test "x$AVAHI_INTERFACE" != "x"
 #   $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
 
index 09ad6de6f736a274b16a1a5f9c13ab767289e9c6..4989b4b6bfc53d70cd28d5a33558bf03f3fdbf7b 100644 (file)
@@ -29,7 +29,6 @@ SUBDIRS=avahi avahi-discover
 
 if HAVE_PYTHON
 if HAVE_PYTHON_DBUS
-if HAVE_PYGTK
 
 pythonscripts = \
        avahi-bookmarks
@@ -43,4 +42,3 @@ CLEANFILES = $(pythonscripts)
 
 endif
 endif
-endif
index a1e8d0ce6ab3ca5b47baf6e4ad9e7e734ac36d13..172abb30228c983ac54aab15eef3bdf3a1b8f724 100755 (executable)
@@ -24,7 +24,7 @@ import sys, getopt, os
 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:
index c1d6cabc6dffd93a40f6ebb77da6ecc0d4b9e4ab..a44a071a502cc8aa9bb4f75798bb74478f484637 100644 (file)
@@ -23,7 +23,7 @@ EXTRA_DIST = \
        __init__.py \
        SimpleGladeApp.py \
        avahi-discover.in \
-       avahi-discover.desktop.in
+       avahi-discover.desktop.in.in
 
 if HAVE_PYTHON
 if HAVE_PYTHON_DBUS
@@ -41,6 +41,7 @@ if HAVE_GDBM
 pythonscripts += \
        avahi-discover
 desktop_DATA += avahi-discover.desktop
+@INTLTOOL_DESKTOP_RULE@
 avahi_discover_PYTHON += __init__.py SimpleGladeApp.py
 endif
 
@@ -48,19 +49,23 @@ if HAVE_DBM
 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
diff --git a/avahi-python/avahi-discover/avahi-discover.desktop.in b/avahi-python/avahi-discover/avahi-discover.desktop.in
deleted file mode 100644 (file)
index e896192..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[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=
diff --git a/avahi-python/avahi-discover/avahi-discover.desktop.in.in b/avahi-python/avahi-discover/avahi-discover.desktop.in.in
new file mode 100644 (file)
index 0000000..031024c
--- /dev/null
@@ -0,0 +1,12 @@
+[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=
index 229c7bdb2a30fb7c26b4e809ff4d881f19215ee9..055842476f006ccb7e2eee8da21731a02af6e27e 100755 (executable)
 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)
@@ -61,7 +64,9 @@ class Main_window(SimpleGladeApp):
 
     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
index 4a7302255a90deba1fb487c531d651b97b2146d7..c0c9c343389065c346a5db85bd221ad116c32ed8 100644 (file)
@@ -52,12 +52,10 @@ endif
 
 avahi_PYTHON = $(avahi_SCRIPTS)
 
-if HAVE_PYGTK
 if HAVE_PYTHON_DBUS
 
 avahi_PYTHON += __init__.py
 
-endif
 endif
 endif
 
index 910dc6b1c5738194baaccd46ba7bb1c1e9a01451..6dbbd24ae41e1bea20ee95691ea79166c2721d1e 100644 (file)
@@ -29,8 +29,8 @@ desktop_DATA_in_in = bssh.desktop.in.in bvnc.desktop.in.in
 
 EXTRA_DIST = $(desktop_DATA_in_in)
 
-
 if HAVE_GTK
+AM_CFLAGS += -DGNOMELOCALEDIR=\"$(datadir)/locale\"
 if HAVE_DBUS
 if HAVE_GLIB
 
@@ -61,6 +61,7 @@ endif
 
 bin_PROGRAMS = bssh
 desktop_DATA += bssh.desktop bvnc.desktop
+@INTLTOOL_DESKTOP_RULE@
 
 bssh_SOURCES = bssh.c
 bssh_CFLAGS = $(AM_CFLAGS) $(GTK20_CFLAGS)
index a54cbe9ba2d8f52c74a46d252d3de1e1fc056c1c..bd2b3cc1a9fe460049dc77dbf4a0b8f550803e5c 100644 (file)
@@ -30,6 +30,7 @@
 #include <net/if.h>
 
 #include <gtk/gtk.h>
+#include <glib/gi18n.h>
 
 #include <avahi-glib/glib-watch.h>
 #include <avahi-client/client.h>
@@ -184,64 +185,64 @@ static void aui_service_dialog_class_init(AuiServiceDialogClass *klass) {
     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));
 }
@@ -703,7 +704,7 @@ static gboolean start_callback(gpointer data) {
     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;
     }
 
@@ -1026,7 +1027,7 @@ static void domain_button_clicked(GtkButton *button G_GNUC_UNUSED, gpointer user
     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);
 
@@ -1139,17 +1140,17 @@ static void aui_service_dialog_init(AuiServiceDialog *d) {
     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);
 
@@ -1157,7 +1158,7 @@ static void aui_service_dialog_init(AuiServiceDialog *d) {
     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);
 
index eee0b34f6bb26835971de72268aab05333874d06..d780f83e9a8580701bb7b450d2afbe1229e012d9 100644 (file)
@@ -22,8 +22,7 @@
   USA.
 ***/
 
-#include <gtk/gtkwidget.h>
-#include <gtk/gtkdialog.h>
+#include <gtk/gtk.h>
 
 #include <avahi-client/client.h>
 
index fea1071e95dc60f02c42837339f594b7502c5111..e4a190ba7b02bacdf6978f5727e083e27b447b5e 100644 (file)
@@ -31,6 +31,7 @@
 #include <getopt.h>
 
 #include <gtk/gtk.h>
+#include <glib/gi18n.h>
 
 #include <avahi-client/client.h>
 #include <avahi-common/strlst.h>
@@ -135,6 +136,10 @@ int main(int argc, char*argv[]) {
         return 1;
     }
 
+    bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
+    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+    textdomain (GETTEXT_PACKAGE);
+
     gtk_init(&argc, &argv);
 
     switch (config.command) {
index 4b1a47e6b4b8d4d077581b7f0f47b1dc4a8343f7..de8ddd7bbe42d403b2b7606b5ac63110790ed480 100644 (file)
@@ -4,6 +4,11 @@ iconv.m4
 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
index ce365b43489f9c5d7ff726e2620f6342d379b975..b6e44b3ea715c37383e4d36e9ca0949a2ef83c73 100644 (file)
 # 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])
@@ -299,7 +299,7 @@ test_gcc_flag() {
 # 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
@@ -387,7 +387,6 @@ fi
 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")
@@ -405,8 +404,6 @@ if test "x$have_kqueue" = "xyes" ; then
     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])
index 7b49d630a5ec286f3395434a27263cbb85f2693c..19bbaad66f293730464f763af0ab4d638b2bf8bc 100644 (file)
--- a/docs/NEWS
+++ b/docs/NEWS
@@ -1,3 +1,17 @@
+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
 ============
 
index d30986652d88ae6f0fb268d287c06bcb936cdb75..c5b32307d2f4e85c55e7761a8e7b1b40a5e975aa 100644 (file)
@@ -2,19 +2,19 @@
 #
 # 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
 
@@ -91,7 +91,7 @@ case "$1" in
        restart
        ;;
   reload)
-        reload 
+        reload
        ;;
   condrestart)
        if [ -f $LOCKFILE ]; then
@@ -105,4 +105,3 @@ case "$1" in
 esac
 
 exit $RETVAL
-
index 284c10bf8d62d568eaa842b18680735ebb0fb8c7..de49d7f8a70e7f50489e1cbed347159fe06359a3 100644 (file)
@@ -12,7 +12,7 @@
 
 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
index 8f85f3cc7d01d70a9776c2793bdb6c6bdd6171fe..7d08828abf26982670cb9ca65221ca97f49bf0c8 100644 (file)
@@ -65,8 +65,11 @@ endif
 
 if HAVE_PYTHON
 man_MANS += \
-       avahi-discover.1 \
        avahi-bookmarks.1
+if HAVE_GTK
+man_MANS += \
+       avahi-discover.1
+endif
 endif
 endif
 
@@ -233,16 +236,22 @@ EXTRA_DIST = \
 
 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
index 8cc34505a5db4af5d65dd41d6475e1dda70d0be8..08992fa6f69db4ff4545d5d148383307e8a583a3 100644 (file)
@@ -4,19 +4,19 @@
 
 <!-- $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>
@@ -56,7 +56,7 @@
         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 &lt;@PACKAGE_BUGREPORT@&gt;; 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>
index c1f1f182b723504b61c96a0122681dcebffe2fe8..7e609f02971cc18fb030b88ab304bbd15395549b 100644 (file)
@@ -1,10 +1,14 @@
 ca
 de
+el
 en_AU
 en_CA
 en_GB
 en_NZ
+es
+fi
 fr
+hu
 it
 ms
 pl
@@ -12,4 +16,5 @@ pt_BR
 ru
 sr
 sr@latin
+sv
 zh_CN
index 80b5a298e97d354472bf4acaff4ff28c67998c99..f3e48ded501971814f83d909d887ea8a859ea22e 100644 (file)
@@ -1,5 +1,7 @@
 # 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
@@ -8,4 +10,3 @@ avahi-utils/avahi-browse.c
 avahi-utils/avahi-publish.c
 avahi-utils/avahi-resolve.c
 avahi-utils/avahi-set-host-name.c
-
index cbfd41bbc694628c65c43b5e84b38038be09b1d2..90541bbec53d193fcebda6daa2710a9f4a2d5647 100644 (file)
@@ -2,4 +2,5 @@ avahi-discover-standalone/avahi-discover.glade
 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
index 89dd08970044fab50de8b7bfe0caa86fdb974894..b6e43c293e0b36dde7f091e248b0934ebaf73041 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -1,14 +1,14 @@
-# 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"
@@ -17,822 +17,1124 @@ msgstr ""
 "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"
index d0d610b394fe8f626a14c65d144e17b1f89e4112..6a2c3881baf88a2d4512a181390ac729b0bb1797 100644 (file)
--- a/po/es.po
+++ b/po/es.po
-# 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
@@ -333,181 +328,174 @@ msgid ""
 "    -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 ""
@@ -517,7 +505,8 @@ 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"
@@ -526,43 +515,42 @@ msgid ""
 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
@@ -572,32 +560,32 @@ msgstr "Falló al registrar: %s\n"
 #: ../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
@@ -612,48 +600,48 @@ msgid ""
 "    -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
@@ -669,32 +657,31 @@ msgid ""
 "    -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
@@ -705,19 +692,18 @@ msgid ""
 "    -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"
diff --git a/po/fi.po b/po/fi.po
new file mode 100644 (file)
index 0000000..0ad2f97
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,708 @@
+# 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"
+
diff --git a/po/hu.po b/po/hu.po
new file mode 100644 (file)
index 0000000..5da4863
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,708 @@
+# 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"
+
index fc693d0767067f28c48fe73a7d7fc0ef10dd1414..924257dbe48058b450362028cab1f0d95118ebbb 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -1,22 +1,23 @@
-# 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"
@@ -291,7 +292,9 @@ msgstr "Creazione di browser per %s fallita: %s"
 #: ../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
@@ -318,40 +321,80 @@ msgstr "Inizializzazione..."
 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"
@@ -411,49 +454,53 @@ msgstr "Interrogazione nome host fallita: %s\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"
@@ -471,20 +518,24 @@ msgid ""
 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"
@@ -492,17 +543,12 @@ msgstr ""
 "    -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"
@@ -577,7 +623,8 @@ msgstr ""
 "    -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
diff --git a/po/sv.po b/po/sv.po
new file mode 100644 (file)
index 0000000..4996664
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,727 @@
+# 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"
+