--- a/UnixOperatingSystem.st Mon Nov 10 14:28:32 2003 +0100
+++ b/UnixOperatingSystem.st Mon Nov 10 15:55:20 2003 +0100
@@ -8289,21 +8289,18 @@
or use instances of Time, Date or AbsoluteTime to work with.
"
- |seconds millis|
-
-%{
-
+%{ /* NOCONTEXT */
long t;
long _secs, _millis;
#if !defined(HAS_GETTIMEOFDAY)
# if defined(HAS_FTIME)
{
- struct timeb timebuffer;
-
- ftime(&timebuffer);
- _secs = timebuffer.time;
- _millis = timebuffer.millitm;
+ struct timeb timebuffer;
+
+ ftime(&timebuffer);
+ _secs = timebuffer.time;
+ _millis = timebuffer.millitm;
}
# define HAVE_TIME
# endif /* HAS_FTIME */
@@ -8311,19 +8308,19 @@
# ifndef HAVE_TIME
# if defined(SYSV) && defined(HZ)
{
- /*
- * sys5 time; we have to fake the information
- * the returned value is inexact.
- */
- long ticks;
- struct tms tb;
-
- _secs = time(0); /* seconds since 1970 ... */
-
- ticks = times(&tb);
- t = (ticks * 1000) / HZ;
- t = t % 1000;
- _millis = __MKSMALLINT(t);
+ /*
+ * sys5 time; we have to fake the information
+ * the returned value is inexact.
+ */
+ long ticks;
+ struct tms tb;
+
+ _secs = time(0); /* seconds since 1970 ... */
+
+ ticks = times(&tb);
+ t = (ticks * 1000) / HZ;
+ t = t % 1000;
+ _millis = __MKSMALLINT(t);
}
# define HAVE_TIME
# endif /* OLD SYSV stuff */
@@ -8337,16 +8334,16 @@
*/
{
- /*
- * bsd time
- */
- struct timeval tb;
- /* struct timezone tzb; */
-
- gettimeofday(&tb, NULL /* &tzb */);
-
- _secs = tb.tv_sec;
- _millis = tb.tv_usec / 1000;
+ /*
+ * bsd time
+ */
+ struct timeval tb;
+ /* struct timezone tzb; */
+
+ gettimeofday(&tb, NULL /* &tzb */);
+
+ _secs = tb.tv_sec;
+ _millis = tb.tv_usec / 1000;
}
#endif
@@ -8362,30 +8359,38 @@
#ifdef alpha64
{
- unsigned INT _lsecs, _lmillis, rslt;
-
- _lsecs = (INT)_secs;
- _lmillis = (INT)_millis;
- rslt = _lsecs * 1000 + _lmillis;
- RETURN (__MKUINT(rslt));
+ unsigned INT _lsecs, _lmillis, rslt;
+
+ _lsecs = (INT)_secs;
+ _lmillis = (INT)_millis;
+ rslt = _lsecs * 1000 + _lmillis;
+ RETURN (__MKUINT(rslt));
}
#else
# ifdef HAS_LONGLONG
{
- unsigned long long _lsecs, _lmillis, rslt;
- unsigned low, hi;
-
- _lsecs = (long long)_secs;
- _lmillis = (long long)_millis;
- rslt = _lsecs * 1000 + _lmillis;
- low = rslt & 0xFFFFFFFF;
- hi = rslt >> 32;
- RETURN (__MKLARGEINT64(1, low, hi));
+ unsigned long long _lsecs, _lmillis, rslt;
+ unsigned low, hi;
+
+ _lsecs = (long long)_secs;
+ _lmillis = (long long)_millis;
+ rslt = _lsecs * 1000 + _lmillis;
+ low = rslt & 0xFFFFFFFF;
+ hi = rslt >> 32;
+ RETURN (__MKLARGEINT64(1, low, hi));
}
# else
- seconds = __MKUINT(_secs);
- millis = __MKUINT(_millis);
- RETURN (__ARRAY_WITH2(seconds, millis));
+ {
+ OBJ seconds, millis, rslt;
+
+ seconds = __MKUINT(_secs);
+ __PROTECT__(seconds);
+ millis = __MKUINT(_millis);
+ __PROTECT__(millis);
+ rslt = __ARRAY_WITH2(seconds, millis);
+ __UNPROTECT__(millis);
+ __UNPROTECT__(seconds);
+ RETURN ( rslt );
# endif /* long long */
#endif /* alpha64 */
%}.
@@ -12170,7 +12175,7 @@
!UnixOperatingSystem class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.192 2003-11-10 13:27:35 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.193 2003-11-10 14:55:20 cg Exp $'
! !
UnixOperatingSystem initialize!