summaryrefslogtreecommitdiff
path: root/apps/mutool.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/mutool.c')
-rw-r--r--apps/mutool.c64
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