diff options
author | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2015-11-22 13:21:21 +0000 |
---|---|---|
committer | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2015-11-22 13:21:21 +0000 |
commit | 0f1bdec7ad9b30d95f8e2576e09570f1d0747cd3 (patch) | |
tree | 5e67a9129b0f0bc815f5256093fcb2f1ee15e492 | |
parent | 08dd2f385f9bc412d13854124910a69fdc6d0db0 (diff) | |
download | fpc-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
-rw-r--r-- | packages/paszlib/src/gzio.pas | 13 |
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); |