mirror of
https://github.com/Picovoice/porcupine.git
synced 2022-01-28 03:27:53 +03:00
fix windows utf-8
This commit is contained in:
@@ -99,7 +99,7 @@ void print_usage(const char *program_name) {
|
||||
fprintf(stderr, "Usage : %s -l LIBRARY_PATH -m MODEL_PATH -k KEYWORD_PATH -t SENSITIVITY -a ACCESS_KEY -w WAV_PATH\n", program_name);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
int picovoice_main(int argc, char *argv[]) {
|
||||
const char *library_path = NULL;
|
||||
const char *model_path = NULL;
|
||||
const char *keyword_path = NULL;
|
||||
@@ -263,3 +263,46 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
|
||||
#define UTF8_COMPOSITION_FLAG (0)
|
||||
#define NULL_TERMINATED (-1)
|
||||
|
||||
LPWSTR *wargv = CommandLineToArgvW(GetCommandLineW(), &argc);
|
||||
if (wargv == NULL) {
|
||||
fprintf(stderr, "CommandLineToArgvW failed\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
char *utf8_argv[argc];
|
||||
|
||||
for (int i = 0; i < argc; ++i) {
|
||||
// WideCharToMultiByte: https://docs.microsoft.com/en-us/windows/win32/api/stringapiset/nf-stringapiset-widechartomultibyte
|
||||
int arg_chars_num = WideCharToMultiByte(CP_UTF8, UTF8_COMPOSITION_FLAG, wargv[i], NULL_TERMINATED, NULL, 0, NULL, NULL);
|
||||
utf8_argv[i] = (char *) malloc(arg_chars_num * sizeof(char));
|
||||
if (!utf8_argv[i]) {
|
||||
fprintf(stderr, "failed to to allocate memory for converting args");
|
||||
}
|
||||
WideCharToMultiByte(CP_UTF8, UTF8_COMPOSITION_FLAG, wargv[i], NULL_TERMINATED, utf8_argv[i], arg_chars_num, NULL, NULL);
|
||||
}
|
||||
|
||||
LocalFree(wargv);
|
||||
argv = utf8_argv;
|
||||
|
||||
#endif
|
||||
|
||||
int result = picovoice_main(argc, argv);
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
|
||||
for (int i = 0; i < argc; ++i) {
|
||||
free(utf8_argv[i]);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -124,7 +124,7 @@ void show_audio_devices(void) {
|
||||
pv_recorder_free_device_list(count, devices);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
int picovoice_main(int argc, char *argv[]) {
|
||||
signal(SIGINT, interrupt_handler);
|
||||
|
||||
const char *library_path = NULL;
|
||||
@@ -285,3 +285,46 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
|
||||
#define UTF8_COMPOSITION_FLAG (0)
|
||||
#define NULL_TERMINATED (-1)
|
||||
|
||||
LPWSTR *wargv = CommandLineToArgvW(GetCommandLineW(), &argc);
|
||||
if (wargv == NULL) {
|
||||
fprintf(stderr, "CommandLineToArgvW failed\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
char *utf8_argv[argc];
|
||||
|
||||
for (int i = 0; i < argc; ++i) {
|
||||
// WideCharToMultiByte: https://docs.microsoft.com/en-us/windows/win32/api/stringapiset/nf-stringapiset-widechartomultibyte
|
||||
int arg_chars_num = WideCharToMultiByte(CP_UTF8, UTF8_COMPOSITION_FLAG, wargv[i], NULL_TERMINATED, NULL, 0, NULL, NULL);
|
||||
utf8_argv[i] = (char *) malloc(arg_chars_num * sizeof(char));
|
||||
if (!utf8_argv[i]) {
|
||||
fprintf(stderr, "failed to to allocate memory for converting args");
|
||||
}
|
||||
WideCharToMultiByte(CP_UTF8, UTF8_COMPOSITION_FLAG, wargv[i], NULL_TERMINATED, utf8_argv[i], arg_chars_num, NULL, NULL);
|
||||
}
|
||||
|
||||
LocalFree(wargv);
|
||||
argv = utf8_argv;
|
||||
|
||||
#endif
|
||||
|
||||
int result = picovoice_main(argc, argv);
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
|
||||
for (int i = 0; i < argc; ++i) {
|
||||
free(utf8_argv[i]);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user