diff options
Diffstat (limited to 'lib/compat/chdir.c')
-rw-r--r-- | lib/compat/chdir.c | 27 |
1 files changed, 3 insertions, 24 deletions
diff --git a/lib/compat/chdir.c b/lib/compat/chdir.c index b1b2d0c..04dcf17 100644 --- a/lib/compat/chdir.c +++ b/lib/compat/chdir.c @@ -10,37 +10,16 @@ #include "util/util.h" #ifdef _WIN32 -#define WIN32_LEAN_AND_MEAN -#include <windows.h> #include <stdlib.h> int chdir(const char *path) { - WCHAR *wpath, *ptr; - DWORD length; + WCHAR *wpath; int ret; - length = MultiByteToWideChar(CP_UTF8, 0, path, -1, NULL, 0); - if (length <= 0) { - fprintf(stderr, "Converting '%s' to UTF-16: %ld\n", - path, GetLastError()); - return -1; - } - - wpath = alloc_array(sizeof(wpath[0]), length + 1); - if (wpath == NULL) { - fprintf(stderr, "Converting '%s' to UTF-16: out of memory\n", - path); + wpath = path_to_windows(path); + if (wpath == NULL) return -1; - } - - MultiByteToWideChar(CP_UTF8, 0, path, -1, wpath, length + 1); - wpath[length] = '\0'; - - for (ptr = wpath; *ptr != '\0'; ++ptr) { - if (*ptr == '/') - *ptr = '\\'; - } if (!SetCurrentDirectoryW(wpath)) { fprintf(stderr, "Switching to directory '%s': %ld\n", |