From 4adb4524909dcb313f18b8b9700eaa6a7fdd4916 Mon Sep 17 00:00:00 2001 From: Nunuhara Cabbage Date: Sat, 5 Sep 2020 08:30:48 -0700 Subject: [PATCH] Convert save filenames to UTF-8 Fixes #6 --- src/system4.c | 6 ++++-- src/vm.c | 10 +--------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/system4.c b/src/system4.c index 397ad33..0e7caa9 100644 --- a/src/system4.c +++ b/src/system4.c @@ -73,10 +73,12 @@ char *gamedir_path(const char *path) char *savedir_path(const char *filename) { - char *path = xmalloc(strlen(config.save_dir) + 1 + strlen(filename) + 1); + char *utf = sjis2utf(filename, 0); + char *path = xmalloc(strlen(config.save_dir) + 1 + strlen(utf) + 1); strcpy(path, config.save_dir); strcat(path, "/"); - strcat(path, filename); + strcat(path, utf); + free(utf); return path; } diff --git a/src/vm.c b/src/vm.c index 0aed51e..be236b9 100644 --- a/src/vm.c +++ b/src/vm.c @@ -487,15 +487,7 @@ static void system_call(enum syscall_code code) } case SYS_EXISTS_SAVE_FILE: { int slot = stack_pop().i; - struct string *name = heap[slot].s; - size_t dir_len = strlen(config.save_dir); - char *path = xmalloc(dir_len + 1 + name->size + 1); - - strncpy(path, config.save_dir, dir_len); - path[dir_len] = '/'; - strncpy(path+dir_len+1, name->text, name->size); - path[dir_len+1+name->size] = '\0'; - + char *path = savedir_path(heap[slot].s->text); stack_push(file_exists(path)); heap_unref(slot); free(path);