diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/tool_getparam.c | 17 | ||||
-rw-r--r-- | src/tool_main.c | 8 | ||||
-rw-r--r-- | src/tool_operate.c | 7 |
3 files changed, 22 insertions, 10 deletions
diff --git a/src/tool_getparam.c b/src/tool_getparam.c index c0ab67c3f..ab2b75289 100644 --- a/src/tool_getparam.c +++ b/src/tool_getparam.c @@ -2248,20 +2248,22 @@ ParameterError parse_args(struct GlobalConfig *global, int argc, struct OperationConfig *config = global->first; for(i = 1, stillflags = TRUE; i < argc && !result; i++) { - orig_opt = argv[i]; + orig_opt = curlx_convert_tchar_to_UTF8(argv[i]); - if(stillflags && ('-' == argv[i][0])) { + if(stillflags && ('-' == orig_opt[0])) { bool passarg; - char *flag = argv[i]; - if(!strcmp("--", argv[i])) + if(!strcmp("--", orig_opt)) /* This indicates the end of the flags and thus enables the following (URL) argument to start with -. */ stillflags = FALSE; else { - char *nextarg = (i < (argc - 1)) ? argv[i + 1] : NULL; + char *nextarg = (i < (argc - 1)) + ? curlx_convert_tchar_to_UTF8(argv[i + 1]) + : NULL; - result = getparameter(flag, nextarg, &passarg, global, config); + result = getparameter(orig_opt, nextarg, &passarg, global, config); + curlx_unicodefree(nextarg); config = global->last; if(result == PARAM_NEXT_OPERATION) { /* Reset result as PARAM_NEXT_OPERATION is only used here and not @@ -2297,7 +2299,7 @@ ParameterError parse_args(struct GlobalConfig *global, int argc, bool used; /* Just add the URL please */ - result = getparameter((char *)"--url", argv[i], &used, global, + result = getparameter("--url", orig_opt, &used, global, config); } } @@ -2314,5 +2316,6 @@ ParameterError parse_args(struct GlobalConfig *global, int argc, helpf(global->errors, "%s\n", reason); } + curlx_unicodefree(orig_opt); return result; } diff --git a/src/tool_main.c b/src/tool_main.c index 25042895f..ccf098e94 100644 --- a/src/tool_main.c +++ b/src/tool_main.c @@ -273,22 +273,28 @@ static void restore_terminal(void) /* ** curl tool main function. */ +#ifdef _UNICODE +int wmain(int argc, wchar_t *argv[]) +#else int main(int argc, char *argv[]) +#endif { CURLcode result = CURLE_OK; struct GlobalConfig global; memset(&global, 0, sizeof(global)); #ifdef WIN32 +#ifdef _tcscmp /* Undocumented diagnostic option to list the full paths of all loaded modules. This is purposely pre-init. */ - if(argc == 2 && !strcmp(argv[1], "--dump-module-paths")) { + if(argc == 2 && !_tcscmp(argv[1], _T("--dump-module-paths"))) { struct curl_slist *item, *head = GetLoadedModulePaths(); for(item = head; item; item = item->next) printf("%s\n", item->data); curl_slist_free_all(head); return head ? 0 : 1; } +#endif /* _tcscmp */ /* win32_init must be called before other init routines. */ result = win32_init(); if(result) { diff --git a/src/tool_operate.c b/src/tool_operate.c index 6d489aa30..0ddcf8ea9 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -2427,6 +2427,7 @@ static CURLcode run_all_transfers(struct GlobalConfig *global, CURLcode operate(struct GlobalConfig *global, int argc, argv_item_t argv[]) { CURLcode result = CURLE_OK; + char *first_arg = curlx_convert_tchar_to_UTF8(argv[1]); /* Setup proper locale from environment */ #ifdef HAVE_SETLOCALE @@ -2435,8 +2436,8 @@ CURLcode operate(struct GlobalConfig *global, int argc, argv_item_t argv[]) /* Parse .curlrc if necessary */ if((argc == 1) || - (!curl_strequal(argv[1], "-q") && - !curl_strequal(argv[1], "--disable"))) { + (!curl_strequal(first_arg, "-q") && + !curl_strequal(first_arg, "--disable"))) { parseconfig(NULL, global); /* ignore possible failure */ /* If we had no arguments then make sure a url was specified in .curlrc */ @@ -2446,6 +2447,8 @@ CURLcode operate(struct GlobalConfig *global, int argc, argv_item_t argv[]) } } + curlx_unicodefree(first_arg); + if(!result) { /* Parse the command line arguments */ ParameterError res = parse_args(global, argc, argv); |