Subversion Repositories Kolibri OS

Rev

Rev 7693 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7693 Rev 7696
Line 1... Line 1...
1
(*
1
(*
2
    BSD 2-Clause License
2
    BSD 2-Clause License
Line 3... Line 3...
3
 
3
 
4
    Copyright (c) 2018, 2019, Anton Krotov
4
    Copyright (c) 2018-2019, Anton Krotov
5
    All rights reserved.
5
    All rights reserved.
Line 6... Line 6...
6
*)
6
*)
Line 7... Line 7...
7
 
7
 
Line 8... Line 8...
8
MODULE UTILS;
8
MODULE UTILS;
Line 9... Line 9...
9
 
9
 
Line 22... Line 22...
22
 
22
 
23
    min32* = -2147483647-1;
23
    min32* = -2147483647-1;
Line -... Line 24...
-
 
24
    max32* =  2147483647;
-
 
25
 
-
 
26
 
-
 
27
TYPE
-
 
28
 
24
    max32* =  2147483647;
29
    DAYS = ARRAY 12, 31, 2 OF INTEGER;
Line 25... Line 30...
25
 
30
 
Line 26... Line 31...
26
 
31
 
Line 46... Line 51...
46
 
51
 
Line 47... Line 52...
47
      END;
52
      END;
Line -... Line 53...
-
 
53
 
Line -... Line 54...
-
 
54
    bit_diff*: INTEGER;
48
 
55
 
49
    bit_diff*: INTEGER;
56
    days: DAYS;
50
 
57
 
Line 51... Line 58...
51
 
58
 
Line 112... Line 119...
112
BEGIN
119
BEGIN
113
    HOST.GetCurrentDirectory(path)
120
    HOST.GetCurrentDirectory(path)
114
END GetCurrentDirectory;
121
END GetCurrentDirectory;
Line -... Line 122...
-
 
122
 
-
 
123
 
-
 
124
PROCEDURE GetUnixTime* (year, month, day, hour, min, sec: INTEGER): INTEGER;
-
 
125
    RETURN ((year - 1970) * 365 + days[month - 1, day - 1, ORD(year DIV 4 = 0)] + (year - 1969) DIV 4) * 86400 + hour * 3600 + min * 60 + sec
-
 
126
END GetUnixTime;
115
 
127
 
116
 
128
 
117
PROCEDURE UnixTime* (): INTEGER;
129
PROCEDURE UnixTime* (): INTEGER;
118
VAR
130
VAR
Line 119... Line 131...
119
    year, month, day, hour, min, sec: INTEGER;
131
    year, month, day, hour, min, sec: INTEGER;
120
    res: INTEGER;
132
    res: INTEGER;
121
 
133
 
122
BEGIN
134
BEGIN
123
    IF OS = "LINUX" THEN
135
    IF OS = "LINUX" THEN
124
        res := HOST.UnixTime()
136
        res := HOST.UnixTime()
125
    ELSE
137
    ELSE
Line 126... Line 138...
126
        HOST.now(year, month, day, hour, min, sec);
138
        HOST.now(year, month, day, hour, min, sec);
127
        res := UNIXTIME.time(year, month, day, hour, min, sec)
139
        res := GetUnixTime(year, month, day, hour, min, sec)
Line 199... Line 211...
199
 
211
 
200
    RETURN n
212
    RETURN n
Line -... Line 213...
-
 
213
END Log2;
-
 
214
 
-
 
215
 
-
 
216
PROCEDURE init (VAR days: DAYS);
-
 
217
VAR
-
 
218
    i, j, n0, n1: INTEGER;
-
 
219
 
-
 
220
BEGIN
-
 
221
 
-
 
222
    FOR i := 0 TO 11 DO
-
 
223
        FOR j := 0 TO 30 DO
-
 
224
            days[i, j, 0] := 0;
-
 
225
            days[i, j, 1] := 0;
-
 
226
        END
-
 
227
    END;
-
 
228
 
-
 
229
    days[ 1, 28, 0] := -1;
-
 
230
 
-
 
231
    FOR i := 0 TO 1 DO
-
 
232
        days[ 1, 29, i] := -1;
-
 
233
        days[ 1, 30, i] := -1;
-
 
234
        days[ 3, 30, i] := -1;
-
 
235
        days[ 5, 30, i] := -1;
-
 
236
        days[ 8, 30, i] := -1;
-
 
237
        days[10, 30, i] := -1;
-
 
238
    END;
-
 
239
 
-
 
240
    n0 := 0;
-
 
241
    n1 := 0;
-
 
242
    FOR i := 0 TO 11 DO
-
 
243
        FOR j := 0 TO 30 DO
-
 
244
            IF days[i, j, 0] = 0 THEN
-
 
245
                days[i, j, 0] := n0;
-
 
246
                INC(n0)
-
 
247
            END;
-
 
248
            IF days[i, j, 1] = 0 THEN
-
 
249
                days[i, j, 1] := n1;
-
 
250
                INC(n1)
-
 
251
            END
-
 
252
        END
-
 
253
    END
-
 
254
 
201
END Log2;
255
END init;
202
 
256
 
203
 
257
 
204
BEGIN
258
BEGIN
205
    time := GetTickCount();
259
    time := GetTickCount();
-
 
260
    COPY(HOST.eol, eol);
206
    COPY(HOST.eol, eol);
261
    maxreal := 1.9;
207
    maxreal := 1.9;
262
    PACK(maxreal, 1023);