Subversion Repositories Kolibri OS

Rev

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

Rev 7696 Rev 7983
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-2020, Anton Krotov
5
    All rights reserved.
5
    All rights reserved.
Line 6... Line 6...
6
*)
6
*)
Line 15... Line 15...
15
    FILE* = POINTER TO RECORD (C.ITEM)
15
    FILE* = POINTER TO RECORD (C.ITEM)
Line 16... Line 16...
16
 
16
 
Line 17... Line 17...
17
        ptr: INTEGER;
17
        ptr: INTEGER;
18
 
18
 
-
 
19
        buffer: ARRAY 64*1024 OF BYTE;
-
 
20
        count:  INTEGER;
Line 19... Line 21...
19
        buffer: ARRAY 64*1024 OF BYTE;
21
 
Line 20... Line 22...
20
        count:  INTEGER
22
        chksum*: INTEGER
Line 81... Line 83...
81
    ptr := UTILS.FileCreate(name);
83
    ptr := UTILS.FileCreate(name);
Line 82... Line 84...
82
 
84
 
83
    IF ptr > 0 THEN
85
    IF ptr > 0 THEN
84
        file := NewFile();
86
        file := NewFile();
85
        file.ptr := ptr;
87
        file.ptr := ptr;
-
 
88
        file.count := 0;
86
        file.count := 0
89
        file.chksum := 0
87
    ELSE
90
    ELSE
88
        file := NIL
91
        file := NIL
Line 89... Line 92...
89
    END
92
    END
Line 188... Line 191...
188
END write;
191
END write;
Line 189... Line 192...
189
 
192
 
190
 
193
 
191
PROCEDURE WriteByte* (file: FILE; byte: BYTE): BOOLEAN;
194
PROCEDURE WriteByte* (file: FILE; byte: BYTE): BOOLEAN;
Line 192... Line 195...
192
VAR
195
VAR
193
    res: BOOLEAN;
196
    arr: ARRAY 1 OF BYTE;
194
 
-
 
195
BEGIN
-
 
196
    res := TRUE;
-
 
197
    IF (file # NIL) & (file.count >= 0) THEN
-
 
198
        IF file.count = LEN(file.buffer) THEN
-
 
199
            IF flush(file) # LEN(file.buffer) THEN
-
 
200
                res := FALSE
197
 
201
            ELSE
-
 
202
                file.buffer[0] := byte;
-
 
203
                file.count := 1
-
 
204
            END
-
 
205
        ELSE
-
 
206
            file.buffer[file.count] := byte;
-
 
207
            INC(file.count)
-
 
208
        END
-
 
209
    ELSE
-
 
210
        res := FALSE
-
 
211
    END
198
BEGIN
Line 212... Line 199...
212
 
199
    arr[0] := byte
213
    RETURN res
200
    RETURN write(file, arr, 1) = 1