main_win32.c 925 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /* Part of Scheme 48 1.9. See file COPYING for notices and license.
  2. *
  3. * Authors: Mike Sperber, Marcus Crestani, Robert Ransom
  4. */
  5. #include <stdlib.h>
  6. #include <windows.h>
  7. extern long s48_initialize(int *argc, char ***argv);
  8. extern long s48_call_startup_procedure(char **, long);
  9. extern int s48_utf_16_to_utf_8of16(LPWSTR utf_16,
  10. unsigned char* utf_8of16);
  11. int
  12. wmain(int argc, wchar_t *argv_utf16[])
  13. {
  14. char** argv = malloc(sizeof(char*) * argc);
  15. int i = 0;
  16. long return_value;
  17. if (argv == NULL)
  18. return -1;
  19. while (i < argc)
  20. {
  21. int size = s48_utf_16_to_utf_8of16(argv_utf16[i], NULL);
  22. argv[i] = malloc(size + 1);
  23. if (argv[i] == NULL)
  24. return -1;
  25. s48_utf_16_to_utf_8of16(argv_utf16[i], argv[i]);
  26. ++i;
  27. }
  28. return_value = s48_initialize(&argc, &argv);
  29. if (return_value != 0)
  30. return return_value;
  31. else
  32. return s48_call_startup_procedure(argv, argc);
  33. }