diff --git a/src/WIN/win.h b/src/WIN/win.h index d2006df00..3b89e2efc 100644 --- a/src/WIN/win.h +++ b/src/WIN/win.h @@ -107,6 +107,8 @@ extern int find_status_bar_part(int tag); extern void cdrom_close(uint8_t id); extern void update_tip(int meaning); +extern BOOL DirectoryExists(LPCTSTR szPath); + #ifdef __cplusplus } #endif diff --git a/src/config.c b/src/config.c index dd8351657..b20f0dc5d 100644 --- a/src/config.c +++ b/src/config.c @@ -835,6 +835,7 @@ static void loadconfig_machine(void) { char *cat = "Machine"; wchar_t *wp; + wchar_t last; char *p; p = config_get_string(cat, "model", NULL); @@ -883,6 +884,16 @@ static void loadconfig_machine(void) path_len = wcslen(nvr_path); +#ifndef __unix + last = nvr_path[wcslen(nvr_path) - 1]; + nvr_path[wcslen(nvr_path) - 1] = 0; + if (!DirectoryExists(nvr_path)) + { + CreateDirectory(nvr_path, NULL); + } + nvr_path[wcslen(nvr_path)] = last; +#endif + cpu_use_dynarec = !!config_get_int(cat, "cpu_use_dynarec", 0); enable_external_fpu = !!config_get_int(cat, "cpu_enable_fpu", 0);