diff options
39 files changed, 4065 insertions, 1605 deletions
diff --git a/avahi-autoipd/main.c b/avahi-autoipd/main.c index ef529b9..eb71c3b 100644 --- a/avahi-autoipd/main.c +++ b/avahi-autoipd/main.c @@ -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."); diff --git a/avahi-common/Makefile.am b/avahi-common/Makefile.am index b00cd78..b4bc917 100644 --- a/avahi-common/Makefile.am +++ b/avahi-common/Makefile.am @@ -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 = \ diff --git a/avahi-common/gccmacro.h b/avahi-common/gccmacro.h index 78a09a7..dd49502 100644 --- a/avahi-common/gccmacro.h +++ b/avahi-common/gccmacro.h @@ -28,6 +28,15 @@  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 diff --git a/avahi-common/malloc.h b/avahi-common/malloc.h index 2430199..511b51c 100644 --- a/avahi-common/malloc.h +++ b/avahi-common/malloc.h @@ -35,19 +35,19 @@  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) diff --git a/avahi-common/thread-watch.c b/avahi-common/thread-watch.c index 1a5d9d2..4f23608 100644 --- a/avahi-common/thread-watch.c +++ b/avahi-common/thread-watch.c @@ -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);  } diff --git a/avahi-core/core.h b/avahi-core/core.h index 55aafe2..94d1970 100644 --- a/avahi-core/core.h +++ b/avahi-core/core.h @@ -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 */ diff --git a/avahi-core/iface-pfroute.c b/avahi-core/iface-pfroute.c index f96bfc2..391081e 100644 --- a/avahi-core/iface-pfroute.c +++ b/avahi-core/iface-pfroute.c @@ -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      { diff --git a/avahi-core/iface.c b/avahi-core/iface.c index 8098de4..5fbfc19 100644 --- a/avahi-core/iface.c +++ b/avahi-core/iface.c @@ -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; diff --git a/avahi-core/server.c b/avahi-core/server.c index 453db09..73ae1cb 100644 --- a/avahi-core/server.c +++ b/avahi-core/server.c @@ -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); diff --git a/avahi-daemon/Makefile.am b/avahi-daemon/Makefile.am index 622b4de..0aac0fc 100644 --- a/avahi-daemon/Makefile.am +++ b/avahi-daemon/Makefile.am @@ -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) diff --git a/avahi-daemon/avahi-daemon.conf b/avahi-daemon/avahi-daemon.conf index 69df050..ad69c73 100644 --- a/avahi-daemon/avahi-daemon.conf +++ b/avahi-daemon/avahi-daemon.conf @@ -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 index 6af44dc..0000000 --- a/avahi-daemon/inotify-nosys.h +++ /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 */ diff --git a/avahi-daemon/main.c b/avahi-daemon/main.c index d8f9aa6..c3cbb0e 100644 --- a/avahi-daemon/main.c +++ b/avahi-daemon/main.c @@ -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 @@ -43,11 +43,7 @@  #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;  } diff --git a/avahi-discover-standalone/Makefile.am b/avahi-discover-standalone/Makefile.am index ca007be..542aeae 100644 --- a/avahi-discover-standalone/Makefile.am +++ b/avahi-discover-standalone/Makefile.am @@ -52,7 +52,7 @@ else  if HAVE_PYTHON_DBUS -interfaces_DATA = $(interfaces) +interfaces_DATA =  endif  endif diff --git a/avahi-python/Makefile.am b/avahi-python/Makefile.am index 09ad6de..4989b4b 100644 --- a/avahi-python/Makefile.am +++ b/avahi-python/Makefile.am @@ -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 diff --git a/avahi-python/avahi-bookmarks.in b/avahi-python/avahi-bookmarks.in index a1e8d0c..172abb3 100755 --- a/avahi-python/avahi-bookmarks.in +++ b/avahi-python/avahi-bookmarks.in @@ -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: diff --git a/avahi-python/avahi-discover/Makefile.am b/avahi-python/avahi-discover/Makefile.am index c1d6cab..a44a071 100644 --- a/avahi-python/avahi-discover/Makefile.am +++ b/avahi-python/avahi-discover/Makefile.am @@ -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.in index e896192..031024c 100644 --- a/avahi-python/avahi-discover/avahi-discover.desktop.in +++ b/avahi-python/avahi-discover/avahi-discover.desktop.in.in @@ -1,8 +1,8 @@  [Desktop Entry]  Version=1.0  Encoding=UTF-8 -Name=Avahi Zeroconf Browser -Comment=Browse for Zeroconf services available on your network +_Name=Avahi Zeroconf Browser +_Comment=Browse for Zeroconf services available on your network  Exec=@bindir@/avahi-discover  Terminal=false  Type=Application diff --git a/avahi-python/avahi-discover/avahi-discover.in b/avahi-python/avahi-discover/avahi-discover.in index 229c7bd..0558424 100755 --- a/avahi-python/avahi-discover/avahi-discover.in +++ b/avahi-python/avahi-discover/avahi-discover.in @@ -22,8 +22,11 @@  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 diff --git a/avahi-python/avahi/Makefile.am b/avahi-python/avahi/Makefile.am index 4a73022..c0c9c34 100644 --- a/avahi-python/avahi/Makefile.am +++ b/avahi-python/avahi/Makefile.am @@ -52,13 +52,11 @@ endif  avahi_PYTHON = $(avahi_SCRIPTS) -if HAVE_PYGTK  if HAVE_PYTHON_DBUS  avahi_PYTHON += __init__.py  endif  endif -endif  CLEANFILES=*.pyc *.pyo ServiceTypeDatabase.py diff --git a/avahi-ui/Makefile.am b/avahi-ui/Makefile.am index 910dc6b..6dbbd24 100644 --- a/avahi-ui/Makefile.am +++ b/avahi-ui/Makefile.am @@ -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) diff --git a/avahi-ui/avahi-ui.c b/avahi-ui/avahi-ui.c index a54cbe9..bd2b3cc 100644 --- a/avahi-ui/avahi-ui.c +++ b/avahi-ui/avahi-ui.c @@ -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); diff --git a/avahi-ui/avahi-ui.h b/avahi-ui/avahi-ui.h index eee0b34..d780f83 100644 --- a/avahi-ui/avahi-ui.h +++ b/avahi-ui/avahi-ui.h @@ -22,8 +22,7 @@    USA.  ***/ -#include <gtk/gtkwidget.h> -#include <gtk/gtkdialog.h> +#include <gtk/gtk.h>  #include <avahi-client/client.h> diff --git a/avahi-ui/bssh.c b/avahi-ui/bssh.c index fea1071..e4a190b 100644 --- a/avahi-ui/bssh.c +++ b/avahi-ui/bssh.c @@ -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) { diff --git a/configure.ac b/configure.ac index 4826a60..b6e44b3 100644 --- a/configure.ac +++ b/configure.ac @@ -21,21 +21,21 @@  # 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") @@ -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  ============ diff --git a/initscript/fedora/avahi-daemon.in b/initscript/fedora/avahi-daemon.in index d309866..c5b3230 100644 --- a/initscript/fedora/avahi-daemon.in +++ b/initscript/fedora/avahi-daemon.in @@ -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 - diff --git a/initscript/fedora/avahi-dnsconfd.in b/initscript/fedora/avahi-dnsconfd.in index 284c10b..de49d7f 100644 --- a/initscript/fedora/avahi-dnsconfd.in +++ b/initscript/fedora/avahi-dnsconfd.in @@ -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 diff --git a/man/Makefile.am b/man/Makefile.am index 8f85f3c..7d08828 100644 --- a/man/Makefile.am +++ b/man/Makefile.am @@ -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 diff --git a/man/avahi-daemon.conf.5.xml.in b/man/avahi-daemon.conf.5.xml.in index e00a911..08992fa 100644 --- a/man/avahi-daemon.conf.5.xml.in +++ b/man/avahi-daemon.conf.5.xml.in @@ -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 @@ -28,11 +28,11 @@  	<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> @@ -72,6 +72,22 @@        </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          activated: incoming IP packets will be ignored unless the IP @@ -141,7 +157,7 @@          we encourage you to use subdomains of .local, such as          "kitchen.local". This option defaults to "yes".</p>        </option> -       +      </section>  	<section name="Section [publish]"> @@ -306,16 +322,16 @@  	  <p>The Avahi Developers <@PACKAGE_BUGREPORT@>; Avahi is  	  available from <url href="@PACKAGE_URL@"/></p>  	</section> -	 +  	<section name="See also">  	  <p>          <manref name="avahi-daemon" section="8"/>, <manref name="avahi-dnsconfd" section="8"/>  	  </p>  	</section> -	 +  	<section name="Comments">  	  <p>This man page was written using <manref name="xml2man" section="1"  		  href="http://masqmail.cx/xml2man/"/> by Oliver Kurth.</p>  	</section> -	 +    </manpage> @@ -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 diff --git a/po/POTFILES.in b/po/POTFILES.in index 80b5a29..f3e48de 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -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 - diff --git a/po/POTFILES.skip b/po/POTFILES.skip index cbfd41b..90541bb 100644 --- a/po/POTFILES.skip +++ b/po/POTFILES.skip @@ -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 @@ -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" @@ -1,326 +1,321 @@ -# 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 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 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" + @@ -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 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" +  | 
