From a477a1998c03bc0e7251463aff5486e3c0872d23 Mon Sep 17 00:00:00 2001 From: am Date: Fri, 17 Jul 2009 17:36:23 +0000 Subject: Huge changes: -Created an application icon and one for archives -implemented database configuration dialog -implemented listeditor -implemented covereditor -implemented md5sum helper -implemented archivefilewidget -Debugging spree: fixed SQL-statements and ListModel git-svn-id: file:///var/svn/repos2/shemov/trunk@389 f440f766-f032-0410-8965-dc7d17de2ca0 --- helper.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'helper.cpp') diff --git a/helper.cpp b/helper.cpp index 116efa5..baaacbb 100644 --- a/helper.cpp +++ b/helper.cpp @@ -7,6 +7,14 @@ #include #include +#include +#include + +#define CRYPTOPP_ENABLE_NAMESPACE_WEAK 1 +#include +#include +#include +#include #include "helper.h" @@ -35,5 +43,37 @@ namespace Helper { return retval; } } + + const QString md5Sum(const QString &path){ + QFileInfo info(path); + if(!info.exists() || !info.isFile()){ + return QString(); + } + + using namespace CryptoPP; + Weak::MD5 hash; + std::string res; + QString retval; + if(info.size() < (5 * 1024 * 1024)){ + FileSource f(qPrintable(path), true, new HashFilter(hash, new HexEncoder(new StringSink(res)))); + retval = QString::fromStdString(res).toLower(); + }else{ + QFile file(path); + file.open(QIODevice::ReadOnly); + int offset = info.size() / 3; + file.seek(offset); + int numBytes = 512 * 1024; + char *data = new char[numBytes]; + int read = file.read(data, numBytes); + if(read != numBytes){ + delete [] data; + return QString(); + } + StringSource s((byte*)data, numBytes, true, new HashFilter(hash, new HexEncoder(new StringSink(res)))); + retval = QString::fromStdString(res).toLower(); + delete [] data; + } + return retval; + } } -- cgit v1.2.3-70-g09d2