[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/work/kde4/playground/libs/archivereader/src
From: Jos van den Oever <jos () vandenoever ! info>
Date: 2006-05-14 12:45:21
Message-ID: 1147610721.387134.16184.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 540672 by vandenoever:
Add sha1 sum to file information that is stored in the index.
M +8 -0 luceneindexer/cluceneindexwriter.cpp
M +2 -1 luceneindexer/cluceneindexwriter.h
M +6 -0 streamindexer/digestthroughanalyzer.cpp
M +2 -1 streamindexer/digestthroughanalyzer.h
M +6 -1 streamindexer/indexwriter.h
M +1 -3 streamindexer/streamindexer.cpp
M +22 -4 streams/digestinputstream.cpp
M +4 -0 streams/digestinputstream.h
--- branches/work/kde4/playground/libs/archivereader/src/luceneindexer/cluceneindexwriter.cpp \
#540671:540672 @@ -76,8 +76,16 @@
void
CLuceneIndexWriter::addField(const Indexable* idx, const wstring &fieldname,
const char* value) {
+ TCHAR tf[CL_MAX_DIR];
+ STRCPY_AtoT(tf, value, CL_MAX_DIR);
+ wstring v(tf);
+ addField(idx, fieldname, v);
}
+void
+CLuceneIndexWriter::startIndexable(const Indexable* idx) {
+ addField(idx, L"path", idx->getName().c_str());
+}
/*
Close all left open indexwriters for this path.
*/
--- branches/work/kde4/playground/libs/archivereader/src/luceneindexer/cluceneindexwriter.h \
#540671:540672 @@ -27,13 +27,14 @@
void addIndexWriter();
protected:
+ void startIndexable(const jstreams::Indexable*);
+ void finishIndexable(const jstreams::Indexable*);
void addStream(const jstreams::Indexable*, const std::wstring& fieldname,
jstreams::StreamBase<wchar_t>* datastream);
void addField(const jstreams::Indexable*, const std::wstring &fieldname,
const char* value);
void addField(const jstreams::Indexable*, const std::wstring &fieldname,
const std::wstring &value);
- void finishIndexable(const jstreams::Indexable*);
public:
CLuceneIndexWriter(const char* path);
~CLuceneIndexWriter();
--- branches/work/kde4/playground/libs/archivereader/src/streamindexer/digestthroughanalyzer.cpp \
#540671:540672 @@ -1,11 +1,13 @@
#include "digestthroughanalyzer.h"
#include "digestinputstream.h"
#include "inputstream.h"
+#include "indexwriter.h"
#include <openssl/sha.h>
using namespace jstreams;
DigestThroughAnalyzer::DigestThroughAnalyzer() {
stream = 0;
+ indexable = 0;
}
DigestThroughAnalyzer::~DigestThroughAnalyzer() {
if (stream) {
@@ -14,6 +16,9 @@
}
InputStream *
DigestThroughAnalyzer::connectInputStream(InputStream *in) {
+ if (indexable && stream && stream->getStatus() == Eof) {
+ indexable->addField(L"sha1", stream->getDigestString().c_str());
+ }
if (stream) {
delete stream;
}
@@ -22,4 +27,5 @@
}
void
DigestThroughAnalyzer::setIndexable(jstreams::Indexable* idx) {
+ indexable = idx;
}
--- branches/work/kde4/playground/libs/archivereader/src/streamindexer/digestthroughanalyzer.h \
#540671:540672 @@ -4,12 +4,13 @@
#include "streamthroughanalyzer.h"
namespace jstreams {
- class DigestInputStream;
+ class DigestInputStream;
}
class DigestThroughAnalyzer : public jstreams::StreamThroughAnalyzer {
private:
jstreams::DigestInputStream *stream;
+ jstreams::Indexable* indexable;
public:
DigestThroughAnalyzer();
~DigestThroughAnalyzer();
--- branches/work/kde4/playground/libs/archivereader/src/streamindexer/indexwriter.h \
#540671:540672 @@ -23,6 +23,7 @@
class IndexWriter {
friend class Indexable;
protected:
+ virtual void startIndexable(const Indexable*) = 0;
virtual void addStream(const Indexable*, const std::wstring& fieldname,
jstreams::StreamBase<wchar_t>* datastream) = 0;
virtual void addField(const Indexable*, const std::wstring &fieldname,
@@ -37,8 +38,11 @@
class Indexable {
private:
IndexWriter* writer;
+ const std::string& name;
public:
- Indexable(IndexWriter* w) :writer(w) {}
+ Indexable(const std::string& n, IndexWriter* w) :writer(w), name(n) {
+ w->startIndexable(this);
+ }
~Indexable() { writer->finishIndexable(this); }
void addStream(const std::wstring& fieldname,
jstreams::StreamBase<wchar_t>* datastream) {
@@ -52,6 +56,7 @@
const std::wstring &value) {
writer->addField(this, fieldname, value);
}
+ const std::string& getName() const { return name; }
};
}
--- branches/work/kde4/playground/libs/archivereader/src/streamindexer/streamindexer.cpp \
#540671:540672 @@ -76,9 +76,7 @@
char
StreamIndexer::analyze(std::string &path, InputStream *input, uint depth) {
printf("%s %lli\n", path.c_str(), input->getSize());
- Indexable idx(writer);
- idx.addField(L"path", path.c_str());
- idx.addField(L"path", L"hmm");
+ Indexable idx(path, writer);
// retrieve or construct the through analyzers and end analyzers
std::vector<std::vector<StreamThroughAnalyzer*> >::iterator tIter;
--- branches/work/kde4/playground/libs/archivereader/src/streams/digestinputstream.cpp \
#540671:540672 @@ -1,4 +1,5 @@
#include "digestinputstream.h"
+using namespace std;
using namespace jstreams;
DigestInputStream::DigestInputStream(StreamBase<char> *input) {
@@ -6,6 +7,7 @@
size = input->getSize();
status = Ok;
ignoreBytes = 0;
+ finished = false;
SHA1_Init(&sha1);
}
int32_t
@@ -73,10 +75,26 @@
}
void
DigestInputStream::printDigest() {
- SHA1_Final(digest, &sha1);
- printf("The hash: ");
- for (int i = 0; i < 20; i++) {
+ finishDigest();
+ printf("The hash %p: %s\n", this, getDigestString().c_str());
+/* for (int i = 0; i < 20; i++) {
printf("%02x ", digest[i]);
}
- printf("\n");
+ printf("\n");*/
}
+void
+DigestInputStream::finishDigest() {
+ if (!finished) {
+ SHA1_Final(digest, &sha1);
+ finished = true;
+ }
+}
+string
+DigestInputStream::getDigestString() {
+ finishDigest();
+ char d[41];
+ for (int i = 0; i < 20; i++) {
+ sprintf(d+2*i, "%02x", digest[i]);
+ }
+ return d;
+}
--- branches/work/kde4/playground/libs/archivereader/src/streams/digestinputstream.h \
#540671:540672 @@ -6,10 +6,13 @@
namespace jstreams {
class DigestInputStream : public StreamBase<char> {
private:
+ bool finished;
int32_t ignoreBytes;
SHA_CTX sha1;
unsigned char digest[SHA_DIGEST_LENGTH];
StreamBase<char> *input;
+
+ void finishDigest();
public:
DigestInputStream(StreamBase<char> *input);
int32_t read(const char*& start, int32_t min, int32_t max);
@@ -17,6 +20,7 @@
int64_t mark(int32_t readlimit);
int64_t reset(int64_t);
void printDigest();
+ std::string getDigestString();
};
}
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic