From 0b7072eed3ed2b07e98ab57f0b1ec0044eac1047 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 12 Nov 2018 15:47:08 -0700 Subject: [PATCH] cs: communicate DLL directory to rktio rktio needs the DLL directory path to load iconv. --- racket/src/cs/c/boot.c | 9 +++++++-- racket/src/cs/c/boot.h | 4 ++-- racket/src/cs/c/main.c | 9 ++++++++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/racket/src/cs/c/boot.c b/racket/src/cs/c/boot.c index 8589398c43..d0ff068de2 100644 --- a/racket/src/cs/c/boot.c +++ b/racket/src/cs/c/boot.c @@ -93,7 +93,7 @@ static void init_foreign() void racket_boot(int argc, char **argv, char *exec_file, char *run_file, char *boot_exe, long segment_offset, - char *coldir, char *configdir, + char *coldir, char *configdir, /* wchar_t * */void *dlldir, int pos1, int pos2, int pos3, int cs_compiled_subdir, int is_gui, int wm_is_gracket, char *gracket_guid) @@ -105,7 +105,12 @@ void racket_boot(int argc, char **argv, char *exec_file, char *run_file, #ifdef RACKET_USE_FRAMEWORK const char *fw_path; #endif - + +#ifdef WIN32 + if (dlldir) + rktio_set_dll_path((wchar_t *)dlldir); +#endif + Sscheme_init(NULL); #ifdef RACKET_USE_FRAMEWORK diff --git a/racket/src/cs/c/boot.h b/racket/src/cs/c/boot.h index ce8b3b391b..7fda935e66 100644 --- a/racket/src/cs/c/boot.h +++ b/racket/src/cs/c/boot.h @@ -1,13 +1,13 @@ BOOT_EXTERN void racket_boot(int argc, char **argv, char *exec_file, char *run_file, char *boot_exe, long segment_offset, - char *coldir, char *configdir, + char *coldir, char *configdir, /* wchar_t * */void *dlldir, int pos1, int pos2, int pos3, int cs_compiled_subdir, int is_gui, int wm_is_gracket, char *gracket_guid); typedef void (*racket_boot_t)(int argc, char **argv, char *exec_file, char *run_file, char* boot_exe, long segment_offset, - char *coldir, char *configdir, + char *coldir, char *configdir, /* wchar_t * */void *dlldir, int pos1, int pos2, int pos3, int cs_compiled_subdir, int is_gui, int wm_is_gracket, char *gracket_guid); diff --git a/racket/src/cs/c/main.c b/racket/src/cs/c/main.c index 1052667088..45b714ce3d 100644 --- a/racket/src/cs/c/main.c +++ b/racket/src/cs/c/main.c @@ -275,6 +275,13 @@ static long get_segment_offset() } #endif +#ifndef WIN32 +static void *extract_dlldir() +{ + return NULL; +} +#endif + #ifndef do_pre_filter_cmdline_arguments # define do_pre_filter_cmdline_arguments(argc, argv) /* empty */ #endif @@ -333,7 +340,7 @@ static int bytes_main(int argc, char **argv, racket_boot(argc, argv, exec_file, run_file, boot_exe, segment_offset, - extract_coldir(), extract_configdir(), + extract_coldir(), extract_configdir(), extract_dlldir(), pos1, pos2, pos3, CS_COMPILED_SUBDIR, RACKET_IS_GUI, wm_is_gracket, gracket_guid);