|
@@ -136,6 +136,7 @@ var
|
|
doseek,
|
|
doseek,
|
|
exists,
|
|
exists,
|
|
writing : boolean;
|
|
writing : boolean;
|
|
|
|
+ old_file_mode: byte;
|
|
begin
|
|
begin
|
|
|
|
|
|
if (path='') or (mode='') then begin
|
|
if (path='') or (mode='') then begin
|
|
@@ -227,20 +228,22 @@ begin
|
|
GetFAttr(s^.gzfile, Attr);
|
|
GetFAttr(s^.gzfile, Attr);
|
|
exists:=(DosError= 0);
|
|
exists:=(DosError= 0);
|
|
{$endif}
|
|
{$endif}
|
|
-
|
|
|
|
|
|
+
|
|
doseek:=false;
|
|
doseek:=false;
|
|
if ((s^.mode='a') and not exists) or (s^.mode='w') then
|
|
if ((s^.mode='a') and not exists) or (s^.mode='w') then
|
|
begin
|
|
begin
|
|
-
|
|
|
|
- ReWrite (s^.gzfile,1)
|
|
|
|
|
|
+ ReWrite (s^.gzfile,1)
|
|
end
|
|
end
|
|
else
|
|
else
|
|
begin
|
|
begin
|
|
- Reset (s^.gzfile,1);
|
|
|
|
|
|
+ old_file_mode := FileMode;
|
|
|
|
+ FileMode := 0;
|
|
|
|
+ Reset (s^.gzfile,1);
|
|
|
|
+ FileMode := old_file_mode;
|
|
if s^.mode='a' then
|
|
if s^.mode='a' then
|
|
doseek:=true; // seek AFTER I/O check.
|
|
doseek:=true; // seek AFTER I/O check.
|
|
end;
|
|
end;
|
|
-
|
|
|
|
|
|
+
|
|
{$POP}
|
|
{$POP}
|
|
if (IOResult <> 0) then begin
|
|
if (IOResult <> 0) then begin
|
|
destroy(s);
|
|
destroy(s);
|