UnixOperatingSystem.st
branchjv
changeset 18376 6e59795a422b
parent 18366 a6e62e167c32
parent 18375 746134085952
child 18403 9a3fc7cc7127
--- a/UnixOperatingSystem.st	Tue May 19 06:55:39 2015 +0200
+++ b/UnixOperatingSystem.st	Wed May 20 06:35:13 2015 +0200
@@ -5968,7 +5968,7 @@
 	int sigNo = signalNumber.intValue();
 
 	if (sigNo != 0) {
-	    System.err.println("ignored disable-signal: "+sigNo);
+	    java.lang.System.err.println("ignored disable-signal: "+sigNo);
 	}
 	return context._RETURN(self);
     }
@@ -6163,7 +6163,7 @@
 	int sigNo = signalNumber.intValue();
 
 	if (sigNo != 0) {
-	    System.err.println("ignored enable-signal: "+sigNo);
+	    java.lang.System.err.println("ignored enable-signal: "+sigNo);
 	}
 	return context._RETURN(self);
     }
@@ -6391,7 +6391,7 @@
     if (milliSeconds.isSmallInteger()) {
 	long millis = milliSeconds.longValue();
 
-	System.err.println("ignored enable-timer");
+	java.lang.System.err.println("ignored enable-timer");
 	return context._RETURN(self);
     }
 #else
@@ -7193,7 +7193,7 @@
 %{  /* NOCONTEXT */
 #ifdef __SCHTEAM__
     {
-	java.lang.String val = System.getenv( aStringOrSymbol.asString() );
+	java.lang.String val = java.lang.System.getenv( aStringOrSymbol.asString() );
 	STObject retVal;
 
 	if (val == null) {
@@ -9804,7 +9804,7 @@
 %{
 #ifdef __SCHTEAM__
     {
-	long nanos = System.nanoTime();
+	long nanos = java.lang.System.nanoTime();
 
 	return context._RETURN( STInteger._new(nanos / 1000) );
     }
@@ -9903,7 +9903,7 @@
 %{  /* NOCONTEXT */
 #ifdef __SCHTEAM__
     {
-	long millis = System.currentTimeMillis();
+	long millis = java.lang.System.currentTimeMillis();
 	return context._RETURN( STInteger._new(millis) );
     }
     /* NOTREACHED */
@@ -10113,10 +10113,44 @@
      OS-second value.
      An internal helper"
 
-    |year month day hours minutes seconds utcOffset
+    |year month day hours minutes seconds utcOffset dstOffset
      dst yDay wDay info|
 
 %{
+#ifdef __SCHTEAM__
+    if (osSeconds.isSmallInteger()
+     && osMilliseconds.isSmallInteger()) {
+	long _seconds = osSeconds.longValue();
+	long _millis = osMilliseconds.longValue();
+	long _millisSinceEpoch = _seconds * 1000 + _millis;
+	java.util.TimeZone _tz;
+	java.util.Calendar _calendar;
+	int _wDay;
+
+	if (isLocalTime == STObject.True) {
+	    _tz = java.util.TimeZone.getDefault();
+	} else {
+	    _tz = java.util.TimeZone.getTimeZone("UTC");
+	}
+	_calendar = java.util.Calendar.getInstance(_tz);
+	_calendar.setTimeInMillis(_millisSinceEpoch);
+
+	year = STInteger._new( _calendar.get(java.util.Calendar.YEAR) );
+	month = STInteger._new( _calendar.get(java.util.Calendar.MONTH) + 1 );
+	day = STInteger._new( _calendar.get(java.util.Calendar.DAY_OF_MONTH) );
+	hours = STInteger._new( _calendar.get(java.util.Calendar.HOUR_OF_DAY) );
+	minutes = STInteger._new( _calendar.get(java.util.Calendar.MINUTE) );
+	seconds = STInteger._new( _calendar.get(java.util.Calendar.SECOND) );
+	yDay = STInteger._new( _calendar.get(java.util.Calendar.DAY_OF_YEAR) );
+	_wDay = _calendar.get(java.util.Calendar.DAY_OF_WEEK);
+	// convert from 1=SUN, 2=MON,...
+	// to 1=MON, 2=TUE,...
+	_wDay = _wDay - 1; if (_wDay < 1) _wDay += 7;
+	wDay = STInteger._new( _wDay );
+	utcOffset = STInteger._new( (_calendar.get(java.util.Calendar.ZONE_OFFSET)) / 1000 );
+	dstOffset = STInteger._new( (_calendar.get(java.util.Calendar.DST_OFFSET)) / 1000 );
+    }
+#else
     struct tm tmValue, *result;
     time_t tt = __signedLongIntVal(osSeconds);
 
@@ -10155,6 +10189,7 @@
 	dst = (tmValue.tm_isdst == 0 ? false : true);
     }
 out:;
+#endif
 %}.
     info notNil ifTrue:[
 	"there is a matching cached value"
@@ -10167,7 +10202,9 @@
 	year isNil ifTrue:[
 	    TimeConversionError raiseErrorString:' - out of range'.
 	].
-
+	dst isNil ifTrue:[
+	    dst := (dstOffset ~= 0)
+	].
 	info := self timeInfoClass new.
 	info
 	    year:year
@@ -14384,11 +14421,11 @@
 !UnixOperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.439 2015-05-16 09:47:43 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.440 2015-05-19 13:41:07 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.439 2015-05-16 09:47:43 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.440 2015-05-19 13:41:07 cg Exp $'
 ! !