diff options
Diffstat (limited to 'src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp')
-rw-r--r-- | src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp b/src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp index 226da9f1..c0d3b03e 100644 --- a/src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp +++ b/src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp @@ -30,14 +30,11 @@ void Backend::loadFile(QString path){ qDebug() << "void Backend::loadFile(QString path) has started"; qDebug() << "Loading Archive:" << path; filepath = path; - //qDebug () << "BACKEND LOAD- " << "path = " << path; - //qDebug () << "BACKEND LOAD- " << "filepath = " << filepath; tmpfilepath = filepath.section("/",0,-2)+"/"+".tmp_larchiver_"+filepath.section("/",-1); flags.clear(); flags << "-f" << filepath; //add the actual archive path if(QFile::exists(path)){ startList(); qDebug () << "BACKEND LOAD startList has started";} else{ contents.clear(); emit ProcessFinished(true, ""); } - //qDebug () << "BACKEND LOAD COMPLETE"; } bool Backend::canModify(){ @@ -108,8 +105,8 @@ void Backend::startAdd(QStringList paths){ args << paths; if(QFile::exists(filepath)){ //append to existing args.replaceInStrings(filepath, tmpfilepath); - args<< "@"+filepath; - } + args<< "@"+filepath; + } STARTING=true; PROC.start("tar", args); } @@ -120,21 +117,17 @@ void Backend::startRemove(QStringList paths){ QStringList args; args << "-c" << "-a"; args << flags; - args.replaceInStrings(filepath, tmpfilepath); + args.replaceInStrings(filepath, tmpfilepath); //Add the include rules for all the files we want to keep (no exclude option in "tar") for(int i=0; i<paths.length(); i++){ args << "--exclude" << paths[i]; } - args<< "@"+filepath; + args<< "@"+filepath; STARTING=true; PROC.start("tar", args); } void Backend::startExtract(QString path, bool overwrite, QString file){ - qDebug () << "BACKEND startExtract -" << "void Backend::startExtract(QString path, bool overwrite, QString file) has started"; - qDebug () << "BACKEND startExtract -" << "path = " << path; - qDebug () << "BACKEND startExtract -" << "overwrite =" << overwrite ; - qDebug () << "BACKEND startExtract -" << "file =" << file; startExtract(path, overwrite, QStringList() << file); //overload for multi-file function } @@ -179,7 +172,7 @@ void Backend::parseLines(QStringList lines){ if(info.startsWith("x ") && filepath.endsWith(".zip")){ //ZIP archives do not have all the extra information - just filenames while(info.length()>2){ info[1]=info[1]+" "+info[2]; } - QString file = info[1]; + QString file = info[1]; QString perms = ""; if(file.endsWith("/")){ perms = "d"; file.chop(1); } contents.insert(file, QStringList() << perms << "-1" <<""); //Save the [perms, size, linkto ] @@ -187,7 +180,7 @@ void Backend::parseLines(QStringList lines){ else if(info.length()<9){ continue; } //invalid line //TAR Archive parsing while(info.length()>9){ info[8] = info[8]+" "+info[9]; info.removeAt(9); } //Filename has spaces in it - QString file = info[8]; + QString file = info[8]; if(file.endsWith("/")){ file.chop(1); } QString linkto; //See if this file has the "link to" or "->" notation @@ -241,9 +234,14 @@ void Backend::procFinished(int retcode, QProcess::ExitStatus){ QProcess::startDetached("xdg-open \""+path+"\""); }else{ //Multi-file extract - open the dir instead - QProcess::startDetached("xdg-open \""+ args.last()+"\""); //just extracted to a dir - open it now + QString dir = args.last(); + //Check to see if tar extracted into a new subdir it just created + if(QFile::exists(dir+"/"+filepath.section("/",-1).section(".",0,0) ) ){ + dir = dir+"/"+filepath.section("/",-1).section(".",0,0); + } + QProcess::startDetached("xdg-open \""+ dir+"\""); //just extracted to a dir - open it now } - + }else if(args.contains("-c") && QFile::exists(tmpfilepath)){ if(retcode==0){ QFile::remove(filepath); @@ -260,7 +258,7 @@ void Backend::procFinished(int retcode, QProcess::ExitStatus){ } void Backend::processData(){ - //Read the process + //Read the process static QString data; QString read = data+PROC.readAllStandardOutput(); if(read.endsWith("\n")){ data.clear(); } |