summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/ruby/test_time.rb4
-rw-r--r--time.c30
-rw-r--r--win32/Makefile.sub1
3 files changed, 5 insertions, 30 deletions
diff --git a/test/ruby/test_time.rb b/test/ruby/test_time.rb
index 98e4c333a5..333edb8021 100644
--- a/test/ruby/test_time.rb
+++ b/test/ruby/test_time.rb
@@ -717,15 +717,13 @@ class TestTime < Test::Unit::TestCase
assert_equal("2000-01-01 09:12:34 +091234", t2000.localtime(9*3600+12*60+34).inspect)
end
- FIXED_ZONE_ENCODING = (Encoding::UTF_8 if /mswin|mingw/.match?(RUBY_PLATFORM))
-
def assert_zone_encoding(time)
zone = time.zone
assert_predicate(zone, :valid_encoding?)
if zone.ascii_only?
assert_equal(Encoding::US_ASCII, zone.encoding)
else
- enc = FIXED_ZONE_ENCODING || Encoding.find('locale')
+ enc = Encoding.default_internal || Encoding.find('locale')
assert_equal(enc, zone.encoding)
end
end
diff --git a/time.c b/time.c
index bdb0dba970..34a90977ab 100644
--- a/time.c
+++ b/time.c
@@ -31,10 +31,6 @@
# include <sys/time.h>
#endif
-#if defined(HAVE_LOCALE_H)
-# include <locale.h>
-#endif
-
#include "id.h"
#include "internal.h"
#include "internal/array.h"
@@ -956,11 +952,7 @@ zone_str(const char *zone)
str = rb_usascii_str_new(zone, len);
}
else {
-#if defined(_WIN32)
- str = rb_utf8_str_new(zone, len);
-#else
str = rb_enc_str_new(zone, len, rb_locale_encoding());
-#endif
}
return rb_fstring(str);
}
@@ -1659,25 +1651,11 @@ localtime_with_gmtoff_zone(const time_t *t, struct tm *result, long *gmtoff, VAL
if (zone) {
#if defined(HAVE_TM_ZONE)
*zone = zone_str(tm.tm_zone);
-#elif defined(_WIN32)
- {
- enum {tz_name_max = 32}; /* numberof(TIME_ZONE_INFORMATION::StandardName) */
- WCHAR wbuf[tz_name_max + 1];
- char cbuf[tz_name_max * 4 + 1];
- size_t wlen = wcsftime(wbuf, numberof(wbuf), L"%Z", &tm);
- DWORD clen = 0;
- if (wlen > 0 && wlen < numberof(wbuf)) {
- clen = WideCharToMultiByte(CP_UTF8, 0, wbuf, wlen, cbuf, sizeof(cbuf), NULL, NULL);
- }
- if (clen > 0 && clen < sizeof(cbuf)) {
- cbuf[clen] = '\0';
- *zone = zone_str(cbuf);
- }
- else {
- *zone = zone_str(NULL);
- }
- }
#elif defined(HAVE_TZNAME) && defined(HAVE_DAYLIGHT)
+# if defined(RUBY_MSVCRT_VERSION) && RUBY_MSVCRT_VERSION >= 140
+# define tzname _tzname
+# define daylight _daylight
+# endif
/* this needs tzset or localtime, instead of localtime_r */
*zone = zone_str(tzname[daylight && tm.tm_isdst]);
#else
diff --git a/win32/Makefile.sub b/win32/Makefile.sub
index e4c64ad1b4..826e4ac10f 100644
--- a/win32/Makefile.sub
+++ b/win32/Makefile.sub
@@ -785,7 +785,6 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub
#define HAVE_STRUCT_TIMEVAL 1
!if $(MSC_VER) >= 1900
#define HAVE_STRUCT_TIMESPEC
-#define HAVE_LOCALE_H 1
!endif
!if $(MSC_VER) >= 1600
#define HAVE_INTTYPES_H 1