gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r21867 - in gnunet/src: arm ats chat core dht dns exit fs g


From: gnunet
Subject: [GNUnet-SVN] r21867 - in gnunet/src: arm ats chat core dht dns exit fs gns hostlist include integration-tests namestore nat nse peerinfo-tool pt statistics template testing_old topology transport util vpn
Date: Mon, 11 Jun 2012 00:47:57 +0200

Author: grothoff
Date: 2012-06-11 00:47:57 +0200 (Mon, 11 Jun 2012)
New Revision: 21867

Modified:
   gnunet/src/arm/gnunet-arm.c
   gnunet/src/ats/perf_ats_mlp.c
   gnunet/src/chat/gnunet-chat.c
   gnunet/src/core/gnunet-core.c
   gnunet/src/dht/gnunet-dht-get.c
   gnunet/src/dht/gnunet-dht-monitor.c
   gnunet/src/dht/gnunet-dht-put.c
   gnunet/src/dns/gnunet-dns-monitor.c
   gnunet/src/dns/gnunet-dns-redirector.c
   gnunet/src/exit/gnunet-daemon-exit.c
   gnunet/src/fs/gnunet-directory.c
   gnunet/src/fs/gnunet-download.c
   gnunet/src/fs/gnunet-fs.c
   gnunet/src/fs/gnunet-helper-fs-publish.c
   gnunet/src/fs/gnunet-pseudonym.c
   gnunet/src/fs/gnunet-publish.c
   gnunet/src/fs/gnunet-search.c
   gnunet/src/fs/gnunet-unindex.c
   gnunet/src/gns/gnunet-gns-fcfsd.c
   gnunet/src/gns/gnunet-gns-lookup.c
   gnunet/src/gns/gnunet-gns-proxy.c
   gnunet/src/gns/gnunet-gns.c
   gnunet/src/hostlist/gnunet-daemon-hostlist.c
   gnunet/src/include/gnunet_strings_lib.h
   gnunet/src/integration-tests/connection_watchdog.c
   gnunet/src/namestore/gnunet-namestore.c
   gnunet/src/nat/gnunet-nat-server.c
   gnunet/src/nse/gnunet-nse-profiler.c
   gnunet/src/peerinfo-tool/gnunet-peerinfo.c
   gnunet/src/pt/gnunet-daemon-pt.c
   gnunet/src/statistics/gnunet-statistics.c
   gnunet/src/template/gnunet-template.c
   gnunet/src/testing_old/gnunet-testing.c
   gnunet/src/topology/gnunet-daemon-topology.c
   gnunet/src/transport/gnunet-transport.c
   gnunet/src/util/gnunet-resolver.c
   gnunet/src/util/gnunet-rsa.c
   gnunet/src/util/program.c
   gnunet/src/util/strings.c
   gnunet/src/vpn/gnunet-vpn.c
Log:
LRN: new utf8 argv converter for W32, converting strings on command-line to 
UTF-8 for all command-line tools.



Modified: gnunet/src/arm/gnunet-arm.c
===================================================================
--- gnunet/src/arm/gnunet-arm.c 2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/arm/gnunet-arm.c 2012-06-10 22:47:57 UTC (rev 21867)
@@ -431,6 +431,9 @@
   if (temp_timeout_ms > 0)
     timeout.rel_value = temp_timeout_ms;
 
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   if (GNUNET_OK ==
       GNUNET_PROGRAM_run (argc, argv, "gnunet-arm",
                          gettext_noop

Modified: gnunet/src/ats/perf_ats_mlp.c
===================================================================
--- gnunet/src/ats/perf_ats_mlp.c       2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/ats/perf_ats_mlp.c       2012-06-10 22:47:57 UTC (rev 21867)
@@ -360,6 +360,8 @@
     GNUNET_GETOPT_OPTION_END
   };
 
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
 
   GNUNET_PROGRAM_run (argc, argv,
                       "perf_ats_mlp", "nohelp", options,

Modified: gnunet/src/chat/gnunet-chat.c
===================================================================
--- gnunet/src/chat/gnunet-chat.c       2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/chat/gnunet-chat.c       2012-06-10 22:47:57 UTC (rev 21867)
@@ -737,6 +737,10 @@
   flags |= O_NONBLOCK;
   fcntl (0, F_SETFL, flags);
 #endif
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-chat",
                               gettext_noop ("Join a chat on GNUnet."), options,

Modified: gnunet/src/core/gnunet-core.c
===================================================================
--- gnunet/src/core/gnunet-core.c       2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/core/gnunet-core.c       2012-06-10 22:47:57 UTC (rev 21867)
@@ -89,6 +89,10 @@
   static const struct GNUNET_GETOPT_CommandLineOption options[] = {
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-core",
                               gettext_noop

Modified: gnunet/src/dht/gnunet-dht-get.c
===================================================================
--- gnunet/src/dht/gnunet-dht-get.c     2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/dht/gnunet-dht-get.c     2012-06-10 22:47:57 UTC (rev 21867)
@@ -226,6 +226,10 @@
 int
 main (int argc, char *const *argv)
 {
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-dht-get",
                               gettext_noop

Modified: gnunet/src/dht/gnunet-dht-monitor.c
===================================================================
--- gnunet/src/dht/gnunet-dht-monitor.c 2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/dht/gnunet-dht-monitor.c 2012-06-10 22:47:57 UTC (rev 21867)
@@ -315,6 +315,9 @@
 int
 main (int argc, char *const *argv)
 {
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-dht-get",
                               gettext_noop

Modified: gnunet/src/dht/gnunet-dht-put.c
===================================================================
--- gnunet/src/dht/gnunet-dht-put.c     2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/dht/gnunet-dht-put.c     2012-06-10 22:47:57 UTC (rev 21867)
@@ -217,6 +217,9 @@
 int
 main (int argc, char *const *argv)
 {
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-dht-put",
                               gettext_noop

Modified: gnunet/src/dns/gnunet-dns-monitor.c
===================================================================
--- gnunet/src/dns/gnunet-dns-monitor.c 2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/dns/gnunet-dns-monitor.c 2012-06-10 22:47:57 UTC (rev 21867)
@@ -342,6 +342,10 @@
     GNUNET_GETOPT_OPTION_VERBOSE (&verbosity),
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-dns-monitor",
                               gettext_noop

Modified: gnunet/src/dns/gnunet-dns-redirector.c
===================================================================
--- gnunet/src/dns/gnunet-dns-redirector.c      2012-06-10 22:44:32 UTC (rev 
21866)
+++ gnunet/src/dns/gnunet-dns-redirector.c      2012-06-10 22:47:57 UTC (rev 
21867)
@@ -241,6 +241,10 @@
     GNUNET_GETOPT_OPTION_VERBOSE (&verbosity),
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-dns-redirector",
                               gettext_noop

Modified: gnunet/src/exit/gnunet-daemon-exit.c
===================================================================
--- gnunet/src/exit/gnunet-daemon-exit.c        2012-06-10 22:44:32 UTC (rev 
21866)
+++ gnunet/src/exit/gnunet-daemon-exit.c        2012-06-10 22:47:57 UTC (rev 
21867)
@@ -3230,6 +3230,9 @@
     GNUNET_GETOPT_OPTION_END
   };
 
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-daemon-exit",
                               gettext_noop

Modified: gnunet/src/fs/gnunet-directory.c
===================================================================
--- gnunet/src/fs/gnunet-directory.c    2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/fs/gnunet-directory.c    2012-06-10 22:47:57 UTC (rev 21867)
@@ -173,6 +173,10 @@
   static struct GNUNET_GETOPT_CommandLineOption options[] = {
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-directory [OPTIONS] 
FILENAME",
                               gettext_noop

Modified: gnunet/src/fs/gnunet-download.c
===================================================================
--- gnunet/src/fs/gnunet-download.c     2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/fs/gnunet-download.c     2012-06-10 22:47:57 UTC (rev 21867)
@@ -272,6 +272,10 @@
      0, &GNUNET_GETOPT_increment_value, &verbose},
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-download [OPTIONS] URI",
                               gettext_noop

Modified: gnunet/src/fs/gnunet-fs.c
===================================================================
--- gnunet/src/fs/gnunet-fs.c   2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/fs/gnunet-fs.c   2012-06-10 22:47:57 UTC (rev 21867)
@@ -119,6 +119,10 @@
     GNUNET_GETOPT_OPTION_VERBOSE (&verbose),
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-fs [OPTIONS]",
                               gettext_noop ("Special file-sharing operations"),

Modified: gnunet/src/fs/gnunet-helper-fs-publish.c
===================================================================
--- gnunet/src/fs/gnunet-helper-fs-publish.c    2012-06-10 22:44:32 UTC (rev 
21866)
+++ gnunet/src/fs/gnunet-helper-fs-publish.c    2012-06-10 22:47:57 UTC (rev 
21867)
@@ -413,7 +413,7 @@
  * @return 0 on success
  */
 int main(int argc,
-        char **argv)
+        char *const *argv)
 {
   const char *filename_expanded;
   const char *ex;
@@ -424,6 +424,9 @@
    * binary mode.
    */
   _setmode (1, _O_BINARY);
+  /* Get utf-8-encoded arguments */
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 5;
 #endif
 
   /* parse command line */

Modified: gnunet/src/fs/gnunet-pseudonym.c
===================================================================
--- gnunet/src/fs/gnunet-pseudonym.c    2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/fs/gnunet-pseudonym.c    2012-06-10 22:47:57 UTC (rev 21867)
@@ -313,6 +313,10 @@
   };
   bo.expiration_time =
       GNUNET_FS_year_to_time (GNUNET_FS_get_current_year () + 2);
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-pseudonym [OPTIONS]",
                               gettext_noop ("Manage GNUnet pseudonyms."),

Modified: gnunet/src/fs/gnunet-publish.c
===================================================================
--- gnunet/src/fs/gnunet-publish.c      2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/fs/gnunet-publish.c      2012-06-10 22:47:57 UTC (rev 21867)
@@ -736,6 +736,10 @@
              "GNUnet publish starts\n");
   bo.expiration_time =
       GNUNET_FS_year_to_time (GNUNET_FS_get_current_year () + 2);
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-publish [OPTIONS] FILENAME",
                               gettext_noop

Modified: gnunet/src/fs/gnunet-search.c
===================================================================
--- gnunet/src/fs/gnunet-search.c       2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/fs/gnunet-search.c       2012-06-10 22:47:57 UTC (rev 21867)
@@ -302,6 +302,10 @@
      1, &GNUNET_GETOPT_set_uint, &results_limit},
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-search [OPTIONS] KEYWORD",
                               gettext_noop

Modified: gnunet/src/fs/gnunet-unindex.c
===================================================================
--- gnunet/src/fs/gnunet-unindex.c      2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/fs/gnunet-unindex.c      2012-06-10 22:47:57 UTC (rev 21867)
@@ -170,6 +170,10 @@
      0, &GNUNET_GETOPT_set_one, &verbose},
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-unindex [OPTIONS] FILENAME",
                               gettext_noop

Modified: gnunet/src/gns/gnunet-gns-fcfsd.c
===================================================================
--- gnunet/src/gns/gnunet-gns-fcfsd.c   2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/gns/gnunet-gns-fcfsd.c   2012-06-10 22:47:57 UTC (rev 21867)
@@ -797,6 +797,9 @@
 
   int ret;
 
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   GNUNET_log_setup ("fcfsd", "WARNING", NULL);
   ret =
       (GNUNET_OK ==

Modified: gnunet/src/gns/gnunet-gns-lookup.c
===================================================================
--- gnunet/src/gns/gnunet-gns-lookup.c  2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/gns/gnunet-gns-lookup.c  2012-06-10 22:47:57 UTC (rev 21867)
@@ -204,6 +204,9 @@
 int
 main (int argc, char *const *argv)
 {
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-gns-get",
                               gettext_noop

Modified: gnunet/src/gns/gnunet-gns-proxy.c
===================================================================
--- gnunet/src/gns/gnunet-gns-proxy.c   2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/gns/gnunet-gns-proxy.c   2012-06-10 22:47:57 UTC (rev 21867)
@@ -2320,6 +2320,9 @@
 
   int ret;
 
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   GNUNET_log_setup ("gnunet-gns-proxy", "WARNING", NULL);
   ret =
       (GNUNET_OK ==

Modified: gnunet/src/gns/gnunet-gns.c
===================================================================
--- gnunet/src/gns/gnunet-gns.c 2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/gns/gnunet-gns.c 2012-06-10 22:47:57 UTC (rev 21867)
@@ -248,6 +248,9 @@
 
   int ret;
 
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   GNUNET_log_setup ("gnunet-gns", "WARNING", NULL);
   ret =
       (GNUNET_OK ==

Modified: gnunet/src/hostlist/gnunet-daemon-hostlist.c
===================================================================
--- gnunet/src/hostlist/gnunet-daemon-hostlist.c        2012-06-10 22:44:32 UTC 
(rev 21866)
+++ gnunet/src/hostlist/gnunet-daemon-hostlist.c        2012-06-10 22:47:57 UTC 
(rev 21867)
@@ -334,6 +334,9 @@
 
   int ret;
 
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   GNUNET_log_setup ("hostlist", "WARNING", NULL);
   ret =
       (GNUNET_OK ==

Modified: gnunet/src/include/gnunet_strings_lib.h
===================================================================
--- gnunet/src/include/gnunet_strings_lib.h     2012-06-10 22:44:32 UTC (rev 
21866)
+++ gnunet/src/include/gnunet_strings_lib.h     2012-06-10 22:47:57 UTC (rev 
21867)
@@ -390,6 +390,24 @@
                              struct sockaddr_storage *r_buf);
 
 
+/**
+ * Returns utf-8 encoded arguments.
+ * Does nothing (returns a copy of argc and argv) on any platform
+ * other than W32.
+ * Returned argv has u8argv[u8argc] == NULL.
+ * Returned argv is a single memory block, and can be freed with a single
+ *   GNUNET_free () call.
+ *
+ * @param argc argc (as given by main())
+ * @param argv argv (as given by main())
+ * @param u8argc a location to store new argc in (though it's th same as argc)
+ * @param u8argv a location to store new argv in
+ * @return GNUNET_OK on success, GNUNET_SYSERR on failure
+ */
+int
+GNUNET_STRINGS_get_utf8_args (int argc, char *const *argv, int *u8argc,
+                              char *const **u8argv);
+
 /* ifndef GNUNET_UTIL_STRING_H */
 #endif
 /* end of gnunet_util_string.h */

Modified: gnunet/src/integration-tests/connection_watchdog.c
===================================================================
--- gnunet/src/integration-tests/connection_watchdog.c  2012-06-10 22:44:32 UTC 
(rev 21866)
+++ gnunet/src/integration-tests/connection_watchdog.c  2012-06-10 22:47:57 UTC 
(rev 21867)
@@ -1090,6 +1090,10 @@
     GNUNET_NO, &GNUNET_GETOPT_set_one, &ping},
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "cn",
                               gettext_noop ("help text"), options, &run,

Modified: gnunet/src/namestore/gnunet-namestore.c
===================================================================
--- gnunet/src/namestore/gnunet-namestore.c     2012-06-10 22:44:32 UTC (rev 
21866)
+++ gnunet/src/namestore/gnunet-namestore.c     2012-06-10 22:47:57 UTC (rev 
21867)
@@ -493,6 +493,9 @@
 
   int ret;
 
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   GNUNET_log_setup ("gnunet-namestore", "WARNING", NULL);
   ret =
       (GNUNET_OK ==

Modified: gnunet/src/nat/gnunet-nat-server.c
===================================================================
--- gnunet/src/nat/gnunet-nat-server.c  2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/nat/gnunet-nat-server.c  2012-06-10 22:47:57 UTC (rev 21867)
@@ -313,6 +313,9 @@
     GNUNET_GETOPT_OPTION_END
   };
 
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   if (GNUNET_OK !=
       GNUNET_PROGRAM_run (argc, argv, "gnunet-nat-server [options] PORT",
                           _("GNUnet NAT traversal test helper daemon"), 
options,

Modified: gnunet/src/nse/gnunet-nse-profiler.c
===================================================================
--- gnunet/src/nse/gnunet-nse-profiler.c        2012-06-10 22:44:32 UTC (rev 
21866)
+++ gnunet/src/nse/gnunet-nse-profiler.c        2012-06-10 22:47:57 UTC (rev 
21867)
@@ -914,8 +914,11 @@
 
 
 int
-main (int argc, char *argv[])
+main (int argc, char *const *argv)
 {
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   GNUNET_log_setup ("nse-profiler",
 #if VERBOSE
                     "DEBUG",

Modified: gnunet/src/peerinfo-tool/gnunet-peerinfo.c
===================================================================
--- gnunet/src/peerinfo-tool/gnunet-peerinfo.c  2012-06-10 22:44:32 UTC (rev 
21866)
+++ gnunet/src/peerinfo-tool/gnunet-peerinfo.c  2012-06-10 22:47:57 UTC (rev 
21867)
@@ -952,6 +952,10 @@
      1, &GNUNET_GETOPT_set_string, &put_uri},
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-peerinfo",
                               gettext_noop ("Print information about peers."),

Modified: gnunet/src/pt/gnunet-daemon-pt.c
===================================================================
--- gnunet/src/pt/gnunet-daemon-pt.c    2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/pt/gnunet-daemon-pt.c    2012-06-10 22:47:57 UTC (rev 21867)
@@ -967,6 +967,9 @@
     GNUNET_GETOPT_OPTION_END
   };
 
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-daemon-pt",
                               gettext_noop

Modified: gnunet/src/statistics/gnunet-statistics.c
===================================================================
--- gnunet/src/statistics/gnunet-statistics.c   2012-06-10 22:44:32 UTC (rev 
21866)
+++ gnunet/src/statistics/gnunet-statistics.c   2012-06-10 22:47:57 UTC (rev 
21867)
@@ -240,6 +240,10 @@
      &GNUNET_GETOPT_set_one, &watch},
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-statistics [options 
[value]]",
                               gettext_noop

Modified: gnunet/src/template/gnunet-template.c
===================================================================
--- gnunet/src/template/gnunet-template.c       2012-06-10 22:44:32 UTC (rev 
21866)
+++ gnunet/src/template/gnunet-template.c       2012-06-10 22:47:57 UTC (rev 
21867)
@@ -63,6 +63,10 @@
     /* FIMXE: add options here */
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-template",
                               gettext_noop ("help text"), options, &run,

Modified: gnunet/src/testing_old/gnunet-testing.c
===================================================================
--- gnunet/src/testing_old/gnunet-testing.c     2012-06-10 22:44:32 UTC (rev 
21866)
+++ gnunet/src/testing_old/gnunet-testing.c     2012-06-10 22:47:57 UTC (rev 
21867)
@@ -282,6 +282,10 @@
      GNUNET_YES, &GNUNET_GETOPT_set_string, &create_cfg_template},
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-testing",
                               gettext_noop ("Command line tool to access the 
testing library"), options, &run,

Modified: gnunet/src/topology/gnunet-daemon-topology.c
===================================================================
--- gnunet/src/topology/gnunet-daemon-topology.c        2012-06-10 22:44:32 UTC 
(rev 21866)
+++ gnunet/src/topology/gnunet-daemon-topology.c        2012-06-10 22:47:57 UTC 
(rev 21867)
@@ -1356,6 +1356,9 @@
   };
   int ret;
 
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   ret =
       (GNUNET_OK ==
        GNUNET_PROGRAM_run (argc, argv, "gnunet-daemon-topology",

Modified: gnunet/src/transport/gnunet-transport.c
===================================================================
--- gnunet/src/transport/gnunet-transport.c     2012-06-10 22:44:32 UTC (rev 
21866)
+++ gnunet/src/transport/gnunet-transport.c     2012-06-10 22:47:57 UTC (rev 
21867)
@@ -639,6 +639,10 @@
     GNUNET_GETOPT_OPTION_VERBOSE (&verbosity),
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-transport",
                               gettext_noop

Modified: gnunet/src/util/gnunet-resolver.c
===================================================================
--- gnunet/src/util/gnunet-resolver.c   2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/util/gnunet-resolver.c   2012-06-10 22:47:57 UTC (rev 21867)
@@ -149,6 +149,10 @@
       0, &GNUNET_GETOPT_set_one, &reverse },
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-resolver [hostname]",
                               gettext_noop ("Use build-in GNUnet stub 
resolver"),

Modified: gnunet/src/util/gnunet-rsa.c
===================================================================
--- gnunet/src/util/gnunet-rsa.c        2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/util/gnunet-rsa.c        2012-06-10 22:47:57 UTC (rev 21867)
@@ -119,6 +119,10 @@
       0, &GNUNET_GETOPT_set_one, &print_short_identity },
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-rsa [OPTIONS] keyfile",
                               gettext_noop ("Manipulate GNUnet private RSA key 
files"),

Modified: gnunet/src/util/program.c
===================================================================
--- gnunet/src/util/program.c   2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/util/program.c   2012-06-10 22:47:57 UTC (rev 21867)
@@ -165,6 +165,7 @@
   char *lpfx;
   char *spc;
 
+
   logfile = NULL;
   gargs = getenv ("GNUNET_ARGS");
   if (gargs != NULL)

Modified: gnunet/src/util/strings.c
===================================================================
--- gnunet/src/util/strings.c   2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/util/strings.c   2012-06-10 22:47:57 UTC (rev 21867)
@@ -32,6 +32,7 @@
 #include "gnunet_common.h"
 #include "gnunet_strings_lib.h"
 #include <unicase.h>
+#include <unistr.h>
 
 #define LOG(kind,...) GNUNET_log_from (kind, "util", __VA_ARGS__)
 
@@ -1113,4 +1114,93 @@
   return GNUNET_STRINGS_to_address_ipv4 (addr, addrlen, (struct sockaddr_in *) 
r_buf);
 }
 
+/**
+ * Makes a copy of argv that consists of a single memory chunk that can be
+ * freed with a single call to GNUNET_free ();
+ */
+static char *const *
+_make_continuous_arg_copy (int argc, char *const *argv)
+{
+  size_t argvsize = 0;
+  int i;
+  char **new_argv;
+  char *p;
+  for (i = 0; i < argc; i++)
+    argvsize += strlen (argv[i]) + 1 + sizeof (char *);
+  new_argv = GNUNET_malloc (argvsize + sizeof (char *));
+  p = (char *) &new_argv[argc + 1];
+  for (i = 0; i < argc; i++)
+  {
+    new_argv[i] = p;
+    strcpy (p, argv[i]);
+    p += strlen (argv[i]) + 1;
+  }
+  new_argv[argc] = NULL;
+  return (char *const *) new_argv;
+}
+
+/**
+ * Returns utf-8 encoded arguments.
+ * Does nothing (returns a copy of argc and argv) on any platform
+ * other than W32.
+ * Returned argv has u8argv[u8argc] == NULL.
+ * Returned argv is a single memory block, and can be freed with a single
+ *   GNUNET_free () call.
+ *
+ * @param argc argc (as given by main())
+ * @param argv argv (as given by main())
+ * @param u8argc a location to store new argc in (though it's th same as argc)
+ * @param u8argv a location to store new argv in
+ * @return GNUNET_OK on success, GNUNET_SYSERR on failure
+ */
+int
+GNUNET_STRINGS_get_utf8_args (int argc, char *const *argv, int *u8argc, char 
*const **u8argv)
+{
+#if WINDOWS
+  wchar_t *wcmd;
+  wchar_t **wargv;
+  int wargc;
+  int i;
+  char **split_u8argv;
+
+  wcmd = GetCommandLineW ();
+  if (NULL == wcmd)
+    return GNUNET_SYSERR;
+  wargv = CommandLineToArgvW (wcmd, &wargc);
+  if (NULL == wargv)
+    return GNUNET_SYSERR;
+
+  split_u8argv = GNUNET_malloc (argc * sizeof (char *));
+
+  for (i = 0; i < wargc; i++)
+  {
+    size_t strl;
+    /* Hopefully it will allocate us NUL-terminated strings... */
+    split_u8argv[i] = (char *) u16_to_u8 (wargv[i], wcslen (wargv[i]) + 1, 
NULL, &strl);
+    if (split_u8argv == NULL)
+    {
+      int j;
+      for (j = 0; j < i; j++)
+        free (split_u8argv[j]);
+      GNUNET_free (split_u8argv);
+      LocalFree (wargv);
+      return GNUNET_SYSERR;
+    }
+  }
+
+  *u8argv = _make_continuous_arg_copy (wargc, split_u8argv);
+  *u8argc = wargc;
+
+  for (i = 0; i < wargc; i++)
+    free (split_u8argv[i]);
+  free (split_u8argv);
+  return GNUNET_OK;
+#else
+  char *const *new_argv = (char *const *) _make_continuous_arg_copy (argc, 
argv);
+  *u8argv = new_argv;
+  *u8argc = argc;
+  return GNUNET_OK;
+#endif
+}
+
 /* end of strings.c */

Modified: gnunet/src/vpn/gnunet-vpn.c
===================================================================
--- gnunet/src/vpn/gnunet-vpn.c 2012-06-10 22:44:32 UTC (rev 21866)
+++ gnunet/src/vpn/gnunet-vpn.c 2012-06-10 22:47:57 UTC (rev 21867)
@@ -323,6 +323,10 @@
     GNUNET_GETOPT_OPTION_VERBOSE (&verbosity),
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-vpn",
                               gettext_noop




reply via email to

[Prev in Thread] Current Thread [Next in Thread]