diff --git a/ocat b/ocat index 277a42b4..9e0aaf3f 100755 Binary files a/ocat and b/ocat differ diff --git a/showdef b/showdef index af2514a8..3c9d1b61 100755 Binary files a/showdef and b/showdef differ diff --git a/src/lib/ooc/gnuc/oocSysClock.Mod b/src/lib/ooc/oocSysClock.Mod similarity index 67% rename from src/lib/ooc/gnuc/oocSysClock.Mod rename to src/lib/ooc/oocSysClock.Mod index da8c1282..da43fea4 100644 --- a/src/lib/ooc/gnuc/oocSysClock.Mod +++ b/src/lib/ooc/oocSysClock.Mod @@ -1,25 +1,5 @@ -(* $Id: SysClock.Mod,v 1.7 1999/09/02 13:42:24 acken Exp $ *) -MODULE oocSysClock(* [FOREIGN "C"; LINK FILE "SysClock.c" END]*); -IMPORT SYSTEM; -(* SysClock - facilities for accessing a system clock that records the - date and time of day. - Copyright (C) 1996-1998 Michael Griebling - - This module is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - This module is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*) -(*<* Warnings := FALSE *>*) +MODULE oocSysClock; +IMPORT Unix; CONST maxSecondParts* = 999; (* Most systems have just millisecond accuracy *) @@ -65,19 +45,15 @@ TYPE inactive. *) END; -PROCEDURE -includeTime() - "#include "; -PROCEDURE -includeiSysTime() - "#include "; - - -PROCEDURE -cangetclock() : BOOLEAN -"struct timeval t; return (BOOLEAN)(gettimeofday(&t, NULL) == 0);"; -(* PROCEDURE CanGetClock*(): BOOLEAN; (* Returns TRUE if a system clock can be read; FALSE otherwise. *) -*) +VAR timeval: Unix.Timeval; timezone: Unix.Timezone; +l : LONGINT; +BEGIN + l := Unix.Gettimeofday(timeval, timezone); + IF l = 0 THEN RETURN TRUE ELSE RETURN FALSE END +END CanGetClock; (* PROCEDURE CanSetClock*(): BOOLEAN; (* Returns TRUE if a system clock can be set; FALSE otherwise. *) @@ -87,11 +63,8 @@ PROCEDURE IsValidDateTime* (d: DateTime): BOOLEAN; (* Returns TRUE if the value of `d' represents a valid date and time; FALSE otherwise. *) *) -(* -PROCEDURE GetClock* (VAR userData: DateTime); -(* If possible, assigns system date and time of day to `userData' (i.e., - the local time is returned). Error returns 1 Jan 1970. *) - *) + + (* PROCEDURE SetClock* (userData: DateTime); (* If possible, sets the system clock to the values of `userData'. *) @@ -115,16 +88,23 @@ PROCEDURE MakeLocalTime * (VAR c: DateTime); whether DST or normal time zone will be chosen. *) *) -PROCEDURE -gtod(VAR sec, usec : LONGINT) -" struct timeval tval; int res; res = gettimeofday(&tval, NULL); if (!res) { *sec = tval.tv_sec; *usec = tval.tv_usec; return 0; } else {*sec = 0; *usec = 0; return -1; }"; - PROCEDURE GetTimeOfDay* (VAR sec, usec: LONGINT): LONGINT; (* PRIVAT. Don't use this. Take Time.GetTime instead. Equivalent to the C function `gettimeofday'. The return value is `0' on success and `-1' on failure; in the latter case `sec' and `usec' are set to zero. *) + VAR timeval: Unix.Timeval; timezone: Unix.Timezone; + l : LONGINT; BEGIN - gtod (sec, usec); + l := Unix.Gettimeofday (timeval, timezone); + IF l = 0 THEN + sec := timeval.sec; + usec := timeval.usec; + ELSE + sec := 0; + usec := 0; + END; + RETURN l; END GetTimeOfDay; END oocSysClock. diff --git a/src/lib/system/gnuc/x86_64/Unix.Mod b/src/lib/system/gnuc/x86_64/Unix.Mod index 7bf77533..2539dbd9 100644 --- a/src/lib/system/gnuc/x86_64/Unix.Mod +++ b/src/lib/system/gnuc/x86_64/Unix.Mod @@ -332,7 +332,7 @@ from man gettimeofday PROCEDURE -Select*(width: LONGINT; VAR readfds, writefds, exceptfds: FdSet; VAR timeout: Timeval): LONGINT "select(width, readfds, writefds, exceptfds, timeout)"; - PROCEDURE -Gettimeofday* (VAR tv: Timeval; VAR tz: Timezone) + PROCEDURE -Gettimeofday* (VAR tv: Timeval; VAR tz: Timezone) : LONGINT "gettimeofday(tv, tz)"; PROCEDURE -Read* (fd, buf, nbyte: LONGINT): LONGINT diff --git a/src/lib/v4/Kernel.Mod b/src/lib/v4/Kernel.Mod index f9769b4f..13e0c5f7 100644 --- a/src/lib/v4/Kernel.Mod +++ b/src/lib/v4/Kernel.Mod @@ -84,8 +84,9 @@ MODULE Kernel; PROCEDURE GetClock* (VAR t, d: LONGINT); VAR tv: Unix.Timeval; tz: Unix.Timezone; time: RealTime; + l : LONGINT; BEGIN - Unix.Gettimeofday(tv, tz); + l := Unix.Gettimeofday(tv, tz); time := localtime(tv.sec); t := time.sec + ASH(time.min, 6) + ASH(time.hour, 12); d := time.mday + ASH(time.mon+1, 5) + ASH(time.year MOD 100, 9); @@ -98,8 +99,9 @@ MODULE Kernel; PROCEDURE Time*(): LONGINT; VAR timeval: Unix.Timeval; timezone: Unix.Timezone; + l : LONGINT; BEGIN - Unix.Gettimeofday(timeval, timezone); + l := Unix.Gettimeofday(timeval, timezone); RETURN (timeval.usec DIV 1000 + timeval.sec * 1000 - timeStart) MOD 7FFFFFFFH END Time; diff --git a/voc b/voc index 781786d6..57cd5fe4 100755 Binary files a/voc and b/voc differ diff --git a/vocstatic b/vocstatic index 5a61e0f7..57cd5fe4 100755 Binary files a/vocstatic and b/vocstatic differ diff --git a/vocstatic.linux.gnuc.x86_64 b/vocstatic.linux.gnuc.x86_64 index 5a61e0f7..57cd5fe4 100755 Binary files a/vocstatic.linux.gnuc.x86_64 and b/vocstatic.linux.gnuc.x86_64 differ