Mailinglist Archive: opensuse-commit (941 mails)

< Previous Next >
commit strigi for openSUSE:Factory
Hello community,

here is the log from the commit of package strigi for openSUSE:Factory checked
in at 2012-04-17 22:02:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/strigi (Old)
and /work/SRC/openSUSE:Factory/.strigi.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "strigi", Maintainer is "kde-maintainers@xxxxxxx"

Changes:
--------
--- /work/SRC/openSUSE:Factory/strigi/strigi.changes 2012-01-27
15:24:32.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.strigi.new/strigi.changes 2012-04-17
22:02:44.000000000 +0200
@@ -1,0 +2,19 @@
+Thu Mar 15 08:35:36 UTC 2012 - aj@xxxxxxx
+
+- Fix build: Always include unistd.h for sleep declaration.
+
+-------------------------------------------------------------------
+Tue Mar 6 03:14:23 UTC 2012 - stefan.bruens@xxxxxxxxxxxxxx
+
+- update to 0.7.7:
+ - Many nepomuk field name fixes
+ - More accurate file format check for tar files
+ - Better checking of bounds in OLE files.
+ - Increase performance of default file input stream.
+ - Check for surrogate pairs in UTF-8 strings.
+ - Improve ID3 analyzer: skip zero padding before mp3 stream to
+ handle typical LAME output, implement unsynchronization flag
+ handling
+ - Properly finish child indexing in all analyzers.
+
+-------------------------------------------------------------------

Old:
----
bko_251701.v3.patch
strigi-0.7.6.tar.bz2

New:
----
strigi-0.7.7.tar.bz2
strigi-missing-decl.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ strigi.spec ++++++
--- /var/tmp/diff_new_pack.ZpwPI7/_old 2012-04-17 22:02:46.000000000 +0200
+++ /var/tmp/diff_new_pack.ZpwPI7/_new 2012-04-17 22:02:46.000000000 +0200
@@ -19,19 +19,16 @@
%bcond_with ffmpeg

Name: strigi
-Version: 0.7.6
-Release: 2
+Version: 0.7.7
+Release: 0
License: GPL-2.0+ ; LGPL-2.1+
Summary: Lightweight and fast desktop search engine
Url: http://www.vandenoever.info/software/strigi/
Group: Productivity/Other
Source0: %{name}-%{version}.tar.bz2
Source100: baselibs.conf
-# PATCH-FIX-OPENSUSE bko_251701.v3.patch bko#251701 remur@xxxxxxx -- Check
file size of ole compound documents (fix dolphin crash when hovering a MSI file)
-Patch0: bko_251701.v3.patch
-%if 0%{?suse_version} > 1210
Patch1: add_missing_lib.diff
-%endif
+Patch2: strigi-missing-decl.patch
BuildRequires: bison
BuildRequires: boost-devel
BuildRequires: c++_compiler
@@ -85,10 +82,10 @@

%prep
%setup -q
-%patch0 -p1
%if 0%{?suse_version} > 1210
%patch1 -p0
%endif
+%patch2 -p1

%build
%cmake_kde4 -d build

++++++ strigi-0.7.6.tar.bz2 -> strigi-0.7.7.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strigi-0.7.6/ChangeLog new/strigi-0.7.7/ChangeLog
--- old/strigi-0.7.6/ChangeLog 2011-07-26 19:18:23.000000000 +0200
+++ new/strigi-0.7.7/ChangeLog 2011-12-07 21:41:27.000000000 +0100
@@ -1,3 +1,12 @@
+0.7.7 (2011-12-07)
+ - Many nepomuk field name fixes (Sebastian Trueg, Vishesh Handa)
+ - More accurate file format check for tar files (Evgeny Egorochkin, Jos van
+ den Oever)
+ - Better checking of bounds in OLE files. (Jos van den Oever)
+ - Increase performance of default file input stream. (Jos van den Oever)
+ - Check for surrogate pairs in UTF-8 strings. (Jos van den Oever)
+ - Improve ID3 analyzer: skip zero padding before mp3 stream to handle typical
LAME output, implement unsynchronization flag handling (Evgeny Egorochkin)
+ - Properly finish child indexing in all analyzers. (Sebastian Trueg)
0.7.6 (2011-07-26)
- Fix build with clucene 2.3 (Alex Merry)
- Use the deprecated function av_metadata_get for libffmpeg (Tirtha
Chatterjee)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strigi-0.7.6/libstreamanalyzer/CMakeLists.txt
new/strigi-0.7.7/libstreamanalyzer/CMakeLists.txt
--- old/strigi-0.7.6/libstreamanalyzer/CMakeLists.txt 2011-07-26
19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/CMakeLists.txt 2011-12-07
21:28:33.000000000 +0100
@@ -21,7 +21,7 @@

set(LIBSTREAMANALYZER_VERSION_MAJOR 0)
set(LIBSTREAMANALYZER_VERSION_MINOR 7)
-set(LIBSTREAMANALYZER_VERSION_PATCH 6)
+set(LIBSTREAMANALYZER_VERSION_PATCH 7)
set(LIBSTREAMANALYZER_VERSION
${LIBSTREAMANALYZER_VERSION_MAJOR}.${LIBSTREAMANALYZER_VERSION_MINOR}.${LIBSTREAMANALYZER_VERSION_PATCH})
set(LIBSTREAMANALYZER_SOVERSION ${LIBSTREAMANALYZER_VERSION_MAJOR})

diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/include/strigi/analysisresult.h
new/strigi-0.7.7/libstreamanalyzer/include/strigi/analysisresult.h
--- old/strigi-0.7.6/libstreamanalyzer/include/strigi/analysisresult.h
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/include/strigi/analysisresult.h
2011-12-07 21:28:33.000000000 +0100
@@ -138,6 +138,7 @@
AnalysisResult* child();
/**
* Associate a fragment of text with the file.
+ * Subsequent calls to addText are indexed as separate fragments.
*
* @param text a pointer to a fragment of utf8 encoded text
* @param length the length of the fragment
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/arendanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/arendanalyzer.cpp
--- old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/arendanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/arendanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -55,10 +55,12 @@
InputStream *s = ar.nextEntry();
if (s && ar.entryInfo().filename.compare("debian-binary") == 0) {
idx.indexChild(ar.entryInfo().filename, ar.entryInfo().mtime, s);
+ idx.finishIndexChild();
s = ar.nextEntry();
}
if (s && ar.entryInfo().filename.compare("control.tar.gz") == 0) {
idx.indexChild(ar.entryInfo().filename, ar.entryInfo().mtime, s);
+ idx.finishIndexChild();
s = ar.nextEntry();
}
if (idx.config().indexArchiveContents()) {
@@ -73,6 +75,7 @@
return 0;
}
idx.indexChild(ar.entryInfo().filename, ar.entryInfo().mtime, s);
+ idx.finishIndexChild();
s = ar.nextEntry();
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/bz2endanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/bz2endanalyzer.cpp
--- old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/bz2endanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/bz2endanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -67,6 +67,8 @@
if (len > 4 && name.substr(len-4)==".bz2") {
name = name.substr(0, len-4);
}
- return idx.indexChild(name, idx.mTime(), &stream);
+ signed char r = idx.indexChild(name, idx.mTime(), &stream);
+ idx.finishIndexChild();
+ return r;
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/cpioendanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/cpioendanalyzer.cpp
--- old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/cpioendanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/cpioendanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -46,6 +46,7 @@
while (s) {
idx.indexChild(cpio.entryInfo().filename, cpio.entryInfo().mtime,
s);
+ idx.finishIndexChild();
s = cpio.nextEntry();
}
if (cpio.status() == Error) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/flacendanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/flacendanalyzer.cpp
--- old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/flacendanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/flacendanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -83,7 +83,6 @@

fields["title"] = r.registerField(titlePropertyName);
albumField = r.registerField(NMM_DRAFT "musicAlbum");
- artistField =
r.registerField("http://www.semanticdesktop.org/ontologies/2007/03/22/nco#creator";);
fields["genre"] = r.registerField(NMM_DRAFT "genre");
codecField =
r.registerField("http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#codec";);
composerField = r.registerField(NMM_DRAFT "composer");
@@ -104,6 +103,8 @@
fields["copyright"] =
r.registerField("http://www.semanticdesktop.org/ontologies/2007/01/19/nie#copyright";);
fields["license"] =
r.registerField("http://www.semanticdesktop.org/ontologies/2007/01/19/nie#license";);

+ fields["discnumber"] = r.registerField(discNumberPropertyName);
+
typeField = r.typeField;
}

@@ -196,6 +197,11 @@
uint32_t nfields = readLittleEndianUInt32(p2);
string albumUri;

+ // in Vorbis comments the "artist" field is used for the performer in
modern music
+ // but for the composer in calssical music. Thus, we cache both and
make the decision
+ // at the end
+ string artist, performer;
+
// read all the comments
p2 += 4;
for (uint32_t i = 0; p2 < end && i < nfields; ++i) {
@@ -222,11 +228,7 @@
if (iter != factory->fields.end()) {
indexable.addValue(iter->second, value);
} else if(name=="artist") {
- const string artistUri( indexable.newAnonymousUri() );
-
- indexable.addValue(factory->artistField, artistUri);
- indexable.addTriplet(artistUri, typePropertyName,
contactClassName);
- indexable.addTriplet(artistUri, fullnamePropertyName,
value);
+ artist = value;
} else if(name=="lyrics") {
indexable.addText(value.c_str(),
(int32_t)value.length());
@@ -245,8 +247,6 @@
addStatement(indexable, albumUri,
albumGainPropertyName, value);
} else if(name=="replaygain_album_peak") {
addStatement(indexable, albumUri,
albumPeakGainPropertyName, value);
- } else if(name=="discno") {
- addStatement(indexable, albumUri,
discNumberPropertyName, value);
} else if(name=="composer") {
const string composerUri( indexable.newAnonymousUri() );

@@ -260,11 +260,7 @@
indexable.addTriplet(publisherUri, typePropertyName,
contactClassName);
indexable.addTriplet(publisherUri,
fullnamePropertyName, value);
} else if(name=="performer") {
- const string performerUri( indexable.newAnonymousUri()
);
-
- indexable.addValue(factory->performerField,
performerUri);
- indexable.addTriplet(performerUri, typePropertyName,
contactClassName);
- indexable.addTriplet(performerUri,
fullnamePropertyName, value);
+ performer = value;
}
}
} else {
@@ -273,7 +269,37 @@
}
p2 += size;
}
-
+
+ // we now decide how to store the artist and performer as suggested by
the Vorbis comments spec
+ const Strigi::RegisteredField* artistField = 0;
+ const Strigi::RegisteredField* performerField = 0;
+ if (!artist.empty()) {
+ if (!performer.empty()) {
+ artistField = factory->composerField;
+ performerField = factory->performerField;
+ }
+ else {
+ artistField = factory->performerField;
+ }
+ }
+ else if (!performer.empty()) {
+ performerField = factory->performerField;
+ }
+ if (artistField) {
+ const string artistUri( indexable.newAnonymousUri() );
+
+ indexable.addValue(artistField, artistUri);
+ indexable.addTriplet(artistUri, typePropertyName,
contactClassName);
+ indexable.addTriplet(artistUri, fullnamePropertyName, artist);
+ }
+ if (performerField) {
+ const string performerUri( indexable.newAnonymousUri() );
+
+ indexable.addValue(performerField, performerUri);
+ indexable.addTriplet(performerUri, typePropertyName,
contactClassName);
+ indexable.addTriplet(performerUri, fullnamePropertyName,
performer);
+ }
+
if(!albumUri.empty()) {
indexable.addValue(factory->albumField, albumUri);
indexable.addTriplet(albumUri, typePropertyName, albumClassName);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/gzipendanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/gzipendanalyzer.cpp
--- old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/gzipendanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/gzipendanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -64,6 +64,8 @@
if (len > 3 && file.substr(len-3) == ".gz") {
file = file.substr(0, len-3);
}
- return idx.indexChild(file, idx.mTime(), &stream);
+ signed char r = idx.indexChild(file, idx.mTime(), &stream);
+ idx.finishIndexChild();
+ return r;
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/id3endanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/id3endanalyzer.cpp
--- old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/id3endanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/id3endanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -56,7 +56,7 @@
discNumberPropertyName(
NMM_DRAFT "setNumber"),
discCountPropertyName(
- NMM_DRAFT "setCount"),
+ NMM_DRAFT "setSize"),

musicClassName(
NMM_DRAFT "MusicPiece"),
@@ -290,7 +290,6 @@
titleField = r.registerField(titlePropertyName);
descriptionField = r.registerField(NIE "description");
commentField = r.registerField(NIE "comment");
- artistField = r.registerField(NCO "creator");
albumField = r.registerField(NMM_DRAFT "musicAlbum");
genreField = r.registerField(NMM_DRAFT "genre");
composerField = r.registerField(NMM_DRAFT "composer");
@@ -300,6 +299,7 @@
languageField = r.registerField(NIE "language");
copyrightField = r.registerField(NIE "copyright");
trackNumberField = r.registerField(NMM_DRAFT "trackNumber");
+ discNumberField = r.registerField(discNumberPropertyName);
durationField = r.registerField(NFO "duration");
typeField = r.typeField;

@@ -336,15 +336,18 @@
bool
ID3EndAnalyzer::checkHeader(const char* header, int32_t headersize) const {
const unsigned char* usbuf = (const unsigned char*)header;
- return (headersize>=6)
+ int32_t i;
+
+ for(i=0; (header[i] == '\0') && (i<headersize); i++);
+ return (headersize>=6+i)
&& (
- (strncmp("ID3", header, 3) == 0 // check that it's ID3
- && usbuf[3] <= 4 // only handle version
<= 4
- && header[5] == 0) // we're too dumb too handle flags
+ (strncmp("ID3", header+i, 3) == 0 // check that it's ID3
+ && usbuf[3+i] <= 4 // only handle
version <= 4
+ && (usbuf[5+i]&~0x80) == 0) // we're too dumb too handle other
flags
||
- ((unsigned char)header[0] == 0xff && ((unsigned
char)header[1]&0xfe) == 0xfa
- && (unsigned char)header[2]>>4 != 0xf // MP3 frame header is
ok too
- && (((unsigned char)header[2]>>2)&3) != 3)
+ ((unsigned char)header[0+i] == 0xff && ((unsigned
char)header[1+i]&0xfe) == 0xfa
+ && (unsigned char)header[2+i]>>4 != 0xf // MP3 frame header is
ok too
+ && (((unsigned char)header[2+i]>>2)&3) != 3)
);

}
@@ -371,6 +374,7 @@

signed char
ID3EndAnalyzer::analyze(Strigi::AnalysisResult& indexable,
Strigi::InputStream* in) {
+ const int max_padding = 1000;
if(!in)
return -1;

@@ -383,19 +387,20 @@

// read 10 byte header
const char* buf;
- int32_t nread = in->read(buf, 10, 10);
+ int32_t nread = in->read(buf, 10+max_padding, 10+max_padding);

// parse ID3v2* tag

- if (nread == 10 && strncmp("ID3", buf, 3) == 0) { // check for ID3 header
+ if (nread == 10+max_padding && strncmp("ID3", buf, 3) == 0) { // check for
ID3 header

bool async = buf[3] >= 4;
+ bool unsync = (buf[5] & 0x80)!=0;

// calculate size from 4 syncsafe bytes
int32_t size = readAsyncSize((unsigned char*)buf+6);
- if (size < 0 || size > 300000)
+ if (size < 0 || size > 5000000)
return -1;
- size += 10+4; // add the size of the ID3 header and MP3 frame header
+ size += 10+4+max_padding; // add the size of the ID3 header, MP3 frame
header and possible padding generated by LAME(workaround)

// read the entire tag
in->reset(0);
@@ -406,7 +411,7 @@
found_tag = true;

const char* p = buf + 10;
- buf += size-4;
+ buf += size-4-max_padding;
while (p < buf && *p) {
size = readSize((unsigned char*)p+4, async);
if (size <= 0 || size > (buf-p)-10) {
@@ -418,18 +423,32 @@
uint8_t enc = p[10];
const char *encoding = enc>4 ? encodings[0] : encodings[enc] ;
UTF8Convertor conv(encoding);
+ const char *decoded_value;
+ int32_t decoded_value_size;
+ string deunsyncbuf;
+ if (unsync) {
+ deunsyncbuf.reserve(size-1);
+ for(int32_t i = 0; i<size-1; i++)
+ if ( (i==0) || (p[11+i]!=0) || (p[10+i]!=0xff) )
+ deunsyncbuf.push_back(p[11+i]);
+ decoded_value = deunsyncbuf.c_str();
+ decoded_value_size = deunsyncbuf.length();
+ } else {
+ decoded_value = p+11;
+ decoded_value_size = size-1;
+ };

if (strncmp("APIC", p, 4) == 0) {
- size_t mimelen = strnlen(p+11, size-1);
- if ((int32_t)mimelen < size-1-3) {
- const char *desc = p+11+mimelen+1+1;
+ size_t mimelen = strnlen(decoded_value, decoded_value_size);
+ if ((int32_t)mimelen < decoded_value_size-3) {
+ const char *desc = decoded_value+mimelen+1+1;
// uint8_t pictype = p[11+mimelen+1];
- size_t desclen = strnlen(desc,size-1-mimelen-2-1);
+ size_t desclen =
strnlen(desc,decoded_value_size-mimelen-2-1);
const char *content = desc + desclen + 1 + (enc == 0 || enc
== 3 ? 0:1) ;

- if(content<p+10+size) {
+ if(content<decoded_value+decoded_value_size) {
StringInputStream picstream(content,
- (uint32_t)(p+10+size-content),
false);
+
(uint32_t)(decoded_value+decoded_value_size-content), false);
string picname;
picname = (char)('0'+albumArtNum++);
indexable.indexChild(picname, indexable.mTime(),
&picstream);
@@ -448,9 +467,9 @@
}

if (enc == 0 || enc == 3) {
- value = string(p+11, strnlen(p+11, size-1));
+ value = string(decoded_value, strnlen(decoded_value,
decoded_value_size));
} else {
- value = conv.convert(p+11,size-1); // FIXME: add similar
workaround
+ value = conv.convert(decoded_value, decoded_value_size); //
FIXME: add similar workaround
}

if (!value.empty()) {
@@ -493,8 +512,13 @@
addStatement(indexable, albumUri, titlePropertyName, value);
found_album = true;
} else if (strncmp("TCON", p, 4) == 0) {
- indexable.addValue(factory->genreField, value);
- found_genre = true;
+ // The Genre is stored as (number)
+ if( value[0] == '(' && value[value.length()-1] == ')' ) {
+ //vHanda: Maybe one should check if all the characters in
between are digits
+ int genreIndex = atoi( value.substr( 1, value.length()-1
).c_str() );
+ indexable.addValue(factory->genreField, genres[ genreIndex ]);
+ found_genre = true;
+ }
} else if (strncmp("TLEN", p, 4) == 0) {
indexable.addValue(factory->durationField, value);
} else if (strncmp("TEXT", p, 4) == 0) {
@@ -530,9 +554,7 @@
int dnum;
ins >> dnum;
if (!ins.fail()) {
- ostringstream out;
- out << dnum;
- addStatement(indexable, albumUri,
discNumberPropertyName, out.str());
+ indexable.addValue(factory->discNumberField, dnum);
ins.ignore(10,'/');
int dcount;
ins >> dcount;
@@ -550,9 +572,11 @@
// parse MP3 frame header

int bitrateindex, samplerateindex;
- if (((unsigned char)buf[0] == 0xff) && (((unsigned char)buf[1]&0xfe) ==
0xfa)
- && ((bitrateindex = ((unsigned char)buf[2]>>4)) != 0xf)
- && ((samplerateindex = (((unsigned char)buf[2]>>2)&3)) != 3 )) { // is
this MP3?
+ int i;
+ for(i=0; (buf[i]=='\0') && (i<max_padding) ; i++);
+ if (((unsigned char)buf[0+i] == 0xff) && (((unsigned char)buf[1+i]&0xfe)
== 0xfa)
+ && ((bitrateindex = ((unsigned char)buf[2+i]>>4)) != 0xf)
+ && ((samplerateindex = (((unsigned char)buf[2+i]>>2)&3)) != 3 )) { // is
this MP3?

indexable.addValue(factory->typeField, audioClassName);
// FIXME: no support for VBR :(
@@ -562,7 +586,7 @@
indexable.addValue(factory->bitrateField, bitrate[bitrateindex]);
indexable.addValue(factory->samplerateField,
samplerate[samplerateindex]);
indexable.addValue(factory->codecField, "MP3");
- indexable.addValue(factory->channelsField, ((buf[3]>>6) == 3 ? 1:2 ) );
+ indexable.addValue(factory->channelsField, ((buf[3+i]>>6) == 3 ? 1:2 )
);
}

// Parse ID3v1 tag
@@ -583,8 +607,12 @@
if (!found_title && extract_and_trim(buf, 3, 30, s)) {
indexable.addValue(factory->titleField, s);
}
- if (!found_artist && extract_and_trim(buf, 33, 30, s))
- indexable.addValue(factory->artistField, s);
+ if (!found_artist && extract_and_trim(buf, 33, 30, s)) {
+ const string performerUri = indexable.newAnonymousUri();
+ indexable.addValue(factory->performerField, performerUri);
+ indexable.addTriplet(performerUri, typePropertyName,
contactClassName);
+ indexable.addTriplet(performerUri, fullnamePropertyName, s);
+ }
if (!found_album && extract_and_trim(buf, 63, 30, s))
addStatement(indexable, albumUri, titlePropertyName, s);
if (!found_year && extract_and_trim(buf, 93, 4, s))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/id3endanalyzer.h
new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/id3endanalyzer.h
--- old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/id3endanalyzer.h
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/id3endanalyzer.h
2011-12-07 21:28:33.000000000 +0100
@@ -55,6 +55,7 @@
const Strigi::RegisteredField* genreField;
const Strigi::RegisteredField* copyrightField;
const Strigi::RegisteredField* trackNumberField;
+ const Strigi::RegisteredField* discNumberField;
const Strigi::RegisteredField* durationField;
const Strigi::RegisteredField* typeField;
const Strigi::RegisteredField* bitrateField;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/lzmaendanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/lzmaendanalyzer.cpp
--- old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/lzmaendanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/lzmaendanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -64,6 +64,8 @@
if (len > 5 && name.substr(len-5)==".lzma") {
name = name.substr(0, len-5);
}
- return idx.indexChild(name, idx.mTime(), &stream);
+ signed char r = idx.indexChild(name, idx.mTime(), &stream);
+ idx.finishIndexChild();
+ return r;
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/odfendanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/odfendanalyzer.cpp
--- old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/odfendanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/odfendanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -97,6 +97,7 @@
contentHelper.analyze(idx,s);
} else if (zip.entryInfo().filename.substr(0,9) == "Pictures/") {
idx.indexChild(zip.entryInfo().filename, zip.entryInfo().mtime, s);
+ idx.finishIndexChild();
}
s = zip.nextEntry();
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/oleendanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/oleendanalyzer.cpp
--- old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/oleendanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/oleendanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -247,6 +247,7 @@
}
SubInputStream thumb(in, in->size()-12);
ar.indexChild(name, 0, &thumb);
+ ar.finishIndexChild();
return true;
}
/**
@@ -264,6 +265,7 @@
SubInputStream sub(in, size);
s << "Pictures/" << pos++;
ar.indexChild(s.str(), 0, &sub);
+ ar.finishIndexChild();
const char* dummy;
while (sub.read(dummy, 1, 0) > 0) {
// skip to the end
@@ -398,6 +400,7 @@
// word1Table.assign(getStreamString(s));
} else {
ar.indexChild(name, ole.entryInfo().mtime, s);
+ ar.finishIndexChild();
}
}
s = ole.nextEntry();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/pdfendanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/pdfendanalyzer.cpp
--- old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/pdfendanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/pdfendanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -43,6 +43,7 @@
ostringstream str;
str << n++;
char r = analysisresult->indexChild(str.str(), analysisresult->mTime(), s);
+ analysisresult->finishIndexChild();
// how do we set the error message in this case?
return (r) ?Error :Ok;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/rpmendanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/rpmendanalyzer.cpp
--- old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/rpmendanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/rpmendanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -74,6 +74,7 @@
}
idx.indexChild(rpm.entryInfo().filename, rpm.entryInfo().mtime,
s);
+ idx.finishIndexChild();
s = rpm.nextEntry();
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/sdfendanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/sdfendanalyzer.cpp
--- old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/sdfendanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/sdfendanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -57,7 +57,8 @@
moleculeCount++;
std::string file = sdf.entryInfo().filename;
idx.indexChild(file, idx.mTime(), s);
-
+ idx.finishIndexChild();
+
s = sdf.nextEntry();
}
if (moleculeCount)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/tarendanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/tarendanalyzer.cpp
--- old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/tarendanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/tarendanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -61,6 +61,7 @@
return 0;
}
idx.indexChild(tar.entryInfo().filename, tar.entryInfo().mtime, s);
+ idx.finishIndexChild();

s = tar.nextEntry();
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/zipendanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/zipendanalyzer.cpp
--- old/strigi-0.7.6/libstreamanalyzer/lib/endanalyzers/zipendanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/lib/endanalyzers/zipendanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -60,6 +60,7 @@
return 0;
}
idx.indexChild(zip.entryInfo().filename, zip.entryInfo().mtime, s);
+ idx.finishIndexChild();
s = zip.nextEntry();
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/lib/fieldpropertiesdb.cpp
new/strigi-0.7.7/libstreamanalyzer/lib/fieldpropertiesdb.cpp
--- old/strigi-0.7.6/libstreamanalyzer/lib/fieldpropertiesdb.cpp
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/lib/fieldpropertiesdb.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -63,7 +63,7 @@
void loadProperties(const string& dir);
void parseProperties(FILE* f);
void storeProperties(FieldProperties::Private& props);
- void warnIfLocale(const char* name, const string& locale);
+ void warnIfLocale(const char* name, size_t len, const string& locale);

// SAX Callbacks and stuff
map<string, FieldProperties::Private> pProperties;
@@ -492,31 +492,33 @@
size_t namelen, const char* value, size_t valuelen) {
bool boolValue;
//Trim leading and trailing whitespace
- size_t trimmedvallen = valuelen - strspn(value, " \t\n");
- string val(value + valuelen - trimmedvallen, trimmedvallen);
- val.erase(val.find_last_not_of(" \t\n") + 1);
-
+ size_t numspaces = strspn(value, " \t\n\r");
+ value += numspaces;
+ valuelen -= numspaces;
+ while (valuelen > 0 && strchr(" \t\n\r", value[valuelen-1])) {
+ valuelen--;
+ }
if (currentDefinition == defProperty) {
if (compare(name, namelen, "about")) {
- warnIfLocale(val.c_str(), currentElementLang);
+ warnIfLocale(value, valuelen, currentElementLang);
if (currentField.uri.size()) {
// FIXME: use logging framework
// cerr << "Uri is already defined for " << currentField.uri <<
"."
// << endl;
} else {
- currentField.uri.assign(val);
+ currentField.uri.assign(value, valuelen);
}
} else if (compare(name, namelen, "alias")) {
- warnIfLocale(val.c_str(), currentElementLang);
+ warnIfLocale(value, valuelen, currentElementLang);
if (currentField.alias.size()) {
// FIXME: use logging framework
// cerr << "alias is already defined for " << currentField.uri
<< "."
// << endl;
} else {
- currentField.alias.assign(val);
+ currentField.alias.assign(value, valuelen);
}
} else if (compare(name, namelen, "range")) {
- warnIfLocale(currentField.uri.c_str(), currentElementLang);
+ warnIfLocale(currentField.uri.c_str(), currentField.uri.size(),
currentElementLang);
if (currentField.typeuri.size()) {
// FIXME: use logging framework
// cerr << "range is already defined for " << currentField.uri
@@ -534,7 +536,7 @@
// << "] is already defined for " << currentField.uri
// << "." << endl;
} else {
- l.name.assign(val);
+ l.name.assign(value, valuelen);
currentField.localized[currentElementLang] = l;
}
} else if (currentField.name.size()) {
@@ -542,7 +544,7 @@
// cerr << "label is already defined for " << currentField.uri
// << "." << endl;
} else {
- currentField.name.assign(val);
+ currentField.name.assign(value, valuelen);
}
} else if (compare(name, namelen, "comment")) {
if (currentElementLang.size()) {
@@ -554,7 +556,7 @@
// << "] is already defined for " << currentField.uri
// << "." << endl;
} else {
- l.description.assign(val);
+ l.description.assign(value, valuelen);
currentField.localized[currentElementLang] = l;
}
} else if (currentField.description.size()) {
@@ -562,7 +564,7 @@
// cerr << "comment is already defined for " << currentField.uri
// << "." << endl;
} else {
- currentField.description.assign(val);
+ currentField.description.assign(value, valuelen);
}
} else if (compare(name, namelen, "subPropertyOf")) {
currentField.parentUris.push_back(currentElementResource);
@@ -600,14 +602,14 @@
}
} else if (currentDefinition == defClass) {
if (compare(name, namelen, "about")) {
- warnIfLocale(val.c_str(), currentElementLang);
+ warnIfLocale(value, valuelen, currentElementLang);
if (currentClass.uri.size()) {
// FIXME: use logging framework
// cerr << "Uri is already defined for " << currentClass.uri
// << "." << endl;
}
} else {
- currentClass.uri.assign(val);
+ currentClass.uri.assign(value, valuelen);
}
} else if (compare(name, namelen, "label")) {
if (currentElementLang.size()) {
@@ -619,7 +621,7 @@
// << "] is already defined for " << currentClass.uri
// << "." << endl;
} else {
- l.name.assign(val);
+ l.name.assign(value, valuelen);
currentClass.localized[currentElementLang] = l;
}
} else if (currentClass.name.size()) {
@@ -627,7 +629,7 @@
// cerr << "label is already defined for " << currentClass.uri
// << "." << endl;
} else {
- currentClass.name.assign(val);
+ currentClass.name.assign(value, valuelen);
}
} else if (compare(name, namelen, "comment")) {
if (currentElementLang.size()) {
@@ -639,7 +641,7 @@
// << "] is already defined for " << currentClass.uri
// << "." << endl;
} else {
- l.description.assign(val);
+ l.description.assign(value, valuelen);
currentClass.localized[currentElementLang] = l;
}
} else if (currentField.description.size()) {
@@ -647,7 +649,7 @@
// cerr << "comment is already defined for " << currentClass.uri
// << "." << endl;
} else {
- currentClass.description.assign(val);
+ currentClass.description.assign(value, valuelen);
}
} else if(compare(name, namelen, "subClassOf")) {
currentClass.parentUris.push_back(currentElementResource);
@@ -755,7 +757,7 @@
}

void
-FieldPropertiesDb::Private::warnIfLocale(const char* name, const string&
locale) {
+FieldPropertiesDb::Private::warnIfLocale(const char* name, size_t len, const
string& locale) {
if (locale.size()) {
// FIXME: use logging framework
// cerr << "Warning: you cannot define a locale for the resource URI "
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strigi-0.7.6/libstreamanalyzer/lib/pdf/pdfparser.cpp
new/strigi-0.7.7/libstreamanalyzer/lib/pdf/pdfparser.cpp
--- old/strigi-0.7.6/libstreamanalyzer/lib/pdf/pdfparser.cpp 2011-07-26
19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/lib/pdf/pdfparser.cpp 2011-12-07
21:28:33.000000000 +0100
@@ -18,7 +18,6 @@
* Boston, MA 02110-1301, USA.
*/
#include "pdfparser.h"
-#include <strigi/stringterminatedsubstream.h>
#include <strigi/gzipinputstream.h>
#include <strigi/subinputstream.h>
#include <ctype.h>
@@ -35,12 +34,13 @@
PdfParser::read(int32_t min, int32_t max) {
int32_t off = (int32_t)(pos-start);
int32_t d = (int32_t)(stream->position() - bufferStart);
- bufferStart += off;
+ min += d;
+ if (max > 0) max += d;
stream->reset(bufferStart);
int32_t n = stream->read(start, min, max);
// printf("objstart %i %i\n", d, n);
if (n < min) return stream->status();
- pos = start;
+ pos = start + off;
end = start + n;
return Ok;
}
@@ -283,10 +283,9 @@
m_error.assign(stream->error());
return r;
}
-
- if (r == Eof)
- return r;
-
+ if (r == Eof) {
+ return r;
+ }
const char *s = start + p;
lastOperator.assign(s, pos-s);
if (lastOperator == "TJ" || lastOperator == "Tj") {
@@ -361,25 +360,20 @@
if (*pos == '\r') pos++;
if (*pos != '\n') return Error;
pos++;
-
+ if (length == -1) {
+ // the field Length is required
+ return Error;
+ }
// read stream until 'endstream'
int64_t p = bufferStart + pos-start;
if (p != stream->reset(p)) return Error;
// fprintf(stderr, "filter: %s\n", filter.c_str());
// fprintf(stderr, "type: %s %i\n", type.c_str(), streamcount);
// printf("position: %lli length %i\n", p, length);
- if (length == -1) {
- StringTerminatedSubStream sub(stream, "endstream");
- if (handleSubStream(&sub, type, offset, numberofobjects, hasfilter,
- filter) != Eof) {
- return Error;
- }
- } else {
- SubInputStream sub(stream, length);
- if (handleSubStream(&sub, type, offset, numberofobjects, hasfilter,
- filter) != Eof) {
- return Error;
- }
+ SubInputStream sub(stream, length);
+ if (handleSubStream(&sub, type, offset, numberofobjects, hasfilter,
+ filter) != Eof) {
+ return Error;
}
// After reading the substream the pointers to the buffer are invalid.
// Reset the buffer to the current stream position
@@ -390,7 +384,6 @@
if (skipWhitespaceOrComment() != Ok) return Error;
// printf("hi %i %.*s\n", pos-start, 10, pos);
if (skipKeyword("endstream", 9) != Ok) return Error;
-// printf("endstream\n");
streamcount++;
}
// printf("endDictionary %p\n", this);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/lib/throughanalyzers/oggthroughanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/lib/throughanalyzers/oggthroughanalyzer.cpp
---
old/strigi-0.7.6/libstreamanalyzer/lib/throughanalyzers/oggthroughanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++
new/strigi-0.7.7/libstreamanalyzer/lib/throughanalyzers/oggthroughanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -49,7 +49,6 @@
OggThroughAnalyzerFactory::registerFields(FieldRegister& r) {
fields["title"] = r.registerField(titlePropertyName);
albumField = r.registerField(NMM_DRAFT "musicAlbum");
- artistField =
r.registerField("http://www.semanticdesktop.org/ontologies/2007/03/22/nco#creator";);
fields["genre"] = r.registerField(NMM_DRAFT "genre");
fields["codec"] =
r.registerField("http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#codec";);
composerField = r.registerField(NMM_DRAFT "composer");
@@ -125,6 +124,12 @@
return in;
}
uint32_t nfields = readLittleEndianUInt32(p2);
+
+ // in Vorbis comments the "artist" field is used for the performer in
modern music
+ // but for the composer in calssical music. Thus, we cache both and make
the decision
+ // at the end
+ string artist, performer;
+
// read all the comments
p2 += 4;
for (uint32_t i = 0; p2 < end && i < nfields; ++i) {
@@ -148,12 +153,8 @@
if (iter != factory->fields.end()) {
indexable->addValue(iter->second, value);
} else if(name=="artist") {
- string artistUri = indexable->newAnonymousUri();
-
- indexable->addValue(factory->artistField, artistUri);
- indexable->addTriplet(artistUri, typePropertyName,
contactClassName);
- indexable->addTriplet(artistUri, fullnamePropertyName,
value);
- } else if(name=="album") {
+ artist = value;
+ } else if(name=="album") {
string albumUri = indexable->newAnonymousUri();

indexable->addValue(factory->albumField, albumUri);
@@ -166,11 +167,7 @@
indexable->addTriplet(composerUri, typePropertyName,
contactClassName);
indexable->addTriplet(composerUri, fullnamePropertyName,
value);
} else if(name=="performer") {
- string performerUri = indexable->newAnonymousUri();
-
- indexable->addValue(factory->performerField, performerUri);
- indexable->addTriplet(performerUri, typePropertyName,
contactClassName);
- indexable->addTriplet(performerUri, fullnamePropertyName,
value);
+ performer = value;
}
}
} else {
@@ -179,6 +176,37 @@
}
p2 += size;
}
+
+ // we now decide how to store the artist and performer as suggested by the
Vorbis comments spec
+ const Strigi::RegisteredField* artistField = 0;
+ const Strigi::RegisteredField* performerField = 0;
+ if (!artist.empty()) {
+ if (!performer.empty()) {
+ artistField = factory->composerField;
+ performerField = factory->performerField;
+ }
+ else {
+ artistField = factory->performerField;
+ }
+ }
+ else if (!performer.empty()) {
+ performerField = factory->performerField;
+ }
+ if (artistField) {
+ const string artistUri( indexable->newAnonymousUri() );
+
+ indexable->addValue(artistField, artistUri);
+ indexable->addTriplet(artistUri, typePropertyName, contactClassName);
+ indexable->addTriplet(artistUri, fullnamePropertyName, artist);
+ }
+ if (performerField) {
+ const string performerUri( indexable->newAnonymousUri() );
+
+ indexable->addValue(performerField, performerUri);
+ indexable->addTriplet(performerUri, typePropertyName,
contactClassName);
+ indexable->addTriplet(performerUri, fullnamePropertyName, performer);
+ }
+
// set the "codec" value
indexable->addValue(factory->fields.find("codec")->second, "Ogg/Vorbis");
indexable->addValue(factory->fields.find("type")->second, musicClassName);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/plugins/endplugins/ffmpegendanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/plugins/endplugins/ffmpegendanalyzer.cpp
--- old/strigi-0.7.6/libstreamanalyzer/plugins/endplugins/ffmpegendanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/plugins/endplugins/ffmpegendanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -156,7 +156,7 @@
copyrightPropertyName =
NIE "copyright",
albumPropertyName =
- NMM_DRAFT "MusicAlbum",
+ NMM_DRAFT "musicAlbum",

sampleratePropertyName =
NFO "sampleRate",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/plugins/eventplugins/riffeventanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/plugins/eventplugins/riffeventanalyzer.cpp
---
old/strigi-0.7.6/libstreamanalyzer/plugins/eventplugins/riffeventanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++
new/strigi-0.7.7/libstreamanalyzer/plugins/eventplugins/riffeventanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -25,6 +25,11 @@
#include <strigi/analyzerplugin.h>
#include <stack>
#include <iostream>
+#include "rdfnamespaces.h"
+
+const std::string
+ videoClassName( NFO "Video"),
+ audioClassName( NFO "Audio");

namespace Strigi {
class RegisteredField;
@@ -83,6 +88,7 @@
const char* name() const {
return "RiffEventAnalyzer";
}
+ const Strigi::RegisteredField* typeField;
const Strigi::RegisteredField* lengthField;
const Strigi::RegisteredField* resolutionHeightField;
const Strigi::RegisteredField* resolutionWidthField;
@@ -154,6 +160,12 @@
inAudioStream = true;
}

+ // Add the correct type
+ if( inAudioStream )
+ analysisresult->addValue(factory->typeField, audioClassName);
+ else
+ analysisresult->addValue(factory->typeField, videoClassName);
+
return true;
}
const char*
@@ -211,7 +223,7 @@
a->addValue(f->sampleRateField, readLittleEndianUInt32(c+4));
bytes_per_second = readLittleEndianUInt32(c+8);
a->addValue(f->sampleSizeField, readLittleEndianUInt16(c+14));
-
+ a->addValue(factory->typeField, audioClassName);
return true;
}
void
@@ -374,24 +386,25 @@
}
void
RiffEventAnalyzerFactory::registerFields(Strigi::FieldRegister& reg) {
+ typeField = reg.typeField;
sampleSizeField = reg.registerField(
- "http://www.semanticdesktop.org/ontologies/nfo#bitsPerSample";);
+ NFO"bitsPerSample");
sampleRateField = reg.registerField(
- "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#sampleRate";);
+ NFO"sampleRate");
channelsField = reg.registerField(
- "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#channels";);
+ NFO"channels");
lengthField = reg.registerField(
- "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#duration";);
+ NFO"duration");
resolutionHeightField = reg.registerField(
- "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#height";);
+ NFO"height");
resolutionWidthField = reg.registerField(
- "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#width";);
+ NFO"width");
frameRateField = reg.registerField(
- "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#frameRate";);
+ NFO"frameRate");
videoCodecField = reg.registerField(
- "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#codec";);
+ NFO"codec");
audioCodecField = reg.registerField(
- "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#codec";);
+ NFO"codec");

addField(sampleSizeField);
addField(sampleRateField);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/plugins/lineplugins/cpplineanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/plugins/lineplugins/cpplineanalyzer.cpp
--- old/strigi-0.7.6/libstreamanalyzer/plugins/lineplugins/cpplineanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++ new/strigi-0.7.7/libstreamanalyzer/plugins/lineplugins/cpplineanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -95,13 +95,17 @@
size_t pos2 = include1.find("<",0);
size_t pos3 = include1.find(">",0);
if((pos2 != string::npos) && (pos3 != string::npos)){
- analysisResult->addValue(factory->includeField,
include1.substr(1+pos2,((pos3-1)-pos2)));
+ // We cannot use nie:depends here since it has a range of
nie:DataObject and the includes cannot be represented as data objects
+ // includes will only be resolved at compile time.
+ //analysisResult->addValue(factory->includeField,
include1.substr(1+pos2,((pos3-1)-pos2)));
includes++;
}
size_t pos4 = include1.find("\"",0);
size_t pos5 = include1.find("\"", pos4+1);
if((pos4 != string::npos) && (pos5 != string::npos)){
- analysisResult->addValue(factory->includeField,
include1.substr(1+pos4,((pos5-1)-pos4)));
+ // FIXME: we need a useful new property or new DataObject type
to describe a C header
+ // which does not have an absolute path.
+ //analysisResult->addValue(factory->includeField,
include1.substr(1+pos4,((pos5-1)-pos4)));
includes++;
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/plugins/throughplugins/authroughanalyzer.cpp
new/strigi-0.7.7/libstreamanalyzer/plugins/throughplugins/authroughanalyzer.cpp
---
old/strigi-0.7.6/libstreamanalyzer/plugins/throughplugins/authroughanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++
new/strigi-0.7.7/libstreamanalyzer/plugins/throughplugins/authroughanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -23,7 +23,7 @@
#include <strigi/analysisresult.h>
#include <strigi/fieldtypes.h>
#include <strigi/textutils.h>
-#include "../../lib/rdfnamespaces.h"
+#include "rdfnamespaces.h"

using namespace std;
using namespace Strigi;
@@ -35,13 +35,13 @@
void
AuThroughAnalyzerFactory::registerFields(FieldRegister& reg) {
lengthField = reg.registerField(
- "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#duration";);
+ NFO"duration");
sampleRateField = reg.registerField(
- "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#sampleRate";);
+ NFO"sampleRate");
channelsField = reg.registerField(
- "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#channels";);
+ NFO"channels");
sampleBitDepthField = reg.registerField(
- "http://www.semanticdesktop.org/ontologies/nfo#bitsPerSample";);
+ NFO"bitsPerSample");
sampleDataTypeField = reg.registerField(
"http://freedesktop.org/standards/xesam/1.0/core#audioSampleDataType";);
typeField = reg.typeField;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/plugins/throughplugins/icothroughanalyzer.cpp

new/strigi-0.7.7/libstreamanalyzer/plugins/throughplugins/icothroughanalyzer.cpp
---
old/strigi-0.7.6/libstreamanalyzer/plugins/throughplugins/icothroughanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++
new/strigi-0.7.7/libstreamanalyzer/plugins/throughplugins/icothroughanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -44,12 +44,14 @@
"http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#colorDepth";);
colorCountField = reg.registerField(
"http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#colorCount";);
+ typeField = reg.typeField;

addField(widthField);
addField(heightField);
addField(numberField);
addField(bitsPerPixelField);
addField(colorCountField);
+ addField(typeField);
}

// Analyzer
@@ -144,6 +146,8 @@
//FIXME: either get rid of this or replace with NIE equivalent
//analysisResult->addValue( factory->numberField, ico_count );

+ analysisResult->addValue( factory->typeField,
"http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#RasterImage"; );
+
analysisResult->addValue( factory->widthField, icoe_width );
analysisResult->addValue( factory->heightField, icoe_height );

diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/plugins/throughplugins/icothroughanalyzer.h
new/strigi-0.7.7/libstreamanalyzer/plugins/throughplugins/icothroughanalyzer.h
---
old/strigi-0.7.6/libstreamanalyzer/plugins/throughplugins/icothroughanalyzer.h
2011-07-26 19:12:39.000000000 +0200
+++
new/strigi-0.7.7/libstreamanalyzer/plugins/throughplugins/icothroughanalyzer.h
2011-12-07 21:28:33.000000000 +0100
@@ -53,6 +53,7 @@
const Strigi::RegisteredField* heightField;
const Strigi::RegisteredField* bitsPerPixelField;
const Strigi::RegisteredField* colorCountField;
+ const Strigi::RegisteredField* typeField;

const char* name() const {
return "IcoThroughAnalyzer";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreamanalyzer/plugins/throughplugins/sidthroughanalyzer.cpp

new/strigi-0.7.7/libstreamanalyzer/plugins/throughplugins/sidthroughanalyzer.cpp
---
old/strigi-0.7.6/libstreamanalyzer/plugins/throughplugins/sidthroughanalyzer.cpp
2011-07-26 19:12:39.000000000 +0200
+++
new/strigi-0.7.7/libstreamanalyzer/plugins/throughplugins/sidthroughanalyzer.cpp
2011-12-07 21:28:33.000000000 +0100
@@ -24,6 +24,7 @@
#include <strigi/strigiconfig.h>
#include <strigi/analysisresult.h>
#include <strigi/fieldtypes.h>
+#include "rdfnamespaces.h"
#include <cstring>

#include <iostream>
@@ -36,15 +37,15 @@
void
SidThroughAnalyzerFactory::registerFields(FieldRegister& reg) {
titleField = reg.registerField(
- "http://www.semanticdesktop.org/ontologies/2007/01/19/nie#title";);
+ NIE"title");
artistField = reg.registerField(
- "http://www.semanticdesktop.org/ontologies/2007/03/22/nco#creator";);
+ NMM_DRAFT"performer");
trackNumberField = reg.registerField(
- "http://freedesktop.org/standards/xesam/1.0/core#albumTrackCount";);
+ NMM_DRAFT"albumTrackCount");
versionField = reg.registerField(
- "http://www.semanticdesktop.org/ontologies/2007/01/19/nie#version";);
+ NIE"version");
copyrightField = reg.registerField(
- "http://www.semanticdesktop.org/ontologies/2007/01/19/nie#copyright";);
+ NIE"copyright");

addField(titleField);
addField(artistField);
@@ -143,10 +144,10 @@

analysisResult->addValue(factory->artistField, artistUri);
analysisResult->addTriplet(artistUri,
-
"http://www.w3.org/1999/02/22-rdf-syntax-ns#type";,
-
"http://www.semanticdesktop.org/ontologies/2007/03/22/nco#Contact";);
+ RDF"type",
+ NCO"Contact");
analysisResult->addTriplet(artistUri,
-
"http://www.semanticdesktop.org/ontologies/2007/03/22/nco#fullname";,
+ NCO"fullname",
artist);

analysisResult->addValue( factory->titleField, title );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strigi-0.7.6/libstreams/CMakeLists.txt
new/strigi-0.7.7/libstreams/CMakeLists.txt
--- old/strigi-0.7.6/libstreams/CMakeLists.txt 2011-07-26 19:12:35.000000000
+0200
+++ new/strigi-0.7.7/libstreams/CMakeLists.txt 2011-12-07 21:25:23.000000000
+0100
@@ -14,7 +14,7 @@
# libstreams defines the definitions shared by the Strigi projects
set(STRIGI_VERSION_MAJOR 0 CACHE INT "Major Strigi version number" FORCE)
set(STRIGI_VERSION_MINOR 7 CACHE INT "Minor Strigi version number" FORCE)
-set(STRIGI_VERSION_PATCH 6 CACHE INT "Release Strigi version number" FORCE)
+set(STRIGI_VERSION_PATCH 7 CACHE INT "Release Strigi version number" FORCE)
set(STRIGI_VERSION_STRING
"${STRIGI_VERSION_MAJOR}.${STRIGI_VERSION_MINOR}.${STRIGI_VERSION_PATCH}" CACHE
STRING "Strigi version string" FORCE)
set(LIBSTREAMS_VERSION ${STRIGI_VERSION_STRING})

diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreams/include/strigi/streambuffer.h
new/strigi-0.7.7/libstreams/include/strigi/streambuffer.h
--- old/strigi-0.7.6/libstreams/include/strigi/streambuffer.h 2011-07-26
19:12:35.000000000 +0200
+++ new/strigi-0.7.7/libstreams/include/strigi/streambuffer.h 2011-12-07
21:25:23.000000000 +0100
@@ -171,6 +171,13 @@

// still not enough space, we have to allocate more
// printf("resize %i %i %i %i %i\n", avail, needed, space, size + needed -
space, size);
+ if (size > needed - space) {
+ // double the buffer size
+ space += size;
+ setSize(2 * size);
+ return space;
+ }
+ // just allocate what is needed
setSize(size + needed - space);
return needed;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strigi-0.7.6/libstreams/lib/CMakeLists.txt
new/strigi-0.7.7/libstreams/lib/CMakeLists.txt
--- old/strigi-0.7.6/libstreams/lib/CMakeLists.txt 2011-07-26
19:12:35.000000000 +0200
+++ new/strigi-0.7.7/libstreams/lib/CMakeLists.txt 2011-12-07
21:25:23.000000000 +0100
@@ -58,7 +58,7 @@
target_link_libraries(streams ${ZLIB_LIBRARIES} ${BZIP2_LIBRARIES}
${ICONV_LIBRARIES})
install(TARGETS streams EXPORT StreamsExport
LIBRARY DESTINATION ${LIB_DESTINATION}
- RUNTIME DESTINATION bin
+ RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
ARCHIVE DESTINATION ${LIB_DESTINATION}
)

diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strigi-0.7.6/libstreams/lib/dataeventinputstream.cpp
new/strigi-0.7.7/libstreams/lib/dataeventinputstream.cpp
--- old/strigi-0.7.6/libstreams/lib/dataeventinputstream.cpp 2011-07-26
19:12:35.000000000 +0200
+++ new/strigi-0.7.7/libstreams/lib/dataeventinputstream.cpp 2011-12-07
21:25:23.000000000 +0100
@@ -44,6 +44,11 @@
return -2;
}
if (nread > 0) {
+ // ignore bytes that might have been added since the file size was
+ // determined
+ if (m_size != -1 && m_position + nread > m_size) {
+ nread = m_size - m_position;
+ }
m_position += nread;
// value of -1 for totalread means data should not be reported anymore
if (totalread != -1 && totalread < m_position) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strigi-0.7.6/libstreams/lib/gzipinputstream.cpp
new/strigi-0.7.7/libstreams/lib/gzipinputstream.cpp
--- old/strigi-0.7.6/libstreams/lib/gzipinputstream.cpp 2011-07-26
19:12:35.000000000 +0200
+++ new/strigi-0.7.7/libstreams/lib/gzipinputstream.cpp 2011-12-07
21:25:23.000000000 +0100
@@ -43,7 +43,7 @@
}
bool
GZipInputStream::checkHeader(const char* data, int32_t datasize) {
- return datasize>2 && data[0]==0x1f && data[1] == 0x8b;
+ return datasize>2 && (unsigned char)data[0]==0x1f && (unsigned
char)data[1]==0x8b;
}

GZipInputStream::Private::Private(GZipInputStream* gi,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strigi-0.7.6/libstreams/lib/mailinputstream.cpp
new/strigi-0.7.7/libstreams/lib/mailinputstream.cpp
--- old/strigi-0.7.6/libstreams/lib/mailinputstream.cpp 2011-07-26
19:12:35.000000000 +0200
+++ new/strigi-0.7.7/libstreams/lib/mailinputstream.cpp 2011-12-07
21:25:23.000000000 +0100
@@ -355,7 +355,7 @@
// parse the header and store the imporant header fields
p->readHeader();
if (m_status != Ok) {
- fprintf(stderr, "no valid header\n");
+// fprintf(stderr, "no valid header\n");
return;
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strigi-0.7.6/libstreams/lib/oleinputstream.cpp
new/strigi-0.7.7/libstreams/lib/oleinputstream.cpp
--- old/strigi-0.7.6/libstreams/lib/oleinputstream.cpp 2011-07-26
19:12:35.000000000 +0200
+++ new/strigi-0.7.7/libstreams/lib/oleinputstream.cpp 2011-12-07
21:25:23.000000000 +0100
@@ -53,6 +53,7 @@
int32_t nextSmallBlock(int32_t);
const char* getCurrentSmallBlock();
InputStream* nextEntry();
+ bool readInt32(int32_t pos, int32_t& val);
};

namespace {
@@ -150,6 +151,16 @@
OleInputStream::OleInputStream(InputStream* input) :SubStreamProvider(input),
p(new Private(this, input)) {
}
+bool
+OleInputStream::Private::readInt32(int32_t offset, int32_t& val) {
+ if (offset < 0 || offset + 4 >= size) {
+ stream->m_status = Error;
+ stream->m_error = string("pointer out of range.");
+ return false;
+ }
+ val = readLittleEndianInt32(data + offset);
+ return true;
+}
OleInputStream::Private::Private(OleInputStream* s, InputStream* input)
:entrystream(new OleEntryStream(this)), stream(s) {
currentTableBlock = -1;
@@ -177,7 +188,8 @@
batIndex.reserve(nBat);
data += 76;
for (int i = 0; i < ::min(109, nBat); ++i) {
- int32_t p = readLittleEndianInt32(data+4*i);
+ int32_t p;
+ if (!readInt32(4*i, p)) { return; }
batIndex.push_back(p);
if (p > max) max = p;
}
@@ -205,10 +217,12 @@
xBatOffset = 512 + 512 * xBatOffset;
for (int j = 0; j < nXBat; ++j) {
for (int i = 0; i<127 && (int)batIndex.size() < nBat; ++i) {
- int32_t p = readLittleEndianInt32(data + 4*i + xBatOffset);
+ int32_t p;
+ if (!readInt32(4*i + xBatOffset, p)) { return; }
batIndex.push_back(p);
}
- xBatOffset = 512+512*readLittleEndianInt32(data + 508 + xBatOffset);
+ if (!readInt32(508 + xBatOffset, xBatOffset)) { return; }
+ xBatOffset = 512 + 512 * xBatOffset;
}

// print all bat blocks
@@ -239,12 +253,7 @@
sbatbIndex.reserve(sbatIndex.size()*16);
// read the info for the root entry
currentDataBlock = (1+ptOffset)*512 + 0x74;
- if (currentDataBlock + 4 > size) {
- stream->m_status = Error;
- stream->m_error = "Invalid header.";
- return;
- }
- currentDataBlock = readLittleEndianInt32(data + currentDataBlock);
+ if (!readInt32(currentDataBlock, currentDataBlock)) { return; }
while (currentDataBlock >= 0 && sbatbIndex.size() < 16000) {
sbatbIndex.push_back(currentDataBlock);
currentDataBlock = nextBlock(currentDataBlock);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/libstreams/lib/skippingfileinputstream.cpp
new/strigi-0.7.7/libstreams/lib/skippingfileinputstream.cpp
--- old/strigi-0.7.6/libstreams/lib/skippingfileinputstream.cpp 2011-07-26
19:12:35.000000000 +0200
+++ new/strigi-0.7.7/libstreams/lib/skippingfileinputstream.cpp 2011-12-07
21:25:23.000000000 +0100
@@ -90,9 +90,20 @@
m_status = Error;
return -2; // error
}
+ // take a decent buffersize that can hold the request
int32_t n = max(_min, _max);
+ if (_max <= 0) {
+ n = max(1024, max(buffersize, _min));
+ }
if (n > buffersize) {
+ if (_max <= 0) {
+ n = max(n, 2 * buffersize);
+ if (m_size != -1 && n > m_size - m_position) {
+ n = m_size - m_position + 1;
+ }
+ }
buffer = (char*)realloc(buffer, n);
+ buffersize = n;
}
int32_t nr = (int32_t)fread(buffer, 1, n, file);
m_position = ftell(file);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strigi-0.7.6/libstreams/lib/tarinputstream.cpp
new/strigi-0.7.7/libstreams/lib/tarinputstream.cpp
--- old/strigi-0.7.6/libstreams/lib/tarinputstream.cpp 2011-07-26
19:12:35.000000000 +0200
+++ new/strigi-0.7.7/libstreams/lib/tarinputstream.cpp 2011-12-07
21:25:23.000000000 +0100
@@ -50,10 +50,12 @@
}
const char*
TarInputStream::readHeader() {
- // read the first 500 characters
+ // read the first 512 characters
const char *begin;
int32_t nread = m_input->read(begin, 512, 512);
- if (nread != 512) {
+ if (nread == 0 || m_input->status() == Eof) {
+ m_status = Eof;
+ } else if (nread != 512) {
m_status = Error;
}
return begin;
@@ -68,11 +70,19 @@
// is ended by a \0, after this \0 only \0 is allowed
int p = 0;
while (p < 100 && h[p] != '\0') ++p;
+
while (p < 100) {
if (h[p++] != '\0') {
return false;
}
}
+ bool justZeroes = true;
+ while (p < 256 && justZeroes) {
+ justZeroes = h[p++] == 0;
+ }
+ if (justZeroes) {
+ return false;
+ }

// check for field values that should be '\0' for the header to be a
// tar header. Two positions are also accepted if they are ' ' because they
@@ -82,8 +92,38 @@
void
TarInputStream::parseHeader() {
const char *hb;
+
hb = readHeader();
- if (m_status) return;
+ if (m_status) {
+ m_status = Error;
+ m_error = "Premature end of file.";
+ return;
+ }
+ // a tar file should end with at least 2 blocks of '\0' bytes
+ bool justZeroes = true;
+ int i, numZeroBlocks = 0;
+ for (i = 0; i < 512 && justZeroes; ++i) {
+ justZeroes = hb[i] == 0;
+ }
+ while (justZeroes) {
+ numZeroBlocks++;
+ hb = readHeader();
+ if (numZeroBlocks == 1 && m_status == Eof) {
+ m_status = Error;
+ m_error = "Premature end of file.";
+ return;
+ } else if (m_status == Error || m_status == Eof) {
+ return;
+ }
+ for (i = 0; i < 512 && justZeroes; ++i) {
+ justZeroes = hb[i] == 0;
+ }
+ if (!justZeroes) {
+ m_status = Error;
+ m_error = "Invalid tar file.";
+ return;
+ }
+ }

// check for terminators ('\0') on the first couple of fields
if (!checkHeader(hb, 257)) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strigi-0.7.6/libstreams/lib/textutils.cpp
new/strigi-0.7.7/libstreams/lib/textutils.cpp
--- old/strigi-0.7.6/libstreams/lib/textutils.cpp 2011-07-26
19:12:35.000000000 +0200
+++ new/strigi-0.7.7/libstreams/lib/textutils.cpp 2011-12-07
21:25:23.000000000 +0100
@@ -43,7 +43,9 @@
val = (val << 6) + (c & 0x3F);
if (--nb == 0) {
// check the range of the utf 8 value
- if (val == 0xFFFE || val == 0xFFFF) { // Noncharacters
+ if (val == 0xFFFE || val == 0xFFFF // Noncharacters
+ // surrogate values not allowed in UTF-8
+ || (val >= 0xD800 && val <= 0xDFFF)) {
return false;
}
}
@@ -97,7 +99,9 @@
val = (val << 6) + (c & 0x3F);
if (--nb == 0) {
// check the range of the utf 8 value
- if (val == 0xFFFE || val == 0xFFFF) { // Noncharacters
+ if (val == 0xFFFE || val == 0xFFFF // Noncharacters
+ // surrogate values not allowed in UTF-8
+ || (val >= 0xD800 && val <= 0xDFFF)) {
// nb is 0 to signal an error
return p;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strigi-0.7.6/strigiclient/lib/CMakeLists.txt
new/strigi-0.7.7/strigiclient/lib/CMakeLists.txt
--- old/strigi-0.7.6/strigiclient/lib/CMakeLists.txt 2011-06-15
09:43:18.000000000 +0200
+++ new/strigi-0.7.7/strigiclient/lib/CMakeLists.txt 2011-10-01
09:58:17.000000000 +0200
@@ -1,4 +1,6 @@
if(NOT WIN32)
add_subdirectory(htmlgui)
endif(NOT WIN32)
-add_subdirectory(searchclient)
+if(QT4_FOUND)
+ add_subdirectory(searchclient)
+endif(QT4_FOUND)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strigi-0.7.6/strigiutils/bin/xmlindexer/CMakeLists.txt
new/strigi-0.7.7/strigiutils/bin/xmlindexer/CMakeLists.txt
--- old/strigi-0.7.6/strigiutils/bin/xmlindexer/CMakeLists.txt 2011-04-23
13:00:17.000000000 +0200
+++ new/strigi-0.7.7/strigiutils/bin/xmlindexer/CMakeLists.txt 2011-08-16
14:23:16.000000000 +0200
@@ -1,11 +1,11 @@
-add_library(librdfindexer
+add_library(librdfindexer STATIC
rdfindexer.cpp
tagmapping.cpp
rdfindexwriter.cpp
)
target_link_libraries(librdfindexer ${LIBSTREAMANALYZER_LIBRARIES}
${LIBSTREAMS_LIBRARIES})

-add_library(libxmlindexer
+add_library(libxmlindexer STATIC
xmlindexer.cpp
tagmapping.cpp
xmlindexwriter.cpp

++++++ strigi-missing-decl.patch ++++++
Index: strigi-0.7.7/strigidaemon/bin/daemon/eventlistener/eventlistenerqueue.cpp
===================================================================
---
strigi-0.7.7.orig/strigidaemon/bin/daemon/eventlistener/eventlistenerqueue.cpp
+++ strigi-0.7.7/strigidaemon/bin/daemon/eventlistener/eventlistenerqueue.cpp
@@ -27,9 +27,7 @@
#include <iostream>
#include <stdio.h>

-#if defined(__SUNPRO_CC)
#include <unistd.h>
-#endif

using namespace std;

--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-commit+help@xxxxxxxxxxxx

< Previous Next >
This Thread
  • No further messages