diff options
Diffstat (limited to 'apps/mutool.c')
-rw-r--r-- | apps/mutool.c | 64 |
1 files changed, 7 insertions, 57 deletions
diff --git a/apps/mutool.c b/apps/mutool.c index 17c98424..1d7fb9dd 100644 --- a/apps/mutool.c +++ b/apps/mutool.c @@ -4,6 +4,10 @@ #include <fitz.h> +#ifdef _MSC_VER +#define main main_utf8 +#endif + int pdfclean_main(int argc, char *argv[]); int pdfextract_main(int argc, char *argv[]); int pdfinfo_main(int argc, char *argv[]); @@ -29,11 +33,7 @@ namematch(const char *end, const char *start, const char *match) return ((end-len >= start) && (strncmp(end-len, match, len) == 0)); } -#ifdef _MSC_VER -static int main_utf8(int argc, char **argv) -#else int main(int argc, char **argv) -#endif { char *start, *end; char buf[32]; @@ -83,61 +83,11 @@ int main(int argc, char **argv) } #ifdef _MSC_VER -static char * -wchar_to_utf8(wchar_t *s) -{ - wchar_t *src = s; - char *d; - char *dst; - int len = 1; - - while (*src) - { - len += fz_runelen(*src++); - } - - d = malloc(len); - if (d != NULL) - { - dst = d; - src = s; - while (*src) - { - dst += fz_runetochar(dst, *src++); - } - *dst = 0; - } - return d; -} - int wmain(int argc, wchar_t *wargv[]) { - int i, ret; - char **argv = calloc(argc, sizeof(char *)); - if (argv == NULL) - goto oom; - - for (i = 0; i < argc; i++) - { - argv[i] = wchar_to_utf8(wargv[i]); - if (argv[i] == NULL) - goto oom; - } - - ret = main_utf8(argc, argv); - - if (0) - { -oom: - ret = 1; - fprintf(stderr, "Out of memory while processing command line args\n"); - } - for (i = 0; i < argc; i++) - { - free(argv[i]); - } - free(argv); - + char **argv = fz_argv_from_wargv(argc, wargv); + int ret = main(argc, argv); + fz_free_argv(argc, argv); return ret; } #endif |