Merged luisangelsm/yacreader/headless_server into headless_server

This commit is contained in:
Felix Kauselmann 2015-12-21 12:51:12 +01:00
parent 6b5e4c5ec8
commit 65f2068dd6
13 changed files with 382 additions and 231 deletions

View File

@ -1,159 +1,164 @@
###################################################################### ######################################################################
# Automatically generated by qmake (2.01a) dom 12. oct 20:47:48 2008 # Automatically generated by qmake (2.01a) dom 12. oct 20:47:48 2008
###################################################################### ######################################################################
TEMPLATE = app TEMPLATE = app
TARGET = YACReaderLibraryServer TARGET = YACReaderLibraryServer
CONFIG += console CONFIG += console
DEPENDPATH += . DEPENDPATH += .
INCLUDEPATH += . INCLUDEPATH += .
INCLUDEPATH += ../common \ INCLUDEPATH += ../common \
./server \ ./server \
./db ./db
DEFINES += SERVER_RELEASE NOMINMAX YACREADER_LIBRARY DEFINES += SERVER_RELEASE NOMINMAX YACREADER_LIBRARY QT_NO_DEBUG_OUTPUT
#load default build flags #load default build flags
#TODO include (../config.pri) #TODO include (../config.pri)
!CONFIG(unarr):!CONFIG(7zip) { !CONFIG(unarr):!CONFIG(7zip) {
unix { unix {
!macx { !macx {
CONFIG+=unarr CONFIG+=unarr
} }
else { else {
CONFIG+=7zip CONFIG+=7zip
} }
} }
win32 { win32 {
CONFIG+=7zip CONFIG+=7zip
} }
} }
win32 { win32 {
LIBS += -L../dependencies/poppler/lib -loleaut32 -lole32 -lshell32 -luser32 LIBS += -L../dependencies/poppler/lib -loleaut32 -lole32 -lshell32 -luser32
LIBS += -lpoppler-qt5 LIBS += -lpoppler-qt5
INCLUDEPATH += ../dependencies/poppler/include/qt5 INCLUDEPATH += ../dependencies/poppler/include/qt5
QMAKE_CXXFLAGS_RELEASE += /MP /Ob2 /Oi /Ot /GT /GL QMAKE_CXXFLAGS_RELEASE += /MP /Ob2 /Oi /Ot /GT /GL
QMAKE_LFLAGS_RELEASE += /LTCG QMAKE_LFLAGS_RELEASE += /LTCG
CONFIG -= embed_manifest_exe CONFIG -= embed_manifest_exe
} }
unix:!macx{ unix:!macx{
INCLUDEPATH += /usr/include/poppler/qt5 INCLUDEPATH += /usr/include/poppler/qt5
LIBS += -L/usr/lib -lpoppler-qt5 LIBS += -L/usr/lib -lpoppler-qt5
} }
macx{ macx{
LIBS += -framework Foundation -framework ApplicationServices -framework AppKit LIBS += -framework Foundation -framework ApplicationServices -framework AppKit
OBJECTIVE_SOURCES += $$PWD/../common/pdf_comic.mm OBJECTIVE_SOURCES += $$PWD/../common/pdf_comic.mm
HEADERS += $$PWD/../common/pdf_comic.h HEADERS += $$PWD/../common/pdf_comic.h
CONFIG += objective_c CONFIG += objective_c
} }
unix{ unix{
CONFIG += c++11 CONFIG += c++11
} }
#CONFIG += release #CONFIG += release
CONFIG -= flat CONFIG -= flat
QT += core sql network script QT += core sql network script
# Input # Input
HEADERS += library_creator.h \ HEADERS += library_creator.h \
package_manager.h \ package_manager.h \
bundle_creator.h \ bundle_creator.h \
db_helper.h \ db_helper.h \
./db/data_base_management.h \ ./db/data_base_management.h \
../common/comic_db.h \ ../common/comic_db.h \
../common/folder.h \ ../common/folder.h \
../common/library_item.h \ ../common/library_item.h \
../common/comic.h \ ../common/comic.h \
../common/bookmarks.h \ ../common/bookmarks.h \
../common/qnaturalsorting.h \ ../common/qnaturalsorting.h \
../common/yacreader_global.h \ ../common/yacreader_global.h \
yacreader_local_server.h \ yacreader_local_server.h \
comics_remover.h \ comics_remover.h \
../common/http_worker.h \ ../common/http_worker.h \
yacreader_libraries.h \ yacreader_libraries.h \
comic_files_manager.h comic_files_manager.h \
headless/console_ui_library_creator.h
SOURCES += library_creator.cpp \
.\headless\main.cpp \ SOURCES += library_creator.cpp \
package_manager.cpp \ .\headless\main.cpp \
bundle_creator.cpp \ package_manager.cpp \
db_helper.cpp \ bundle_creator.cpp \
./db/data_base_management.cpp \ db_helper.cpp \
../common/comic_db.cpp \ ./db/data_base_management.cpp \
../common/folder.cpp \ ../common/comic_db.cpp \
../common/library_item.cpp \ ../common/folder.cpp \
../common/comic.cpp \ ../common/library_item.cpp \
../common/bookmarks.cpp \ ../common/comic.cpp \
../common/qnaturalsorting.cpp \ ../common/bookmarks.cpp \
yacreader_local_server.cpp \ ../common/qnaturalsorting.cpp \
comics_remover.cpp \ yacreader_local_server.cpp \
../common/http_worker.cpp \ comics_remover.cpp \
../common/yacreader_global.cpp \ ../common/http_worker.cpp \
yacreader_libraries.cpp \ ../common/yacreader_global.cpp \
comic_files_manager.cpp yacreader_libraries.cpp \
comic_files_manager.cpp \
headless/console_ui_library_creator.cpp
include(./server/server.pri)
CONFIG(7zip){
include(../compressed_archive/wrapper.pri) include(./server/server.pri)
} else:CONFIG(unarr) { CONFIG(7zip){
include(../compressed_archive/unarr/unarr-wrapper.pri) include(../compressed_archive/wrapper.pri)
} else { } else:CONFIG(unarr) {
error(No compression backend specified. Did you mess with the build system?) include(../compressed_archive/unarr/unarr-wrapper.pri)
} } else {
include(../QsLog/QsLog.pri) error(No compression backend specified. Did you mess with the build system?)
}
include(../QsLog/QsLog.pri)
TRANSLATIONS = yacreaderlibraryserver_es.ts \
yacreaderlibraryserver_ru.ts \
yacreaderlibraryserver_pt.ts \ TRANSLATIONS = yacreaderlibraryserver_es.ts \
yacreaderlibraryserver_fr.ts \ yacreaderlibraryserver_ru.ts \
yacreaderlibraryserver_nl.ts \ yacreaderlibraryserver_pt.ts \
yacreaderlibraryserver_tr.ts \ yacreaderlibraryserver_fr.ts \
yacreaderlibraryserver_de.ts \ yacreaderlibraryserver_nl.ts \
yacreaderlibraryserver_source.ts yacreaderlibraryserver_tr.ts \
yacreaderlibraryserver_de.ts \
yacreaderlibraryserver_source.ts
Release:DESTDIR = ../release
Debug:DESTDIR = ../debug
RESOURCES += headless/images.qrc
unix:!macx {
#set install prefix if it's empty Release:DESTDIR = ../release
isEmpty(PREFIX) { Debug:DESTDIR = ../debug
PREFIX = /usr
}
unix:!macx {
BINDIR = $$PREFIX/bin #set install prefix if it's empty
LIBDIR = $$PREFIX/lib isEmpty(PREFIX) {
DATADIR = $$PREFIX/share PREFIX = /usr
}
DEFINES += "LIBDIR=\\\"$$LIBDIR\\\"" "DATADIR=\\\"$$DATADIR\\\"" "BINDIR=\\\"$$BINDIR\\\""
BINDIR = $$PREFIX/bin
#MAKE INSTALL LIBDIR = $$PREFIX/lib
INSTALLS += bin icon desktop server translation manpage DATADIR = $$PREFIX/share
bin.path = $$BINDIR DEFINES += "LIBDIR=\\\"$$LIBDIR\\\"" "DATADIR=\\\"$$DATADIR\\\"" "BINDIR=\\\"$$BINDIR\\\""
isEmpty(DESTDIR) {
bin.files = YACReaderLibrary #MAKE INSTALL
} else { INSTALLS += bin icon desktop server translation manpage
bin.files = $$DESTDIR/YACReaderLibrary
} bin.path = $$BINDIR
isEmpty(DESTDIR) {
server.path = $$DATADIR/yacreader bin.files = YACReaderLibrary
server.files = ../release/server } else {
bin.files = $$DESTDIR/YACReaderLibrary
translation.path = $$DATADIR/yacreader/languages }
translation.files = ../release/languages/yacreaderlibrary_*
server.path = $$DATADIR/yacreader
manpage.path = $$DATADIR/man/man1 server.files = ../release/server
manpage.files = ../YACReaderLibrary.1
} translation.path = $$DATADIR/yacreader/languages
translation.files = ../release/languages/yacreaderlibrary_*
manpage.path = $$DATADIR/man/man1
manpage.files = ../YACReaderLibrary.1
}

View File

@ -4,6 +4,7 @@
#include "library_creator.h" #include "library_creator.h"
#include "check_new_version.h" #include "check_new_version.h"
static QString fields = "title ," static QString fields = "title ,"
"coverPage," "coverPage,"

View File

@ -0,0 +1,81 @@
#include "console_ui_library_creator.h"
#include <iostream>
#include "library_creator.h"
#include "yacreader_libraries.h"
ConsoleUILibraryCreator::ConsoleUILibraryCreator(QObject *parent) :
QObject(parent), numComicsProcessed(0)
{
}
void ConsoleUILibraryCreator::createLibrary(const QString & name, const QString & path)
{
QEventLoop eventLoop;
LibraryCreator * libraryCreator = new LibraryCreator();
libraryCreator->createLibrary(QDir::cleanPath(path),QDir::cleanPath(path)+"/.yacreaderlibrary");
connect(libraryCreator, &LibraryCreator::finished, this, &ConsoleUILibraryCreator::done);
connect(libraryCreator, &LibraryCreator::comicAdded, this, &ConsoleUILibraryCreator::newComic);
connect(libraryCreator, &LibraryCreator::failedCreatingDB, this, &ConsoleUILibraryCreator::manageCreatingError);
connect(libraryCreator, &LibraryCreator::finished, &eventLoop, &QEventLoop::quit);
std::cout << "Processing comics";
libraryCreator->start();
eventLoop.exec();
//TODO, at some point some checking is needed for avoiding duplicated libraries
YACReaderLibraries yacreaderLibraries;
yacreaderLibraries.load();
yacreaderLibraries.addLibrary(name, path);
yacreaderLibraries.save();
}
void ConsoleUILibraryCreator::updateLibrary(const QString & path)
{
QEventLoop eventLoop;
LibraryCreator * libraryCreator = new LibraryCreator();
libraryCreator->updateLibrary(QDir::cleanPath(path),QDir::cleanPath(path)+"/.yacreaderlibrary");
connect(libraryCreator, &LibraryCreator::finished, this, &ConsoleUILibraryCreator::done);
connect(libraryCreator, &LibraryCreator::comicAdded, this, &ConsoleUILibraryCreator::newComic);
connect(libraryCreator, &LibraryCreator::failedOpeningDB, this, &ConsoleUILibraryCreator::manageUpdatingError);
connect(libraryCreator, &LibraryCreator::finished, &eventLoop, &QEventLoop::quit);
std::cout << "Processing comics";
libraryCreator->start();
eventLoop.exec();
}
void ConsoleUILibraryCreator::newComic(const QString & /*relativeComicPath*/, const QString & /*coverPath*/)
{
numComicsProcessed++;
std::cout << ".";
}
void ConsoleUILibraryCreator::manageCreatingError(const QString & error)
{
std::cout << std::endl << "Error creating library! " << error.toUtf8().constData();
}
void ConsoleUILibraryCreator::manageUpdatingError(const QString & error)
{
std::cout << std::endl << "Error updating library! " << error.toUtf8().constData();
}
void ConsoleUILibraryCreator::done()
{
std::cout << "Done!" << std::endl;
if(numComicsProcessed > 0)
std::cout << "Number of comis processed = " << numComicsProcessed << std::endl;
}

View File

@ -0,0 +1,27 @@
#ifndef CONSOLE_UI_LIBRARY_CREATOR_H
#define CONSOLE_UI_LIBRARY_CREATOR_H
#include <QtCore>
class ConsoleUILibraryCreator : public QObject
{
Q_OBJECT
public:
explicit ConsoleUILibraryCreator(QObject *parent = 0);
void createLibrary(const QString & name, const QString & path);
void updateLibrary(const QString & path);
private:
uint numComicsProcessed;
signals:
public slots:
protected slots:
void newComic(const QString & relativeComicPath, const QString & coverPath);
void manageCreatingError(const QString & error);
void manageUpdatingError(const QString & error);
void done();
};
#endif // CONSOLE_UI_LIBRARY_CREATOR_H

View File

@ -0,0 +1,6 @@
<RCC>
<qresource prefix="/">
<file>../../images/f_overlayed.png</file>
<file>../../images/f_overlayed_retina.png</file>
</qresource>
</RCC>

View File

@ -7,9 +7,13 @@
#include "yacreader_libraries.h" #include "yacreader_libraries.h"
#include "yacreader_local_server.h" #include "yacreader_local_server.h"
#include "console_ui_library_creator.h"
#include "QsLog.h" #include "QsLog.h"
#include "QsLogDest.h" #include "QsLogDest.h"
using namespace QsLogging; using namespace QsLogging;
void logSystemAndConfig() void logSystemAndConfig()
@ -100,45 +104,98 @@ void logSystemAndConfig()
QLOG_INFO() << "--------------------------------------------"; QLOG_INFO() << "--------------------------------------------";
} }
QCoreApplication* createApplication(int &argc, char *argv[])
{
for (int i = 1; i < argc; ++i)
if (!qstrcmp(argv[i], "--no-gui"))
return new QCoreApplication(argc, argv);
return new QCoreApplication(argc, argv);
}
int main( int argc, char ** argv ) int main( int argc, char ** argv )
{ {
QScopedPointer<QCoreApplication> app(createApplication(argc, argv)); QCoreApplication *app = new QCoreApplication(argc, argv);
app->setApplicationName("YACReaderLibraryServer"); app->setApplicationName("YACReaderLibraryServer");
app->setOrganizationName("YACReader"); app->setOrganizationName("YACReader");
//simple command line parser app->setApplicationVersion(VERSION);
//will be replaced by QCommandLineParser in the future
//TODO: support for file and directory arguments QTextStream qout(stdout);
if (argc > 1)
//general help
QCommandLineParser parser;
parser.setApplicationDescription(QCoreApplication::tr("\nYACReaderLibraryServer is the headless (no gui) version of YACReaderLibrary"));
parser.addHelpOption();
parser.addVersionOption();
parser.addPositionalArgument("command", "The command to execute. [start, create-library, update-library, list-libraries]");
parser.parse(QCoreApplication::arguments());
const QStringList args = parser.positionalArguments();
const QString command = args.isEmpty() ? QString() : args.first();
if(command == "start")
{ {
QTextStream parser(stdout);
QStringList optlist = QCoreApplication::arguments().filter(QRegExp ("^-{1,2}")); }
if (optlist.contains("--version") || optlist.contains("-v")) else if(command == "create-library")
{
QCommandLineParser parser;
parser.addHelpOption();
parser.parse(QCoreApplication::arguments());
parser.clearPositionalArguments();
parser.addPositionalArgument("create-library", "Creates a library named \"name\" in the specified destination <path>");
parser.addPositionalArgument("name", "Library name", "\"name\"");
parser.addPositionalArgument("path", "Path to the folder where the library will be created", "<path>");
parser.process(*app);
const QStringList args = parser.positionalArguments();
if(args.length() != 3)
{ {
parser << app->applicationName() << " " << QString(VERSION) << endl << "Copyright 2014 by Luis Angel San Martin Rodriguez" << endl; parser.showHelp();
return 0; return 0;
} }
if (optlist.contains("--help") || optlist.contains("-h"))
const QStringList createArgs = parser.positionalArguments();
ConsoleUILibraryCreator * libraryCreatorUI = new ConsoleUILibraryCreator;
libraryCreatorUI->createLibrary(createArgs.at(1), createArgs.at(2));
return 0;
}
else if(command == "update-library")
{
QCommandLineParser parser;
parser.addHelpOption();
parser.parse(QCoreApplication::arguments());
parser.clearPositionalArguments();
parser.addPositionalArgument("update-library", "Updates an existing library at <path>");
parser.addPositionalArgument("path", "Path to the library to be updated", "<path>");
parser.process(*app);
const QStringList args = parser.positionalArguments();
if(args.length() != 2)
{ {
parser << endl << "Usage:" << "\tYACReaderLibrary [Option]" << endl << endl; parser.showHelp();
parser << "Options:" << endl;
parser << " none\t\t\tStart YACReaderLibrary" << endl;
parser << " -h, --help\t\tDisplay help text and exit." << endl;
parser << " -v, --version\t\tDisplay version information and exit." << endl;
return 0; return 0;
} }
if (optlist.contains("--no-gui"))
{ const QStringList updateArgs = parser.positionalArguments();
parser << "You're running YACReaderLibrary in non-gui mode. Press Ctrl+C to exit." << endl;
} ConsoleUILibraryCreator * libraryCreatorUI = new ConsoleUILibraryCreator;
libraryCreatorUI->updateLibrary(updateArgs.at(1));
return 0;
}
else if(command == "list-libraries")
{
YACReaderLibraries libraries = DBHelper::getLibraries();
for(QString libraryName : libraries.getNames())
qout << libraryName << " : " << libraries.getPath(libraryName) << endl;
return 0;
}
else //error
{
parser.showHelp();
} }
QString destLog = YACReader::getSettingsPath()+"/yacreaderlibrary.log"; QString destLog = YACReader::getSettingsPath()+"/yacreaderlibrary.log";
@ -169,12 +226,10 @@ int main( int argc, char ** argv )
viewerTranslator.load(QCoreApplication::applicationDirPath()+"/languages/yacreader_"+sufix); viewerTranslator.load(QCoreApplication::applicationDirPath()+"/languages/yacreader_"+sufix);
#endif #endif
app->installTranslator(&viewerTranslator); app->installTranslator(&viewerTranslator);
app->setApplicationName("YACReaderLibrary");
qRegisterMetaType<ComicDB>("ComicDB"); qRegisterMetaType<ComicDB>("ComicDB");
QSettings * settings = new QSettings(YACReader::getSettingsPath()+"/"+QCoreApplication::applicationName()+".ini",QSettings::IniFormat);
QSettings * settings = new QSettings(YACReader::getSettingsPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); //TODO unificar la creaci�n del fichero de config con el servidor
settings->beginGroup("libraryConfig"); settings->beginGroup("libraryConfig");
//server //server

View File

@ -636,7 +636,7 @@ void ThumbnailCreator::create()
#else #else
QImage p = pdfComic->page(_coverPage-1)->renderToImage(72,72); QImage p = pdfComic->page(_coverPage-1)->renderToImage(72,72);
#endif #endif
_cover = QPixmap::fromImage(p); _cover = p;
if(_target!="") if(_target!="")
{ {
QImage scaled; QImage scaled;

View File

@ -78,14 +78,14 @@
QString _target; QString _target;
QString _currentName; QString _currentName;
int _numPages; int _numPages;
QPixmap _cover; QImage _cover;
int _coverPage; int _coverPage;
static bool crash; static bool crash;
public slots: public slots:
void create(); void create();
int getNumPages(){return _numPages;}; int getNumPages(){return _numPages;}
QPixmap getCover(){return _cover;}; QPixmap getCover(){return QPixmap::fromImage(_cover);}
signals: signals:
void openingError(QProcess::ProcessError error); void openingError(QProcess::ProcessError error);

View File

@ -155,31 +155,9 @@ int main( int argc, char ** argv )
app.setApplicationName("YACReaderLibrary"); app.setApplicationName("YACReaderLibrary");
app.setOrganizationName("YACReader"); app.setOrganizationName("YACReader");
app.setApplicationName(VERSION);
app.setAttribute(Qt::AA_UseHighDpiPixmaps); app.setAttribute(Qt::AA_UseHighDpiPixmaps);
//simple command line parser
//will be replaced by QCommandLineParser in the future
//TODO: --headless, --server=[on|off], support for file and directory arguments
if (argc > 1)
{
QTextStream parser(stdout);
QStringList optlist = QCoreApplication::arguments().filter(QRegExp ("^-{1,2}"));
if (optlist.contains("--version") || optlist.contains("-v"))
{
parser << app.applicationName() << " " << QString(VERSION) << endl << "Copyright 2014 by Luis Angel San Martin Rodriguez" << endl;
return 0;
}
if (optlist.contains("--help") || optlist.contains("-h"))
{
parser << endl << "Usage:" << "\tYACReaderLibrary [Option]" << endl << endl;
parser << "Options:" << endl;
parser << " none\t\t\tStart YACReaderLibrary" << endl;
parser << " -h, --help\t\tDisplay help text and exit." << endl;
parser << " -v, --version\t\tDisplay version information and exit." << endl;
return 0;
}
parser << "Unsupported command line options. See YACReaderLibrary --help for further information." << endl;
return 0;
}
QString destLog = YACReader::getSettingsPath()+"/yacreaderlibrary.log"; QString destLog = YACReader::getSettingsPath()+"/yacreaderlibrary.log";
QDir().mkpath(YACReader::getSettingsPath()); QDir().mkpath(YACReader::getSettingsPath());
@ -209,7 +187,6 @@ int main( int argc, char ** argv )
viewerTranslator.load(QCoreApplication::applicationDirPath()+"/languages/yacreader_"+sufix); viewerTranslator.load(QCoreApplication::applicationDirPath()+"/languages/yacreader_"+sufix);
#endif #endif
app.installTranslator(&viewerTranslator); app.installTranslator(&viewerTranslator);
app.setApplicationName("YACReaderLibrary");
qRegisterMetaType<ComicDB>("ComicDB"); qRegisterMetaType<ComicDB>("ComicDB");

View File

@ -27,8 +27,7 @@
void Startup::start() { void Startup::start() {
// Initialize the core application // Initialize the core application
QCoreApplication* app = QCoreApplication::instance(); QCoreApplication* app = QCoreApplication::instance();
app->setApplicationName(APPNAME);
app->setOrganizationName(ORGANISATION);
QString configFileName=YACReader::getSettingsPath()+"/"+QCoreApplication::applicationName()+".ini"; QString configFileName=YACReader::getSettingsPath()+"/"+QCoreApplication::applicationName()+".ini";
// Configure logging into files // Configure logging into files

View File

@ -102,7 +102,7 @@ void YACReaderLibraries::addLibrary(const QString &name, const QString &path)
void YACReaderLibraries::load() void YACReaderLibraries::load()
{ {
QSettings settings(YACReader::getSettingsPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); QSettings settings(YACReader::getSettingsPath()+"/"+QCoreApplication::applicationName()+".ini",QSettings::IniFormat);
if(settings.value(LIBRARIES).isValid()) if(settings.value(LIBRARIES).isValid())
{ {
@ -136,7 +136,7 @@ void YACReaderLibraries::load()
bool YACReaderLibraries::save() bool YACReaderLibraries::save()
{ {
QSettings settings(YACReader::getSettingsPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); QSettings settings(YACReader::getSettingsPath()+"/"+QCoreApplication::applicationName()+".ini",QSettings::IniFormat);
QByteArray data; QByteArray data;
QDataStream out(&data, QIODevice::WriteOnly); QDataStream out(&data, QIODevice::WriteOnly);

View File

@ -127,10 +127,10 @@ void YACReaderClientConnectionWorker::run()
tries = 0; tries = 0;
QByteArray data; QByteArray data;
int dataRead = 0; int dataRead = 0;
while(data.size() < totalSize && tries < 200) while((quint32)data.size() < totalSize && tries < 200)
{ {
data.append(clientConnection->readAll()); data.append(clientConnection->readAll());
if(data.length() < totalSize) if((quint32)data.length() < totalSize)
clientConnection->waitForReadyRead(100); clientConnection->waitForReadyRead(100);
if(dataRead == data.length()) //no bytes were read if(dataRead == data.length()) //no bytes were read
tries++; tries++;

View File

@ -73,12 +73,12 @@ struct SevenZipInterface {
//SevenZipInterface * szInterface; //SevenZipInterface * szInterface;
const char rar[7]={static_cast<char>(0x52), static_cast<char>(0x61), static_cast<char>(0x72), static_cast<char>(0x21), static_cast<char>(0x1A), static_cast<char>(0x07), static_cast<char>(0x00)}; const unsigned char rar[7]={static_cast<unsigned char>(0x52), static_cast<unsigned char>(0x61), static_cast<unsigned char>(0x72), static_cast<unsigned char>(0x21), static_cast<unsigned char>(0x1A), static_cast<unsigned char>(0x07), static_cast<unsigned char>(0x00)};
const char rar5[8]={static_cast<char>(0x52), static_cast<char>(0x61), static_cast<char>(0x72), static_cast<char>(0x21), static_cast<char>(0x1A), static_cast<char>(0x07), static_cast<char>(0x01), static_cast<char>(0x00)}; const unsigned char rar5[8]={static_cast<unsigned char>(0x52), static_cast<unsigned char>(0x61), static_cast<unsigned char>(0x72), static_cast<unsigned char>(0x21), static_cast<unsigned char>(0x1A), static_cast<unsigned char>(0x07), static_cast<unsigned char>(0x01), static_cast<unsigned char>(0x00)};
const char zip[2]={static_cast<char>(0x50), static_cast<char>(0x4B)}; const unsigned char zip[2]={static_cast<unsigned char>(0x50), static_cast<unsigned char>(0x4B)};
const char sevenz[6]={static_cast<char>(0x37), static_cast<char>(0x7A), static_cast<char>(0xBC), static_cast<char>(0xAF), static_cast<char>(0x27), static_cast<char>(0x1C)}; const unsigned char sevenz[6]={static_cast<unsigned char>(0x37), static_cast<unsigned char>(0x7A), static_cast<unsigned char>(0xBC), static_cast<unsigned char>(0xAF), static_cast<unsigned char>(0x27), static_cast<unsigned char>(0x1C)};
const char tar[6]="ustar"; const unsigned char tar[6]="ustar";
const char arj[2]={static_cast<char>(0x60), static_cast<char>(0xEA)}; const unsigned char arj[2]={static_cast<unsigned char>(0x60), static_cast<unsigned char>(0xEA)};
CompressedArchive::CompressedArchive(const QString & filePath, QObject *parent) : CompressedArchive::CompressedArchive(const QString & filePath, QObject *parent) :
QObject(parent),sevenzLib(0),valid(false),tools(false) QObject(parent),sevenzLib(0),valid(false),tools(false)
@ -404,7 +404,7 @@ QVector<quint32> CompressedArchive::translateIndexes(const QVector<quint32> & in
foreach(quint32 i, indexes) foreach(quint32 i, indexes)
{ {
if(i < offsets.length()) if(i < (quint32)offsets.length())
translatedIndexes.append(offsets.at(i)); translatedIndexes.append(offsets.at(i));
} }