diff options
40 files changed, 242 insertions, 2 deletions
diff --git a/src/arm/gnunet-arm.c b/src/arm/gnunet-arm.c index 58aa70957..744c3f208 100644 --- a/src/arm/gnunet-arm.c +++ b/src/arm/gnunet-arm.c | |||
@@ -431,6 +431,9 @@ main (int argc, char *const *argv) | |||
431 | if (temp_timeout_ms > 0) | 431 | if (temp_timeout_ms > 0) |
432 | timeout.rel_value = temp_timeout_ms; | 432 | timeout.rel_value = temp_timeout_ms; |
433 | 433 | ||
434 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
435 | return 2; | ||
436 | |||
434 | if (GNUNET_OK == | 437 | if (GNUNET_OK == |
435 | GNUNET_PROGRAM_run (argc, argv, "gnunet-arm", | 438 | GNUNET_PROGRAM_run (argc, argv, "gnunet-arm", |
436 | gettext_noop | 439 | gettext_noop |
diff --git a/src/ats/perf_ats_mlp.c b/src/ats/perf_ats_mlp.c index b9ee5e4dc..ff2d8dada 100644 --- a/src/ats/perf_ats_mlp.c +++ b/src/ats/perf_ats_mlp.c | |||
@@ -360,6 +360,8 @@ main (int argc, char *argv[]) | |||
360 | GNUNET_GETOPT_OPTION_END | 360 | GNUNET_GETOPT_OPTION_END |
361 | }; | 361 | }; |
362 | 362 | ||
363 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
364 | return 2; | ||
363 | 365 | ||
364 | GNUNET_PROGRAM_run (argc, argv, | 366 | GNUNET_PROGRAM_run (argc, argv, |
365 | "perf_ats_mlp", "nohelp", options, | 367 | "perf_ats_mlp", "nohelp", options, |
diff --git a/src/chat/gnunet-chat.c b/src/chat/gnunet-chat.c index 7b11c0d18..012f78ed9 100644 --- a/src/chat/gnunet-chat.c +++ b/src/chat/gnunet-chat.c | |||
@@ -737,6 +737,10 @@ main (int argc, char *const *argv) | |||
737 | flags |= O_NONBLOCK; | 737 | flags |= O_NONBLOCK; |
738 | fcntl (0, F_SETFL, flags); | 738 | fcntl (0, F_SETFL, flags); |
739 | #endif | 739 | #endif |
740 | |||
741 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
742 | return 2; | ||
743 | |||
740 | return (GNUNET_OK == | 744 | return (GNUNET_OK == |
741 | GNUNET_PROGRAM_run (argc, argv, "gnunet-chat", | 745 | GNUNET_PROGRAM_run (argc, argv, "gnunet-chat", |
742 | gettext_noop ("Join a chat on GNUnet."), options, | 746 | gettext_noop ("Join a chat on GNUnet."), options, |
diff --git a/src/core/gnunet-core.c b/src/core/gnunet-core.c index 4fe0a4f86..78bc14154 100644 --- a/src/core/gnunet-core.c +++ b/src/core/gnunet-core.c | |||
@@ -89,6 +89,10 @@ main (int argc, char *const *argv) | |||
89 | static const struct GNUNET_GETOPT_CommandLineOption options[] = { | 89 | static const struct GNUNET_GETOPT_CommandLineOption options[] = { |
90 | GNUNET_GETOPT_OPTION_END | 90 | GNUNET_GETOPT_OPTION_END |
91 | }; | 91 | }; |
92 | |||
93 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
94 | return 2; | ||
95 | |||
92 | return (GNUNET_OK == | 96 | return (GNUNET_OK == |
93 | GNUNET_PROGRAM_run (argc, argv, "gnunet-core", | 97 | GNUNET_PROGRAM_run (argc, argv, "gnunet-core", |
94 | gettext_noop | 98 | gettext_noop |
diff --git a/src/dht/gnunet-dht-get.c b/src/dht/gnunet-dht-get.c index fb185c489..7555f9009 100644 --- a/src/dht/gnunet-dht-get.c +++ b/src/dht/gnunet-dht-get.c | |||
@@ -226,6 +226,10 @@ static struct GNUNET_GETOPT_CommandLineOption options[] = { | |||
226 | int | 226 | int |
227 | main (int argc, char *const *argv) | 227 | main (int argc, char *const *argv) |
228 | { | 228 | { |
229 | |||
230 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
231 | return 2; | ||
232 | |||
229 | return (GNUNET_OK == | 233 | return (GNUNET_OK == |
230 | GNUNET_PROGRAM_run (argc, argv, "gnunet-dht-get", | 234 | GNUNET_PROGRAM_run (argc, argv, "gnunet-dht-get", |
231 | gettext_noop | 235 | gettext_noop |
diff --git a/src/dht/gnunet-dht-monitor.c b/src/dht/gnunet-dht-monitor.c index 8ca3beb2a..088874a53 100644 --- a/src/dht/gnunet-dht-monitor.c +++ b/src/dht/gnunet-dht-monitor.c | |||
@@ -315,6 +315,9 @@ static struct GNUNET_GETOPT_CommandLineOption options[] = { | |||
315 | int | 315 | int |
316 | main (int argc, char *const *argv) | 316 | main (int argc, char *const *argv) |
317 | { | 317 | { |
318 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
319 | return 2; | ||
320 | |||
318 | return (GNUNET_OK == | 321 | return (GNUNET_OK == |
319 | GNUNET_PROGRAM_run (argc, argv, "gnunet-dht-get", | 322 | GNUNET_PROGRAM_run (argc, argv, "gnunet-dht-get", |
320 | gettext_noop | 323 | gettext_noop |
diff --git a/src/dht/gnunet-dht-put.c b/src/dht/gnunet-dht-put.c index 59acc792b..f6409bdff 100644 --- a/src/dht/gnunet-dht-put.c +++ b/src/dht/gnunet-dht-put.c | |||
@@ -217,6 +217,9 @@ static struct GNUNET_GETOPT_CommandLineOption options[] = { | |||
217 | int | 217 | int |
218 | main (int argc, char *const *argv) | 218 | main (int argc, char *const *argv) |
219 | { | 219 | { |
220 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
221 | return 2; | ||
222 | |||
220 | return (GNUNET_OK == | 223 | return (GNUNET_OK == |
221 | GNUNET_PROGRAM_run (argc, argv, "gnunet-dht-put", | 224 | GNUNET_PROGRAM_run (argc, argv, "gnunet-dht-put", |
222 | gettext_noop | 225 | gettext_noop |
diff --git a/src/dns/gnunet-dns-monitor.c b/src/dns/gnunet-dns-monitor.c index 82715aabc..2a05efdee 100644 --- a/src/dns/gnunet-dns-monitor.c +++ b/src/dns/gnunet-dns-monitor.c | |||
@@ -342,6 +342,10 @@ main (int argc, char *const *argv) | |||
342 | GNUNET_GETOPT_OPTION_VERBOSE (&verbosity), | 342 | GNUNET_GETOPT_OPTION_VERBOSE (&verbosity), |
343 | GNUNET_GETOPT_OPTION_END | 343 | GNUNET_GETOPT_OPTION_END |
344 | }; | 344 | }; |
345 | |||
346 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
347 | return 2; | ||
348 | |||
345 | return (GNUNET_OK == | 349 | return (GNUNET_OK == |
346 | GNUNET_PROGRAM_run (argc, argv, "gnunet-dns-monitor", | 350 | GNUNET_PROGRAM_run (argc, argv, "gnunet-dns-monitor", |
347 | gettext_noop | 351 | gettext_noop |
diff --git a/src/dns/gnunet-dns-redirector.c b/src/dns/gnunet-dns-redirector.c index a45b89609..5ba7e87c6 100644 --- a/src/dns/gnunet-dns-redirector.c +++ b/src/dns/gnunet-dns-redirector.c | |||
@@ -241,6 +241,10 @@ main (int argc, char *const *argv) | |||
241 | GNUNET_GETOPT_OPTION_VERBOSE (&verbosity), | 241 | GNUNET_GETOPT_OPTION_VERBOSE (&verbosity), |
242 | GNUNET_GETOPT_OPTION_END | 242 | GNUNET_GETOPT_OPTION_END |
243 | }; | 243 | }; |
244 | |||
245 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
246 | return 2; | ||
247 | |||
244 | return (GNUNET_OK == | 248 | return (GNUNET_OK == |
245 | GNUNET_PROGRAM_run (argc, argv, "gnunet-dns-redirector", | 249 | GNUNET_PROGRAM_run (argc, argv, "gnunet-dns-redirector", |
246 | gettext_noop | 250 | gettext_noop |
diff --git a/src/exit/gnunet-daemon-exit.c b/src/exit/gnunet-daemon-exit.c index 26f3e7536..216625567 100644 --- a/src/exit/gnunet-daemon-exit.c +++ b/src/exit/gnunet-daemon-exit.c | |||
@@ -3230,6 +3230,9 @@ main (int argc, char *const *argv) | |||
3230 | GNUNET_GETOPT_OPTION_END | 3230 | GNUNET_GETOPT_OPTION_END |
3231 | }; | 3231 | }; |
3232 | 3232 | ||
3233 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
3234 | return 2; | ||
3235 | |||
3233 | return (GNUNET_OK == | 3236 | return (GNUNET_OK == |
3234 | GNUNET_PROGRAM_run (argc, argv, "gnunet-daemon-exit", | 3237 | GNUNET_PROGRAM_run (argc, argv, "gnunet-daemon-exit", |
3235 | gettext_noop | 3238 | gettext_noop |
diff --git a/src/fs/gnunet-directory.c b/src/fs/gnunet-directory.c index c722f57ff..4122cb154 100644 --- a/src/fs/gnunet-directory.c +++ b/src/fs/gnunet-directory.c | |||
@@ -173,6 +173,10 @@ main (int argc, char *const *argv) | |||
173 | static struct GNUNET_GETOPT_CommandLineOption options[] = { | 173 | static struct GNUNET_GETOPT_CommandLineOption options[] = { |
174 | GNUNET_GETOPT_OPTION_END | 174 | GNUNET_GETOPT_OPTION_END |
175 | }; | 175 | }; |
176 | |||
177 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
178 | return 2; | ||
179 | |||
176 | return (GNUNET_OK == | 180 | return (GNUNET_OK == |
177 | GNUNET_PROGRAM_run (argc, argv, "gnunet-directory [OPTIONS] FILENAME", | 181 | GNUNET_PROGRAM_run (argc, argv, "gnunet-directory [OPTIONS] FILENAME", |
178 | gettext_noop | 182 | gettext_noop |
diff --git a/src/fs/gnunet-download.c b/src/fs/gnunet-download.c index 5a66aea27..bd5b09c0d 100644 --- a/src/fs/gnunet-download.c +++ b/src/fs/gnunet-download.c | |||
@@ -272,6 +272,10 @@ main (int argc, char *const *argv) | |||
272 | 0, &GNUNET_GETOPT_increment_value, &verbose}, | 272 | 0, &GNUNET_GETOPT_increment_value, &verbose}, |
273 | GNUNET_GETOPT_OPTION_END | 273 | GNUNET_GETOPT_OPTION_END |
274 | }; | 274 | }; |
275 | |||
276 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
277 | return 2; | ||
278 | |||
275 | return (GNUNET_OK == | 279 | return (GNUNET_OK == |
276 | GNUNET_PROGRAM_run (argc, argv, "gnunet-download [OPTIONS] URI", | 280 | GNUNET_PROGRAM_run (argc, argv, "gnunet-download [OPTIONS] URI", |
277 | gettext_noop | 281 | gettext_noop |
diff --git a/src/fs/gnunet-fs.c b/src/fs/gnunet-fs.c index 0b2892371..404c64e4d 100644 --- a/src/fs/gnunet-fs.c +++ b/src/fs/gnunet-fs.c | |||
@@ -119,6 +119,10 @@ main (int argc, char *const *argv) | |||
119 | GNUNET_GETOPT_OPTION_VERBOSE (&verbose), | 119 | GNUNET_GETOPT_OPTION_VERBOSE (&verbose), |
120 | GNUNET_GETOPT_OPTION_END | 120 | GNUNET_GETOPT_OPTION_END |
121 | }; | 121 | }; |
122 | |||
123 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
124 | return 2; | ||
125 | |||
122 | return (GNUNET_OK == | 126 | return (GNUNET_OK == |
123 | GNUNET_PROGRAM_run (argc, argv, "gnunet-fs [OPTIONS]", | 127 | GNUNET_PROGRAM_run (argc, argv, "gnunet-fs [OPTIONS]", |
124 | gettext_noop ("Special file-sharing operations"), | 128 | gettext_noop ("Special file-sharing operations"), |
diff --git a/src/fs/gnunet-helper-fs-publish.c b/src/fs/gnunet-helper-fs-publish.c index 86b02492d..45f6d588d 100644 --- a/src/fs/gnunet-helper-fs-publish.c +++ b/src/fs/gnunet-helper-fs-publish.c | |||
@@ -413,7 +413,7 @@ extract_files (struct ScanTreeNode *item) | |||
413 | * @return 0 on success | 413 | * @return 0 on success |
414 | */ | 414 | */ |
415 | int main(int argc, | 415 | int main(int argc, |
416 | char **argv) | 416 | char *const *argv) |
417 | { | 417 | { |
418 | const char *filename_expanded; | 418 | const char *filename_expanded; |
419 | const char *ex; | 419 | const char *ex; |
@@ -424,6 +424,9 @@ int main(int argc, | |||
424 | * binary mode. | 424 | * binary mode. |
425 | */ | 425 | */ |
426 | _setmode (1, _O_BINARY); | 426 | _setmode (1, _O_BINARY); |
427 | /* Get utf-8-encoded arguments */ | ||
428 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
429 | return 5; | ||
427 | #endif | 430 | #endif |
428 | 431 | ||
429 | /* parse command line */ | 432 | /* parse command line */ |
diff --git a/src/fs/gnunet-pseudonym.c b/src/fs/gnunet-pseudonym.c index 38826d1de..2b1b897c2 100644 --- a/src/fs/gnunet-pseudonym.c +++ b/src/fs/gnunet-pseudonym.c | |||
@@ -313,6 +313,10 @@ main (int argc, char *const *argv) | |||
313 | }; | 313 | }; |
314 | bo.expiration_time = | 314 | bo.expiration_time = |
315 | GNUNET_FS_year_to_time (GNUNET_FS_get_current_year () + 2); | 315 | GNUNET_FS_year_to_time (GNUNET_FS_get_current_year () + 2); |
316 | |||
317 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
318 | return 2; | ||
319 | |||
316 | return (GNUNET_OK == | 320 | return (GNUNET_OK == |
317 | GNUNET_PROGRAM_run (argc, argv, "gnunet-pseudonym [OPTIONS]", | 321 | GNUNET_PROGRAM_run (argc, argv, "gnunet-pseudonym [OPTIONS]", |
318 | gettext_noop ("Manage GNUnet pseudonyms."), | 322 | gettext_noop ("Manage GNUnet pseudonyms."), |
diff --git a/src/fs/gnunet-publish.c b/src/fs/gnunet-publish.c index a1b26dbd5..24e49d369 100644 --- a/src/fs/gnunet-publish.c +++ b/src/fs/gnunet-publish.c | |||
@@ -736,6 +736,10 @@ main (int argc, char *const *argv) | |||
736 | "GNUnet publish starts\n"); | 736 | "GNUnet publish starts\n"); |
737 | bo.expiration_time = | 737 | bo.expiration_time = |
738 | GNUNET_FS_year_to_time (GNUNET_FS_get_current_year () + 2); | 738 | GNUNET_FS_year_to_time (GNUNET_FS_get_current_year () + 2); |
739 | |||
740 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
741 | return 2; | ||
742 | |||
739 | return (GNUNET_OK == | 743 | return (GNUNET_OK == |
740 | GNUNET_PROGRAM_run (argc, argv, "gnunet-publish [OPTIONS] FILENAME", | 744 | GNUNET_PROGRAM_run (argc, argv, "gnunet-publish [OPTIONS] FILENAME", |
741 | gettext_noop | 745 | gettext_noop |
diff --git a/src/fs/gnunet-search.c b/src/fs/gnunet-search.c index 60620a4b3..88507f608 100644 --- a/src/fs/gnunet-search.c +++ b/src/fs/gnunet-search.c | |||
@@ -302,6 +302,10 @@ main (int argc, char *const *argv) | |||
302 | 1, &GNUNET_GETOPT_set_uint, &results_limit}, | 302 | 1, &GNUNET_GETOPT_set_uint, &results_limit}, |
303 | GNUNET_GETOPT_OPTION_END | 303 | GNUNET_GETOPT_OPTION_END |
304 | }; | 304 | }; |
305 | |||
306 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
307 | return 2; | ||
308 | |||
305 | return (GNUNET_OK == | 309 | return (GNUNET_OK == |
306 | GNUNET_PROGRAM_run (argc, argv, "gnunet-search [OPTIONS] KEYWORD", | 310 | GNUNET_PROGRAM_run (argc, argv, "gnunet-search [OPTIONS] KEYWORD", |
307 | gettext_noop | 311 | gettext_noop |
diff --git a/src/fs/gnunet-unindex.c b/src/fs/gnunet-unindex.c index 3e8308df2..f4e352737 100644 --- a/src/fs/gnunet-unindex.c +++ b/src/fs/gnunet-unindex.c | |||
@@ -170,6 +170,10 @@ main (int argc, char *const *argv) | |||
170 | 0, &GNUNET_GETOPT_set_one, &verbose}, | 170 | 0, &GNUNET_GETOPT_set_one, &verbose}, |
171 | GNUNET_GETOPT_OPTION_END | 171 | GNUNET_GETOPT_OPTION_END |
172 | }; | 172 | }; |
173 | |||
174 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
175 | return 2; | ||
176 | |||
173 | return (GNUNET_OK == | 177 | return (GNUNET_OK == |
174 | GNUNET_PROGRAM_run (argc, argv, "gnunet-unindex [OPTIONS] FILENAME", | 178 | GNUNET_PROGRAM_run (argc, argv, "gnunet-unindex [OPTIONS] FILENAME", |
175 | gettext_noop | 179 | gettext_noop |
diff --git a/src/gns/gnunet-gns-fcfsd.c b/src/gns/gnunet-gns-fcfsd.c index cd4e8e72d..b919b4fed 100644 --- a/src/gns/gnunet-gns-fcfsd.c +++ b/src/gns/gnunet-gns-fcfsd.c | |||
@@ -797,6 +797,9 @@ main (int argc, char *const *argv) | |||
797 | 797 | ||
798 | int ret; | 798 | int ret; |
799 | 799 | ||
800 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
801 | return 2; | ||
802 | |||
800 | GNUNET_log_setup ("fcfsd", "WARNING", NULL); | 803 | GNUNET_log_setup ("fcfsd", "WARNING", NULL); |
801 | ret = | 804 | ret = |
802 | (GNUNET_OK == | 805 | (GNUNET_OK == |
diff --git a/src/gns/gnunet-gns-lookup.c b/src/gns/gnunet-gns-lookup.c index f33264f61..bcd2b5bcc 100644 --- a/src/gns/gnunet-gns-lookup.c +++ b/src/gns/gnunet-gns-lookup.c | |||
@@ -204,6 +204,9 @@ static struct GNUNET_GETOPT_CommandLineOption options[] = { | |||
204 | int | 204 | int |
205 | main (int argc, char *const *argv) | 205 | main (int argc, char *const *argv) |
206 | { | 206 | { |
207 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
208 | return 2; | ||
209 | |||
207 | return (GNUNET_OK == | 210 | return (GNUNET_OK == |
208 | GNUNET_PROGRAM_run (argc, argv, "gnunet-gns-get", | 211 | GNUNET_PROGRAM_run (argc, argv, "gnunet-gns-get", |
209 | gettext_noop | 212 | gettext_noop |
diff --git a/src/gns/gnunet-gns-proxy.c b/src/gns/gnunet-gns-proxy.c index b35cacad0..2fef34343 100644 --- a/src/gns/gnunet-gns-proxy.c +++ b/src/gns/gnunet-gns-proxy.c | |||
@@ -2320,6 +2320,9 @@ main (int argc, char *const *argv) | |||
2320 | 2320 | ||
2321 | int ret; | 2321 | int ret; |
2322 | 2322 | ||
2323 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
2324 | return 2; | ||
2325 | |||
2323 | GNUNET_log_setup ("gnunet-gns-proxy", "WARNING", NULL); | 2326 | GNUNET_log_setup ("gnunet-gns-proxy", "WARNING", NULL); |
2324 | ret = | 2327 | ret = |
2325 | (GNUNET_OK == | 2328 | (GNUNET_OK == |
diff --git a/src/gns/gnunet-gns.c b/src/gns/gnunet-gns.c index 2a49ba1c2..1efe74842 100644 --- a/src/gns/gnunet-gns.c +++ b/src/gns/gnunet-gns.c | |||
@@ -248,6 +248,9 @@ main (int argc, char *const *argv) | |||
248 | 248 | ||
249 | int ret; | 249 | int ret; |
250 | 250 | ||
251 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
252 | return 2; | ||
253 | |||
251 | GNUNET_log_setup ("gnunet-gns", "WARNING", NULL); | 254 | GNUNET_log_setup ("gnunet-gns", "WARNING", NULL); |
252 | ret = | 255 | ret = |
253 | (GNUNET_OK == | 256 | (GNUNET_OK == |
diff --git a/src/hostlist/gnunet-daemon-hostlist.c b/src/hostlist/gnunet-daemon-hostlist.c index 8b7bf3a3e..6637f37ce 100644 --- a/src/hostlist/gnunet-daemon-hostlist.c +++ b/src/hostlist/gnunet-daemon-hostlist.c | |||
@@ -334,6 +334,9 @@ main (int argc, char *const *argv) | |||
334 | 334 | ||
335 | int ret; | 335 | int ret; |
336 | 336 | ||
337 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
338 | return 2; | ||
339 | |||
337 | GNUNET_log_setup ("hostlist", "WARNING", NULL); | 340 | GNUNET_log_setup ("hostlist", "WARNING", NULL); |
338 | ret = | 341 | ret = |
339 | (GNUNET_OK == | 342 | (GNUNET_OK == |
diff --git a/src/include/gnunet_strings_lib.h b/src/include/gnunet_strings_lib.h index 54d2e3034..d68ca5c78 100644 --- a/src/include/gnunet_strings_lib.h +++ b/src/include/gnunet_strings_lib.h | |||
@@ -390,6 +390,24 @@ GNUNET_STRINGS_to_address_ip (const char *addr, | |||
390 | struct sockaddr_storage *r_buf); | 390 | struct sockaddr_storage *r_buf); |
391 | 391 | ||
392 | 392 | ||
393 | /** | ||
394 | * Returns utf-8 encoded arguments. | ||
395 | * Does nothing (returns a copy of argc and argv) on any platform | ||
396 | * other than W32. | ||
397 | * Returned argv has u8argv[u8argc] == NULL. | ||
398 | * Returned argv is a single memory block, and can be freed with a single | ||
399 | * GNUNET_free () call. | ||
400 | * | ||
401 | * @param argc argc (as given by main()) | ||
402 | * @param argv argv (as given by main()) | ||
403 | * @param u8argc a location to store new argc in (though it's th same as argc) | ||
404 | * @param u8argv a location to store new argv in | ||
405 | * @return GNUNET_OK on success, GNUNET_SYSERR on failure | ||
406 | */ | ||
407 | int | ||
408 | GNUNET_STRINGS_get_utf8_args (int argc, char *const *argv, int *u8argc, | ||
409 | char *const **u8argv); | ||
410 | |||
393 | /* ifndef GNUNET_UTIL_STRING_H */ | 411 | /* ifndef GNUNET_UTIL_STRING_H */ |
394 | #endif | 412 | #endif |
395 | /* end of gnunet_util_string.h */ | 413 | /* end of gnunet_util_string.h */ |
diff --git a/src/integration-tests/connection_watchdog.c b/src/integration-tests/connection_watchdog.c index a06b5a763..bcf9d0379 100644 --- a/src/integration-tests/connection_watchdog.c +++ b/src/integration-tests/connection_watchdog.c | |||
@@ -1090,6 +1090,10 @@ main (int argc, char *const *argv) | |||
1090 | GNUNET_NO, &GNUNET_GETOPT_set_one, &ping}, | 1090 | GNUNET_NO, &GNUNET_GETOPT_set_one, &ping}, |
1091 | GNUNET_GETOPT_OPTION_END | 1091 | GNUNET_GETOPT_OPTION_END |
1092 | }; | 1092 | }; |
1093 | |||
1094 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
1095 | return 2; | ||
1096 | |||
1093 | return (GNUNET_OK == | 1097 | return (GNUNET_OK == |
1094 | GNUNET_PROGRAM_run (argc, argv, "cn", | 1098 | GNUNET_PROGRAM_run (argc, argv, "cn", |
1095 | gettext_noop ("help text"), options, &run, | 1099 | gettext_noop ("help text"), options, &run, |
diff --git a/src/namestore/gnunet-namestore.c b/src/namestore/gnunet-namestore.c index a0d1de10a..624981201 100644 --- a/src/namestore/gnunet-namestore.c +++ b/src/namestore/gnunet-namestore.c | |||
@@ -493,6 +493,9 @@ main (int argc, char *const *argv) | |||
493 | 493 | ||
494 | int ret; | 494 | int ret; |
495 | 495 | ||
496 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
497 | return 2; | ||
498 | |||
496 | GNUNET_log_setup ("gnunet-namestore", "WARNING", NULL); | 499 | GNUNET_log_setup ("gnunet-namestore", "WARNING", NULL); |
497 | ret = | 500 | ret = |
498 | (GNUNET_OK == | 501 | (GNUNET_OK == |
diff --git a/src/nat/gnunet-nat-server.c b/src/nat/gnunet-nat-server.c index 9b6846cf0..e971bd3b1 100644 --- a/src/nat/gnunet-nat-server.c +++ b/src/nat/gnunet-nat-server.c | |||
@@ -313,6 +313,9 @@ main (int argc, char *const argv[]) | |||
313 | GNUNET_GETOPT_OPTION_END | 313 | GNUNET_GETOPT_OPTION_END |
314 | }; | 314 | }; |
315 | 315 | ||
316 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
317 | return 2; | ||
318 | |||
316 | if (GNUNET_OK != | 319 | if (GNUNET_OK != |
317 | GNUNET_PROGRAM_run (argc, argv, "gnunet-nat-server [options] PORT", | 320 | GNUNET_PROGRAM_run (argc, argv, "gnunet-nat-server [options] PORT", |
318 | _("GNUnet NAT traversal test helper daemon"), options, | 321 | _("GNUnet NAT traversal test helper daemon"), options, |
diff --git a/src/nse/gnunet-nse-profiler.c b/src/nse/gnunet-nse-profiler.c index 4a4bea5ed..cf88690d5 100644 --- a/src/nse/gnunet-nse-profiler.c +++ b/src/nse/gnunet-nse-profiler.c | |||
@@ -914,8 +914,11 @@ static struct GNUNET_GETOPT_CommandLineOption options[] = { | |||
914 | 914 | ||
915 | 915 | ||
916 | int | 916 | int |
917 | main (int argc, char *argv[]) | 917 | main (int argc, char *const *argv) |
918 | { | 918 | { |
919 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
920 | return 2; | ||
921 | |||
919 | GNUNET_log_setup ("nse-profiler", | 922 | GNUNET_log_setup ("nse-profiler", |
920 | #if VERBOSE | 923 | #if VERBOSE |
921 | "DEBUG", | 924 | "DEBUG", |
diff --git a/src/peerinfo-tool/gnunet-peerinfo.c b/src/peerinfo-tool/gnunet-peerinfo.c index de27cd276..d3637af44 100644 --- a/src/peerinfo-tool/gnunet-peerinfo.c +++ b/src/peerinfo-tool/gnunet-peerinfo.c | |||
@@ -952,6 +952,10 @@ main (int argc, char *const *argv) | |||
952 | 1, &GNUNET_GETOPT_set_string, &put_uri}, | 952 | 1, &GNUNET_GETOPT_set_string, &put_uri}, |
953 | GNUNET_GETOPT_OPTION_END | 953 | GNUNET_GETOPT_OPTION_END |
954 | }; | 954 | }; |
955 | |||
956 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
957 | return 2; | ||
958 | |||
955 | return (GNUNET_OK == | 959 | return (GNUNET_OK == |
956 | GNUNET_PROGRAM_run (argc, argv, "gnunet-peerinfo", | 960 | GNUNET_PROGRAM_run (argc, argv, "gnunet-peerinfo", |
957 | gettext_noop ("Print information about peers."), | 961 | gettext_noop ("Print information about peers."), |
diff --git a/src/pt/gnunet-daemon-pt.c b/src/pt/gnunet-daemon-pt.c index 2ad8468ef..73936a489 100644 --- a/src/pt/gnunet-daemon-pt.c +++ b/src/pt/gnunet-daemon-pt.c | |||
@@ -967,6 +967,9 @@ main (int argc, char *const *argv) | |||
967 | GNUNET_GETOPT_OPTION_END | 967 | GNUNET_GETOPT_OPTION_END |
968 | }; | 968 | }; |
969 | 969 | ||
970 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
971 | return 2; | ||
972 | |||
970 | return (GNUNET_OK == | 973 | return (GNUNET_OK == |
971 | GNUNET_PROGRAM_run (argc, argv, "gnunet-daemon-pt", | 974 | GNUNET_PROGRAM_run (argc, argv, "gnunet-daemon-pt", |
972 | gettext_noop | 975 | gettext_noop |
diff --git a/src/statistics/gnunet-statistics.c b/src/statistics/gnunet-statistics.c index 3eef887fc..add2ddf41 100644 --- a/src/statistics/gnunet-statistics.c +++ b/src/statistics/gnunet-statistics.c | |||
@@ -240,6 +240,10 @@ main (int argc, char *const *argv) | |||
240 | &GNUNET_GETOPT_set_one, &watch}, | 240 | &GNUNET_GETOPT_set_one, &watch}, |
241 | GNUNET_GETOPT_OPTION_END | 241 | GNUNET_GETOPT_OPTION_END |
242 | }; | 242 | }; |
243 | |||
244 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
245 | return 2; | ||
246 | |||
243 | return (GNUNET_OK == | 247 | return (GNUNET_OK == |
244 | GNUNET_PROGRAM_run (argc, argv, "gnunet-statistics [options [value]]", | 248 | GNUNET_PROGRAM_run (argc, argv, "gnunet-statistics [options [value]]", |
245 | gettext_noop | 249 | gettext_noop |
diff --git a/src/template/gnunet-template.c b/src/template/gnunet-template.c index 7b1d9dfff..3020a73be 100644 --- a/src/template/gnunet-template.c +++ b/src/template/gnunet-template.c | |||
@@ -63,6 +63,10 @@ main (int argc, char *const *argv) | |||
63 | /* FIMXE: add options here */ | 63 | /* FIMXE: add options here */ |
64 | GNUNET_GETOPT_OPTION_END | 64 | GNUNET_GETOPT_OPTION_END |
65 | }; | 65 | }; |
66 | |||
67 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
68 | return 2; | ||
69 | |||
66 | return (GNUNET_OK == | 70 | return (GNUNET_OK == |
67 | GNUNET_PROGRAM_run (argc, argv, "gnunet-template", | 71 | GNUNET_PROGRAM_run (argc, argv, "gnunet-template", |
68 | gettext_noop ("help text"), options, &run, | 72 | gettext_noop ("help text"), options, &run, |
diff --git a/src/testing_old/gnunet-testing.c b/src/testing_old/gnunet-testing.c index bdbb5e8c5..375185b0e 100644 --- a/src/testing_old/gnunet-testing.c +++ b/src/testing_old/gnunet-testing.c | |||
@@ -282,6 +282,10 @@ main (int argc, char *const *argv) | |||
282 | GNUNET_YES, &GNUNET_GETOPT_set_string, &create_cfg_template}, | 282 | GNUNET_YES, &GNUNET_GETOPT_set_string, &create_cfg_template}, |
283 | GNUNET_GETOPT_OPTION_END | 283 | GNUNET_GETOPT_OPTION_END |
284 | }; | 284 | }; |
285 | |||
286 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
287 | return 2; | ||
288 | |||
285 | return (GNUNET_OK == | 289 | return (GNUNET_OK == |
286 | GNUNET_PROGRAM_run (argc, argv, "gnunet-testing", | 290 | GNUNET_PROGRAM_run (argc, argv, "gnunet-testing", |
287 | gettext_noop ("Command line tool to access the testing library"), options, &run, | 291 | gettext_noop ("Command line tool to access the testing library"), options, &run, |
diff --git a/src/topology/gnunet-daemon-topology.c b/src/topology/gnunet-daemon-topology.c index 57da127fd..356e2c963 100644 --- a/src/topology/gnunet-daemon-topology.c +++ b/src/topology/gnunet-daemon-topology.c | |||
@@ -1356,6 +1356,9 @@ main (int argc, char *const *argv) | |||
1356 | }; | 1356 | }; |
1357 | int ret; | 1357 | int ret; |
1358 | 1358 | ||
1359 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
1360 | return 2; | ||
1361 | |||
1359 | ret = | 1362 | ret = |
1360 | (GNUNET_OK == | 1363 | (GNUNET_OK == |
1361 | GNUNET_PROGRAM_run (argc, argv, "gnunet-daemon-topology", | 1364 | GNUNET_PROGRAM_run (argc, argv, "gnunet-daemon-topology", |
diff --git a/src/transport/gnunet-transport.c b/src/transport/gnunet-transport.c index 3b6b7e4c5..d07afccea 100644 --- a/src/transport/gnunet-transport.c +++ b/src/transport/gnunet-transport.c | |||
@@ -639,6 +639,10 @@ main (int argc, char *const *argv) | |||
639 | GNUNET_GETOPT_OPTION_VERBOSE (&verbosity), | 639 | GNUNET_GETOPT_OPTION_VERBOSE (&verbosity), |
640 | GNUNET_GETOPT_OPTION_END | 640 | GNUNET_GETOPT_OPTION_END |
641 | }; | 641 | }; |
642 | |||
643 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
644 | return 2; | ||
645 | |||
642 | return (GNUNET_OK == | 646 | return (GNUNET_OK == |
643 | GNUNET_PROGRAM_run (argc, argv, "gnunet-transport", | 647 | GNUNET_PROGRAM_run (argc, argv, "gnunet-transport", |
644 | gettext_noop | 648 | gettext_noop |
diff --git a/src/util/gnunet-resolver.c b/src/util/gnunet-resolver.c index 142dd0d2f..559637748 100644 --- a/src/util/gnunet-resolver.c +++ b/src/util/gnunet-resolver.c | |||
@@ -149,6 +149,10 @@ main (int argc, char *const *argv) | |||
149 | 0, &GNUNET_GETOPT_set_one, &reverse }, | 149 | 0, &GNUNET_GETOPT_set_one, &reverse }, |
150 | GNUNET_GETOPT_OPTION_END | 150 | GNUNET_GETOPT_OPTION_END |
151 | }; | 151 | }; |
152 | |||
153 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
154 | return 2; | ||
155 | |||
152 | return (GNUNET_OK == | 156 | return (GNUNET_OK == |
153 | GNUNET_PROGRAM_run (argc, argv, "gnunet-resolver [hostname]", | 157 | GNUNET_PROGRAM_run (argc, argv, "gnunet-resolver [hostname]", |
154 | gettext_noop ("Use build-in GNUnet stub resolver"), | 158 | gettext_noop ("Use build-in GNUnet stub resolver"), |
diff --git a/src/util/gnunet-rsa.c b/src/util/gnunet-rsa.c index f3cd83a8b..fc9d20064 100644 --- a/src/util/gnunet-rsa.c +++ b/src/util/gnunet-rsa.c | |||
@@ -119,6 +119,10 @@ main (int argc, char *const *argv) | |||
119 | 0, &GNUNET_GETOPT_set_one, &print_short_identity }, | 119 | 0, &GNUNET_GETOPT_set_one, &print_short_identity }, |
120 | GNUNET_GETOPT_OPTION_END | 120 | GNUNET_GETOPT_OPTION_END |
121 | }; | 121 | }; |
122 | |||
123 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
124 | return 2; | ||
125 | |||
122 | return (GNUNET_OK == | 126 | return (GNUNET_OK == |
123 | GNUNET_PROGRAM_run (argc, argv, "gnunet-rsa [OPTIONS] keyfile", | 127 | GNUNET_PROGRAM_run (argc, argv, "gnunet-rsa [OPTIONS] keyfile", |
124 | gettext_noop ("Manipulate GNUnet private RSA key files"), | 128 | gettext_noop ("Manipulate GNUnet private RSA key files"), |
diff --git a/src/util/program.c b/src/util/program.c index 9e1a83d0b..a8178b93a 100644 --- a/src/util/program.c +++ b/src/util/program.c | |||
@@ -165,6 +165,7 @@ GNUNET_PROGRAM_run2 (int argc, char *const *argv, const char *binaryName, | |||
165 | char *lpfx; | 165 | char *lpfx; |
166 | char *spc; | 166 | char *spc; |
167 | 167 | ||
168 | |||
168 | logfile = NULL; | 169 | logfile = NULL; |
169 | gargs = getenv ("GNUNET_ARGS"); | 170 | gargs = getenv ("GNUNET_ARGS"); |
170 | if (gargs != NULL) | 171 | if (gargs != NULL) |
diff --git a/src/util/strings.c b/src/util/strings.c index 11134f139..cc44767d6 100644 --- a/src/util/strings.c +++ b/src/util/strings.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include "gnunet_common.h" | 32 | #include "gnunet_common.h" |
33 | #include "gnunet_strings_lib.h" | 33 | #include "gnunet_strings_lib.h" |
34 | #include <unicase.h> | 34 | #include <unicase.h> |
35 | #include <unistr.h> | ||
35 | 36 | ||
36 | #define LOG(kind,...) GNUNET_log_from (kind, "util", __VA_ARGS__) | 37 | #define LOG(kind,...) GNUNET_log_from (kind, "util", __VA_ARGS__) |
37 | 38 | ||
@@ -1113,4 +1114,93 @@ GNUNET_STRINGS_to_address_ip (const char *addr, | |||
1113 | return GNUNET_STRINGS_to_address_ipv4 (addr, addrlen, (struct sockaddr_in *) r_buf); | 1114 | return GNUNET_STRINGS_to_address_ipv4 (addr, addrlen, (struct sockaddr_in *) r_buf); |
1114 | } | 1115 | } |
1115 | 1116 | ||
1117 | /** | ||
1118 | * Makes a copy of argv that consists of a single memory chunk that can be | ||
1119 | * freed with a single call to GNUNET_free (); | ||
1120 | */ | ||
1121 | static char *const * | ||
1122 | _make_continuous_arg_copy (int argc, char *const *argv) | ||
1123 | { | ||
1124 | size_t argvsize = 0; | ||
1125 | int i; | ||
1126 | char **new_argv; | ||
1127 | char *p; | ||
1128 | for (i = 0; i < argc; i++) | ||
1129 | argvsize += strlen (argv[i]) + 1 + sizeof (char *); | ||
1130 | new_argv = GNUNET_malloc (argvsize + sizeof (char *)); | ||
1131 | p = (char *) &new_argv[argc + 1]; | ||
1132 | for (i = 0; i < argc; i++) | ||
1133 | { | ||
1134 | new_argv[i] = p; | ||
1135 | strcpy (p, argv[i]); | ||
1136 | p += strlen (argv[i]) + 1; | ||
1137 | } | ||
1138 | new_argv[argc] = NULL; | ||
1139 | return (char *const *) new_argv; | ||
1140 | } | ||
1141 | |||
1142 | /** | ||
1143 | * Returns utf-8 encoded arguments. | ||
1144 | * Does nothing (returns a copy of argc and argv) on any platform | ||
1145 | * other than W32. | ||
1146 | * Returned argv has u8argv[u8argc] == NULL. | ||
1147 | * Returned argv is a single memory block, and can be freed with a single | ||
1148 | * GNUNET_free () call. | ||
1149 | * | ||
1150 | * @param argc argc (as given by main()) | ||
1151 | * @param argv argv (as given by main()) | ||
1152 | * @param u8argc a location to store new argc in (though it's th same as argc) | ||
1153 | * @param u8argv a location to store new argv in | ||
1154 | * @return GNUNET_OK on success, GNUNET_SYSERR on failure | ||
1155 | */ | ||
1156 | int | ||
1157 | GNUNET_STRINGS_get_utf8_args (int argc, char *const *argv, int *u8argc, char *const **u8argv) | ||
1158 | { | ||
1159 | #if WINDOWS | ||
1160 | wchar_t *wcmd; | ||
1161 | wchar_t **wargv; | ||
1162 | int wargc; | ||
1163 | int i; | ||
1164 | char **split_u8argv; | ||
1165 | |||
1166 | wcmd = GetCommandLineW (); | ||
1167 | if (NULL == wcmd) | ||
1168 | return GNUNET_SYSERR; | ||
1169 | wargv = CommandLineToArgvW (wcmd, &wargc); | ||
1170 | if (NULL == wargv) | ||
1171 | return GNUNET_SYSERR; | ||
1172 | |||
1173 | split_u8argv = GNUNET_malloc (argc * sizeof (char *)); | ||
1174 | |||
1175 | for (i = 0; i < wargc; i++) | ||
1176 | { | ||
1177 | size_t strl; | ||
1178 | /* Hopefully it will allocate us NUL-terminated strings... */ | ||
1179 | split_u8argv[i] = (char *) u16_to_u8 (wargv[i], wcslen (wargv[i]) + 1, NULL, &strl); | ||
1180 | if (split_u8argv == NULL) | ||
1181 | { | ||
1182 | int j; | ||
1183 | for (j = 0; j < i; j++) | ||
1184 | free (split_u8argv[j]); | ||
1185 | GNUNET_free (split_u8argv); | ||
1186 | LocalFree (wargv); | ||
1187 | return GNUNET_SYSERR; | ||
1188 | } | ||
1189 | } | ||
1190 | |||
1191 | *u8argv = _make_continuous_arg_copy (wargc, split_u8argv); | ||
1192 | *u8argc = wargc; | ||
1193 | |||
1194 | for (i = 0; i < wargc; i++) | ||
1195 | free (split_u8argv[i]); | ||
1196 | free (split_u8argv); | ||
1197 | return GNUNET_OK; | ||
1198 | #else | ||
1199 | char *const *new_argv = (char *const *) _make_continuous_arg_copy (argc, argv); | ||
1200 | *u8argv = new_argv; | ||
1201 | *u8argc = argc; | ||
1202 | return GNUNET_OK; | ||
1203 | #endif | ||
1204 | } | ||
1205 | |||
1116 | /* end of strings.c */ | 1206 | /* end of strings.c */ |
diff --git a/src/vpn/gnunet-vpn.c b/src/vpn/gnunet-vpn.c index ecc0442c6..b75b1d29a 100644 --- a/src/vpn/gnunet-vpn.c +++ b/src/vpn/gnunet-vpn.c | |||
@@ -323,6 +323,10 @@ main (int argc, char *const *argv) | |||
323 | GNUNET_GETOPT_OPTION_VERBOSE (&verbosity), | 323 | GNUNET_GETOPT_OPTION_VERBOSE (&verbosity), |
324 | GNUNET_GETOPT_OPTION_END | 324 | GNUNET_GETOPT_OPTION_END |
325 | }; | 325 | }; |
326 | |||
327 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | ||
328 | return 2; | ||
329 | |||
326 | return (GNUNET_OK == | 330 | return (GNUNET_OK == |
327 | GNUNET_PROGRAM_run (argc, argv, "gnunet-vpn", | 331 | GNUNET_PROGRAM_run (argc, argv, "gnunet-vpn", |
328 | gettext_noop | 332 | gettext_noop |