From bd6d1e0b6ae443c0307cd587c1a9a5f765e6ff82 Mon Sep 17 00:00:00 2001 From: svenbarth <pascaldragon@googlemail.com> Date: Wed, 12 Aug 2020 19:07:18 +0000 Subject: [PATCH] * do not automatically register the RC reader, because it captures any file, instead handle that in fpcres itself if the output format calls for it git-svn-id: trunk@46395 - --- packages/fcl-res/src/rcreader.pp | 3 ++- utils/fpcres/fpcres.pas | 1 + utils/fpcres/sourcehandler.pas | 17 ++++++++++++----- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/packages/fcl-res/src/rcreader.pp b/packages/fcl-res/src/rcreader.pp index 8f17be033e..d63b35f0b9 100644 --- a/packages/fcl-res/src/rcreader.pp +++ b/packages/fcl-res/src/rcreader.pp @@ -127,6 +127,7 @@ begin end; initialization - TResources.RegisterReader('.rc',TRCResourceReader); + { don't register automatically, as this is essentially a "catch all" } + //TResources.RegisterReader('.rc',TRCResourceReader); end. diff --git a/utils/fpcres/fpcres.pas b/utils/fpcres/fpcres.pas index 06f8dfe63c..d822729e49 100644 --- a/utils/fpcres/fpcres.pas +++ b/utils/fpcres/fpcres.pas @@ -218,6 +218,7 @@ begin sourcefiles.FileList.AddStrings(params.InputFiles); sourcefiles.RCDefines.AddStrings(params.RCDefines); sourcefiles.RCIncludeDirs.AddStrings(params.RCIncludeDirs); + sourcefiles.RCMode:=CurrentTarget.objformat=ofRes; try sourcefiles.Load(resources); except diff --git a/utils/fpcres/sourcehandler.pas b/utils/fpcres/sourcehandler.pas index cd488f6f28..568391b187 100644 --- a/utils/fpcres/sourcehandler.pas +++ b/utils/fpcres/sourcehandler.pas @@ -39,6 +39,7 @@ type fRCIncludeDirs: TStringList; fRCDefines: TStringList; fStreamList : TFPList; + fRCMode: Boolean; public constructor Create; destructor Destroy; override; @@ -46,6 +47,7 @@ type property FileList : TStringList read fFileList; property RCIncludeDirs: TStringList read fRCIncludeDirs; property RCDefines: TStringList read fRCDefines; + property RCMode: Boolean read fRCMode write fRCMode; end; implementation @@ -61,6 +63,7 @@ begin fStreamList:=TFPList.Create; fRCDefines:= TStringList.Create; fRCIncludeDirs:= TStringList.Create; + fRCMode:=False; end; destructor TSourceFiles.Destroy; @@ -92,11 +95,15 @@ begin raise ECantOpenFileException.Create(fFileList[i]); end; fStreamList.Add(aStream); - try - aReader:=TResources.FindReader(aStream); - except - raise EUnknownInputFormatException.Create(fFileList[i]); - end; + { the RC reader reads anything, so handle that separately } + if fRCMode then + aReader:=TRCResourceReader.Create + else + try + aReader:=TResources.FindReader(aStream); + except + raise EUnknownInputFormatException.Create(fFileList[i]); + end; Messages.DoVerbose(Format('Chosen reader: %s',[aReader.Description])); try Messages.DoVerbose('Reading resource information...');