From 3c5452dba11cc909252eaa97c83f7a31c3a230a6 Mon Sep 17 00:00:00 2001 From: nagachika Date: Sun, 18 Mar 2018 03:57:37 +0000 Subject: revert r62797, r62784. [Bug #13863] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@62801 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- win32/dir.h | 1 - win32/win32.c | 52 +++++++++++++++++----------------------------------- 2 files changed, 17 insertions(+), 36 deletions(-) (limited to 'win32') diff --git a/win32/dir.h b/win32/dir.h index 29c4c1c6d5..b1f981f257 100644 --- a/win32/dir.h +++ b/win32/dir.h @@ -33,7 +33,6 @@ long rb_w32_telldir(DIR *); void rb_w32_seekdir(DIR *, long); void rb_w32_rewinddir(DIR *); void rb_w32_closedir(DIR *); -char *rb_w32_ugetcwd(char *, int); #define opendir(s) rb_w32_opendir((s)) #define readdir(d) rb_w32_readdir((d), 0) diff --git a/win32/win32.c b/win32/win32.c index efbe70b481..62801dae71 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -4654,61 +4654,43 @@ clock_getres(clockid_t clock_id, struct timespec *sp) } /* License: Ruby's */ -static char * -w32_getcwd(char *buffer, int size, UINT cp) +char * +rb_w32_getcwd(char *buffer, int size) { - WCHAR *p; - int wlen, len; + char *p = buffer; + int len; - len = GetCurrentDirectoryW(0, NULL); + len = GetCurrentDirectory(0, NULL); if (!len) { errno = map_errno(GetLastError()); return NULL; } - if (buffer && size < len) { - errno = ERANGE; - return NULL; - } - - p = ALLOCA_N(WCHAR, len); - if (!GetCurrentDirectoryW(len, p)) { - errno = map_errno(GetLastError()); - return NULL; - } - - wlen = translate_wchar(p, L'\\', L'/') - p + 1; - len = WideCharToMultiByte(cp, 0, p, wlen, NULL, 0, NULL, NULL); - if (buffer) { + if (p) { if (size < len) { errno = ERANGE; return NULL; } } else { - buffer = malloc(len); - if (!buffer) { + p = malloc(len); + size = len; + if (!p) { errno = ENOMEM; return NULL; } } - WideCharToMultiByte(cp, 0, p, wlen, buffer, len, NULL, NULL); - return buffer; -} + if (!GetCurrentDirectory(size, p)) { + errno = map_errno(GetLastError()); + if (!buffer) + free(p); + return NULL; + } -/* License: Ruby's */ -char * -rb_w32_getcwd(char *buffer, int size) -{ - return w32_getcwd(buffer, size, filecp()); -} + translate_char(p, '\\', '/', filecp()); -/* License: Ruby's */ -char * -rb_w32_ugetcwd(char *buffer, int size) -{ - return w32_getcwd(buffer, size, CP_UTF8); + return p; } /* License: Artistic or GPL */ -- cgit v1.2.3