]> git.meshlink.io Git - catta/blobdiff - avahi-utils/avahi-resolve.c
fix avahi_netlink_new to allow multiple netlinks per process
[catta] / avahi-utils / avahi-resolve.c
index 2dafbf07e796c4d0ad8402063074e3637effd7d1..bf1730b6fce050ecf58ea0a2b2f9a16b06093ba8 100644 (file)
@@ -1,18 +1,16 @@
-/* $Id$ */
-
 /***
   This file is part of avahi.
+
   avahi is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as
   published by the Free Software Foundation; either version 2.1 of the
   License, or (at your option) any later version.
+
   avahi is distributed in the hope that it will be useful, but WITHOUT
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
   Public License for more details.
+
   You should have received a copy of the GNU Lesser General Public
   License along with avahi; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 #include <avahi-common/malloc.h>
 #include <avahi-common/domain.h>
 #include <avahi-common/llist.h>
+#include <avahi-common/i18n.h>
 #include <avahi-client/client.h>
 #include <avahi-client/lookup.h>
 
 #include "sigint.h"
 
-#ifdef HAVE_GDBM
-#include "stdb.h"
-#endif
-
 typedef enum {
-    COMMAND_UNSPEC, 
+    COMMAND_UNSPEC,
     COMMAND_HELP,
     COMMAND_VERSION,
     COMMAND_RESOLVE_HOST_NAME,
@@ -75,7 +70,7 @@ static void host_name_resolver_callback(
     const AvahiAddress *a,
     AVAHI_GCC_UNUSED AvahiLookupResultFlags flags,
     AVAHI_GCC_UNUSED void *userdata) {
-    
+
     assert(r);
 
     switch (event) {
@@ -85,17 +80,17 @@ static void host_name_resolver_callback(
             avahi_address_snprint(address, sizeof(address), a);
 
             printf("%s\t%s\n", name, address);
-            
+
             break;
         }
 
         case AVAHI_RESOLVER_FAILURE:
-            
-            fprintf(stderr, "Failed to resolve host name '%s': %s\n", name, avahi_strerror(avahi_client_errno(client)));
+
+            fprintf(stderr, _("Failed to resolve host name '%s': %s\n"), name, avahi_strerror(avahi_client_errno(client)));
             break;
     }
 
-    
+
     avahi_host_name_resolver_free(r);
 
     assert(n_resolving > 0);
@@ -114,7 +109,7 @@ static void address_resolver_callback(
     const char *name,
     AVAHI_GCC_UNUSED AvahiLookupResultFlags flags,
     AVAHI_GCC_UNUSED void *userdata) {
-    
+
     char address[AVAHI_ADDRESS_STR_MAX];
     assert(r);
 
@@ -127,12 +122,12 @@ static void address_resolver_callback(
             break;
 
         case AVAHI_RESOLVER_FAILURE:
-            
-            fprintf(stderr, "Failed to resolve address '%s': %s\n", address, avahi_strerror(avahi_client_errno(client)));
+
+            fprintf(stderr, _("Failed to resolve address '%s': %s\n"), address, avahi_strerror(avahi_client_errno(client)));
             break;
     }
 
-    
+
     avahi_address_resolver_free(r);
 
     assert(n_resolving > 0);
@@ -145,10 +140,10 @@ static void address_resolver_callback(
 static void client_callback(AvahiClient *c, AvahiClientState state, AVAHI_GCC_UNUSED void * userdata) {
     switch (state) {
         case AVAHI_CLIENT_FAILURE:
-            fprintf(stderr, "Client failure, exiting: %s\n", avahi_strerror(avahi_client_errno(c)));
+            fprintf(stderr, _("Client failure, exiting: %s\n"), avahi_strerror(avahi_client_errno(c)));
             avahi_simple_poll_quit(simple_poll);
             break;
-            
+
         case AVAHI_CLIENT_S_REGISTERING:
         case AVAHI_CLIENT_S_RUNNING:
         case AVAHI_CLIENT_S_COLLISION:
@@ -159,17 +154,17 @@ static void client_callback(AvahiClient *c, AvahiClientState state, AVAHI_GCC_UN
 
 static void help(FILE *f, const char *argv0) {
     fprintf(f,
-            "%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",
-            argv0, strstr(argv0, "address") ? "[-a]" : "-a",
-            argv0, strstr(argv0, "host-name") ? "[-n]" : "-n");
+            _("%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"),
+            argv0, strstr(argv0, "host-name") ? "[-n]" : "-n",
+            argv0, strstr(argv0, "address") ? "[-a]" : "-a");
 }
 
 static int parse_command_line(Config *c, const char *argv0, int argc, char *argv[]) {
@@ -190,7 +185,6 @@ static int parse_command_line(Config *c, const char *argv0, int argc, char *argv
     c->proto = AVAHI_PROTO_UNSPEC;
     c->verbose = 0;
 
-    opterr = 0;
     while ((o = getopt_long(argc, argv, "hVnav46", long_options, NULL)) >= 0) {
 
         switch(o) {
@@ -216,18 +210,17 @@ static int parse_command_line(Config *c, const char *argv0, int argc, char *argv
                 c->proto = AVAHI_PROTO_INET6;
                 break;
             default:
-                fprintf(stderr, "Invalid command line argument: %c\n", o);
                 return -1;
         }
     }
 
     if (c->command == COMMAND_RESOLVE_ADDRESS || c->command == COMMAND_RESOLVE_HOST_NAME) {
         if (optind >= argc) {
-            fprintf(stderr, "Too few arguments\n");
+            fprintf(stderr, _("Too few arguments\n"));
             return -1;
         }
     }
-        
+
     return 0;
 }
 
@@ -236,6 +229,9 @@ int main(int argc, char *argv[]) {
     Config config;
     const char *argv0;
 
+    avahi_init_i18n();
+    setlocale(LC_ALL, "");
+
     if ((argv0 = strrchr(argv[0], '/')))
         argv0++;
     else
@@ -247,14 +243,14 @@ int main(int argc, char *argv[]) {
     switch (config.command) {
         case COMMAND_UNSPEC:
             ret = 1;
-            fprintf(stderr, "No command specified.\n");
+            fprintf(stderr, _("No command specified.\n"));
             break;
-            
+
         case COMMAND_HELP:
             help(stdout, argv0);
             ret = 0;
             break;
-            
+
         case COMMAND_VERSION:
             printf("%s "PACKAGE_VERSION"\n", argv0);
             ret = 0;
@@ -263,17 +259,17 @@ int main(int argc, char *argv[]) {
         case COMMAND_RESOLVE_HOST_NAME:
         case COMMAND_RESOLVE_ADDRESS: {
             int i;
-            
+
             if (!(simple_poll = avahi_simple_poll_new())) {
-                fprintf(stderr, "Failed to create simple poll object.\n");
+                fprintf(stderr, _("Failed to create simple poll object.\n"));
                 goto fail;
             }
-            
+
             if (sigint_install(simple_poll) < 0)
                 goto fail;
-            
+
             if (!(client = avahi_client_new(avahi_simple_poll_get(simple_poll), 0, client_callback, NULL, &error))) {
-                fprintf(stderr, "Failed to create client object: %s\n", avahi_strerror(error));
+                fprintf(stderr, _("Failed to create client object: %s\n"), avahi_strerror(error));
                 goto fail;
             }
 
@@ -281,61 +277,61 @@ int main(int argc, char *argv[]) {
                 const char *version, *hn;
 
                 if (!(version = avahi_client_get_version_string(client))) {
-                    fprintf(stderr, "Failed to query version string: %s\n", avahi_strerror(avahi_client_errno(client)));
+                    fprintf(stderr, _("Failed to query version string: %s\n"), avahi_strerror(avahi_client_errno(client)));
                     goto fail;
                 }
 
                 if (!(hn = avahi_client_get_host_name_fqdn(client))) {
-                    fprintf(stderr, "Failed to query host name: %s\n", avahi_strerror(avahi_client_errno(client)));
+                    fprintf(stderr, _("Failed to query host name: %s\n"), avahi_strerror(avahi_client_errno(client)));
                     goto fail;
                 }
-                
-                fprintf(stderr, "Server version: %s; Host name: %s\n", version, hn);
+
+                fprintf(stderr, _("Server version: %s; Host name: %s\n"), version, hn);
             }
 
             n_resolving = 0;
-            
+
             for (i = optind; i < argc; i++) {
 
                 if (config.command == COMMAND_RESOLVE_HOST_NAME) {
 
                     if (!(avahi_host_name_resolver_new(client, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, argv[i], config.proto, 0, host_name_resolver_callback, NULL))) {
-                        fprintf(stderr, "Failed to create host name resolver: %s\n", avahi_strerror(avahi_client_errno(client)));
+                        fprintf(stderr, _("Failed to create host name resolver: %s\n"), avahi_strerror(avahi_client_errno(client)));
                         goto fail;
                     }
-                        
+
                 } else {
                     AvahiAddress a;
-                    
+
                     assert(config.command == COMMAND_RESOLVE_ADDRESS);
 
                     if (!avahi_address_parse(argv[i], AVAHI_PROTO_UNSPEC, &a)) {
-                        fprintf(stderr, "Failed to parse address '%s'\n", argv[i]);
+                        fprintf(stderr, _("Failed to parse address '%s'\n"), argv[i]);
                         goto fail;
                     }
 
                     if (!(avahi_address_resolver_new(client, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, &a, 0, address_resolver_callback, NULL))) {
-                        fprintf(stderr, "Failed to create address resolver: %s\n", avahi_strerror(avahi_client_errno(client)));
+                        fprintf(stderr, _("Failed to create address resolver: %s\n"), avahi_strerror(avahi_client_errno(client)));
                         goto fail;
                     }
                 }
 
                 n_resolving++;
             }
-            
+
             avahi_simple_poll_loop(simple_poll);
             ret = 0;
             break;
         }
     }
-    
+
 fail:
 
     if (client)
         avahi_client_free(client);
 
     sigint_uninstall();
-    
+
     if (simple_poll)
         avahi_simple_poll_free(simple_poll);