From kde-devel Tue Aug 26 20:24:01 2008 From: James Richard Tyrer Date: Tue, 26 Aug 2008 20:24:01 +0000 To: kde-devel Subject: Re: [PATCH] Changes in Strigi caused build problems in 4.1 BRANCH Message-Id: <48B46661.50709 () acm ! org> X-MARC-Message: https://marc.info/?l=kde-devel&m=121978234726907 James Richard Tyrer wrote: > James Richard Tyrer wrote: >> This is from KDELibs: >> >> [ 45%] Building CXX object >> kio/kio/dummyanalyzers/CMakeFiles/dummy.dir/dummyanalyzers.o >> /usr/SVN/branches/KDE/4.1/kdelibs/kio/kio/dummyanalyzers/dummyanalyzers.cpp:43: >> error: conflicting return type specified for 'virtual char >> DummyEndAnalyzer::analyze(Strigi::AnalysisResult&, Strigi::InputStream*)' >> /usr/local/KDE-4.1/include/strigi/streamendanalyzer.h:37: error: >> overriding 'virtual signed char >> Strigi::StreamEndAnalyzer::analyze(Strigi::AnalysisResult&, >> Strigi::InputStream*)' >> make[2]: *** >> [kio/kio/dummyanalyzers/CMakeFiles/dummy.dir/dummyanalyzers.o] Error 1 >> make[1]: *** [kio/kio/dummyanalyzers/CMakeFiles/dummy.dir/all] Error 2 >> make: *** [all] Error 2 >> > It should seem obvious but the types do need to match, and you can't > assign the value "-1" to unsigned character. > > ------8<------8<------8<------8<------8<------8<------8<------8<------ > > Index: kio/kio/dummyanalyzers/dummyanalyzers.cpp > =================================================================== > --- kio/kio/dummyanalyzers/dummyanalyzers.cpp (revision 852451) > +++ kio/kio/dummyanalyzers/dummyanalyzers.cpp (working copy) > @@ -40,7 +40,7 @@ public: > bool checkHeader(const char*, int32_t) const { > return false; > } > - char analyze(Strigi::AnalysisResult&, InputStream*) { > + signed char analyze(Strigi::AnalysisResult&, InputStream*) { > return -1; > } > const char* name() const { return "DummyEndAnalyzer"; } > > > ------8<------8<------8<------8<------8<------8<------8<------8<------ > > Index: strigi-analyzer/rfc822/rfc822endanalyzer.cpp > =================================================================== > --- strigi-analyzer/rfc822/rfc822endanalyzer.cpp (revision 852459) > +++ strigi-analyzer/rfc822/rfc822endanalyzer.cpp (working copy) > @@ -38,7 +38,7 @@ bool Rfc822EndAnalyzer::checkHeader( co > return false; > } > > -char Rfc822EndAnalyzer::analyze( Strigi::AnalysisResult& idx, > Strigi::InputStream* in ) > +signed char Rfc822EndAnalyzer::analyze( Strigi::AnalysisResult& idx, > Strigi::InputStream* in ) > { > char id_from[] = "From: "; > char id_to[] = "To: "; > Index: strigi-analyzer/rfc822/rfc822endanalyzer.h > =================================================================== > --- strigi-analyzer/rfc822/rfc822endanalyzer.h (revision 852459) > +++ strigi-analyzer/rfc822/rfc822endanalyzer.h (working copy) > @@ -36,7 +36,7 @@ public: > > const char* name() const { return "Rfc822EndAnalyzer"; } > bool checkHeader( const char* header, int32_t headersize ) const; > - char analyze( Strigi::AnalysisResult& idx, Strigi::InputStream* in ); > + signed char analyze( Strigi::AnalysisResult& idx, > Strigi::InputStream* in ); > > private: > const Rfc822EndAnalyzerFactory* m_factory; > Index: strigi-analyzer/ics/icsendanalyzer.h > =================================================================== > --- strigi-analyzer/ics/icsendanalyzer.h (revision 852459) > +++ strigi-analyzer/ics/icsendanalyzer.h (working copy) > @@ -36,7 +36,7 @@ public: > > const char* name() const { return "IcsEndAnalyzer"; } > bool checkHeader( const char* header, int32_t headersize ) const; > - char analyze( Strigi::AnalysisResult& idx, Strigi::InputStream* in ); > + signed char analyze( Strigi::AnalysisResult& idx, > Strigi::InputStream* in ); > > private: > const IcsEndAnalyzerFactory* m_factory; > Index: strigi-analyzer/ics/icsendanalyzer.cpp > =================================================================== > --- strigi-analyzer/ics/icsendanalyzer.cpp (revision 852459) > +++ strigi-analyzer/ics/icsendanalyzer.cpp (working copy) > @@ -51,7 +51,7 @@ bool IcsEndAnalyzer::checkHeader( const > I chose to use libkcal instead of reading the calendar manually. It's > easier to > maintain this way. > */ > -char IcsEndAnalyzer::analyze( Strigi::AnalysisResult& idx, > Strigi::InputStream* in ) > +signed char IcsEndAnalyzer::analyze( Strigi::AnalysisResult& idx, > Strigi::InputStream* in ) > { > CalendarLocal cal( QString::fromLatin1( "UTC" ) ); > > Index: strigi-analyzer/vcf/vcfendanalyzer.h > =================================================================== > --- strigi-analyzer/vcf/vcfendanalyzer.h (revision 852459) > +++ strigi-analyzer/vcf/vcfendanalyzer.h (working copy) > @@ -37,7 +37,7 @@ class PIMSTRIGI_ANALYZER_EXPORT VcfEndAn > > const char* name() const { return "VcfEndAnalyzer"; } > bool checkHeader( const char* header, int32_t headersize ) const; > - char analyze( Strigi::AnalysisResult& idx, Strigi::InputStream* in ); > + signed char analyze( Strigi::AnalysisResult& idx, > Strigi::InputStream* in ); > > private: > const VcfEndAnalyzerFactory* m_factory; > Index: strigi-analyzer/vcf/vcfendanalyzer.cpp > =================================================================== > --- strigi-analyzer/vcf/vcfendanalyzer.cpp (revision 852459) > +++ strigi-analyzer/vcf/vcfendanalyzer.cpp (working copy) > @@ -43,7 +43,7 @@ bool VcfEndAnalyzer::checkHeader( const > * It's easier to use KABC::VCardConverter to extract the single > fields from the vCard > * than doing it manually. > */ > -char VcfEndAnalyzer::analyze( Strigi::AnalysisResult& idx, > Strigi::InputStream* in ) > +signed char VcfEndAnalyzer::analyze( Strigi::AnalysisResult& idx, > Strigi::InputStream* in ) > { > const char* data; > if ( in->read( data, 1, in->size() ) < 0 ) > > ------8<------8<------8<------8<------8<------8<------8<------8<------ > > Although I don't understand the code -- I only fixed the conflicting > types -- and don't know if it is wise to use the signed character type > here, this does fix the compilation problems. If it causes other bugs, > then the code needs some work. Unless we are actually dealing with 7 > bit signed integer data, I would always suggest using an unsigned > character and a Boolean variable. Such code is simply a better way to > do things (easier to understand and maintain, etc.). If we must have a > single return value, use a structure. > And also KDESDK: ------8<------8<------8<------8<------8<------8<------8<------8<------ Index: strigi-analyzer/po/poendanalyzer.cpp =================================================================== --- strigi-analyzer/po/poendanalyzer.cpp (revision 852724) +++ strigi-analyzer/po/poendanalyzer.cpp (working copy) @@ -41,7 +41,7 @@ class PoEndAnalyzer : public StreamEndAn PoEndAnalyzer(const PoEndAnalyzerFactory* f):factory(f) {} const char* name() const {return "PoEndAnalyzer";} bool checkHeader(const char* header, int32_t headersize) const; - char analyze(Strigi::AnalysisResult& idx,Strigi::InputStream* in); + signed char analyze(Strigi::AnalysisResult& idx,Strigi::InputStream* in); private: const PoEndAnalyzerFactory* factory; }; @@ -103,7 +103,7 @@ bool PoEndAnalyzer::checkHeader(const ch } -char PoEndAnalyzer::analyze(AnalysisResult& idx, InputStream* in) +signed char PoEndAnalyzer::analyze(AnalysisResult& idx, InputStream* in) { if (idx.extension()=="svn-base") return Ok; ------8<------8<------8<------8<------8<------8<------8<------8<------ -- JRT >> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<