summaryrefslogtreecommitdiff
path: root/packages/paszlib
diff options
context:
space:
mode:
authormarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2015-11-22 13:21:21 +0000
committermarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2015-11-22 13:21:21 +0000
commit0f1bdec7ad9b30d95f8e2576e09570f1d0747cd3 (patch)
tree5e67a9129b0f0bc815f5256093fcb2f1ee15e492 /packages/paszlib
parent08dd2f385f9bc412d13854124910a69fdc6d0db0 (diff)
downloadfpc-0f1bdec7ad9b30d95f8e2576e09570f1d0747cd3.tar.gz
* mantis #28917 'r' mode sets filemode.
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@32490 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/paszlib')
-rw-r--r--packages/paszlib/src/gzio.pas13
1 files changed, 8 insertions, 5 deletions
diff --git a/packages/paszlib/src/gzio.pas b/packages/paszlib/src/gzio.pas
index feb9c514df..025b65b894 100644
--- a/packages/paszlib/src/gzio.pas
+++ b/packages/paszlib/src/gzio.pas
@@ -136,6 +136,7 @@ var
doseek,
exists,
writing : boolean;
+ old_file_mode: byte;
begin
if (path='') or (mode='') then begin
@@ -227,20 +228,22 @@ begin
GetFAttr(s^.gzfile, Attr);
exists:=(DosError= 0);
{$endif}
-
+
doseek:=false;
if ((s^.mode='a') and not exists) or (s^.mode='w') then
begin
-
- ReWrite (s^.gzfile,1)
+ ReWrite (s^.gzfile,1)
end
else
begin
- Reset (s^.gzfile,1);
+ old_file_mode := FileMode;
+ FileMode := 0;
+ Reset (s^.gzfile,1);
+ FileMode := old_file_mode;
if s^.mode='a' then
doseek:=true; // seek AFTER I/O check.
end;
-
+
{$POP}
if (IOResult <> 0) then begin
destroy(s);