From 0f1bdec7ad9b30d95f8e2576e09570f1d0747cd3 Mon Sep 17 00:00:00 2001 From: marco Date: Sun, 22 Nov 2015 13:21:21 +0000 Subject: * mantis #28917 'r' mode sets filemode. git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@32490 3ad0048d-3df7-0310-abae-a5850022a9f2 --- packages/paszlib/src/gzio.pas | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'packages/paszlib') 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); -- cgit v1.2.1