]> git.meshlink.io Git - catta/commitdiff
Merge commit 'flameeyes/master'
authorLennart Poettering <lennart@poettering.net>
Fri, 12 Dec 2008 21:34:08 +0000 (22:34 +0100)
committerLennart Poettering <lennart@poettering.net>
Fri, 12 Dec 2008 21:34:08 +0000 (22:34 +0100)
40 files changed:
avahi-autoipd/main.c
avahi-common/Makefile.am
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-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
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 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 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 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 4826a60756a4300aa3ef9f0c251ce775d477bd11..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])
@@ -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")
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 e00a911aa478e244106ae8935f83009e75b0c12a..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
         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"
+