forked from markus/S_New4
add new subfunction and function for removing dir / removing settings and cachedir
This commit is contained in:
parent
4cfdde076d
commit
173bcc8d7e
@ -56,14 +56,13 @@ int manageParameter(Settings &settings, int argc, char **argv)
|
|||||||
if(settings.debugMode)
|
if(settings.debugMode)
|
||||||
std::cerr << ">>> Debug In " << __FUNCTION__ << ": setPaths f() failed." << std::endl;
|
std::cerr << ">>> Debug In " << __FUNCTION__ << ": setPaths f() failed." << std::endl;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
|
||||||
if(loadDefaulOptions(settings) != 0) {
|
} else if(loadDefaulOptions(settings) != 0) {
|
||||||
if(settings.debugMode)
|
if(settings.debugMode)
|
||||||
std::cerr << ">>> Debug In " << __FUNCTION__ << ": loadDefaulOptions f() failed." << std::endl;
|
std::cerr << ">>> Debug In " << __FUNCTION__ << ": loadDefaulOptions f() failed." << std::endl;
|
||||||
return 28;
|
return 28;
|
||||||
}
|
|
||||||
|
|
||||||
if(argc < 2) {
|
} else if(argc < 2) {
|
||||||
std::cout << " => Error: Keine Unteroption angegeben." << std::endl;
|
std::cout << " => Error: Keine Unteroption angegeben." << std::endl;
|
||||||
std::cout << "Aufruf: " << settings.programName << " [Unteroption] [PARAMETER]" << std::endl;
|
std::cout << "Aufruf: " << settings.programName << " [Unteroption] [PARAMETER]" << std::endl;
|
||||||
std::cout << "\"" << settings.programName << " --help\" liefert weitere Informationen." << std::endl;
|
std::cout << "\"" << settings.programName << " --help\" liefert weitere Informationen." << std::endl;
|
||||||
@ -1253,3 +1252,83 @@ void unterOption_update_help(std::string programName)
|
|||||||
<< " Mit dieser Option wird dieses Helpmenue ausgegeben." << std::endl;
|
<< " Mit dieser Option wird dieses Helpmenue ausgegeben." << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool removeDirIsOk(std::string path, Settings *settings)
|
||||||
|
{
|
||||||
|
if(path == "") {
|
||||||
|
std::cout << " => Error: Ungültiger Pfad: '" << path << "'." << std::endl;
|
||||||
|
return false;
|
||||||
|
} else if(path.back() != settings->pathSymbol )
|
||||||
|
path.push_back(settings->pathSymbol);
|
||||||
|
|
||||||
|
if(settings->askForEveryDir) {
|
||||||
|
std::cout << "Zur Bestätigung des Löschens des Ordners: '" << path << "'," << std::endl
|
||||||
|
<< "geben sie 'OK' ein: " << std::flush;
|
||||||
|
std::string input;
|
||||||
|
std::getline(std::cin, input);
|
||||||
|
if(input != "OK") {
|
||||||
|
std::cout << "Abbruch..." << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DIR* dirp = nullptr;
|
||||||
|
if( (dirp = opendir( path.c_str() )) == nullptr ) {
|
||||||
|
perror(std::string(" => Error: Konnte Verzeichnis nicht öffnen: '" + path + "'").c_str());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct dirent * dp;
|
||||||
|
while ((dp = readdir(dirp)) != nullptr) {
|
||||||
|
if(strcmp( dp->d_name, "." ) == 0 || strcmp ( dp->d_name, ".." ) == 0)
|
||||||
|
continue;
|
||||||
|
else if(dirExists((path + dp->d_name + "/"))) { //if(dp->d_type == DT_DIR) {
|
||||||
|
if( ! removeDirIsOk(path + dp->d_name + "/" , settings)) {
|
||||||
|
if(settings->debugMode)
|
||||||
|
std::cout << " => Error im Unterordner: '" << path + dp->d_name << "'" << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else if(fileExists( path + dp->d_name )) {
|
||||||
|
if(remove((path + dp->d_name).c_str()) != 0) {
|
||||||
|
perror((" => Error: Das Löschen von '" + path + dp->d_name + "' ist fehlgeschlagen").c_str());
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
if(settings->debugMode)
|
||||||
|
std::cout << " => DEBUG: Erfolgreich '" << path + dp->d_name << "' gelöscht." << std::endl;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
std::cout << " => Error: '" << path << dp->d_name << "'ist keine Datei oder Ordner." << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
closedir(dirp);
|
||||||
|
|
||||||
|
if(rmdir(path.c_str()) != 0) {
|
||||||
|
perror((" => Das löschen des Ordners '" + path + "' ist fehlgeschlagen.").c_str());
|
||||||
|
return false;
|
||||||
|
|
||||||
|
} else if (settings->debugMode)
|
||||||
|
std::cout << " => DEBUG: Ordner '" << path << "' erfolgreich gelöscht." << std::endl;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
#include <limits.h> // PATH_MAX
|
#include <limits.h> // PATH_MAX
|
||||||
#include <unistd.h> // readlink()
|
#include <unistd.h> // readlink()
|
||||||
|
#include <dirent.h>
|
||||||
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
@ -49,17 +50,17 @@ struct Settings {
|
|||||||
const std::string ProgrammFileUrl = "https://cloud.obermui.de/s/H47Xoqy2czfJzYp/download?path=%2F&files=S_New4-WINx86.exe";
|
const std::string ProgrammFileUrl = "https://cloud.obermui.de/s/H47Xoqy2czfJzYp/download?path=%2F&files=S_New4-WINx86.exe";
|
||||||
#endif
|
#endif
|
||||||
std::string name,
|
std::string name,
|
||||||
accountFilePath = "/tmp/a",
|
accountFilePath = "",
|
||||||
accountNumberPath= "/tmp/a_n",
|
accountNumberPath= "",
|
||||||
cookieFilePath = "/tmp/S_New4_cookies",
|
cookieFilePath = "",
|
||||||
serienListPath = "/tmp/SerienListe",
|
serienListPath = "",
|
||||||
lastUpdateDateFilePath = "/tmp/lastUpdateDateFile",
|
lastUpdateDateFilePath = "",
|
||||||
configDir="/tmp/",
|
configDir="",
|
||||||
cacheDir="/tmp/",
|
cacheDir="",
|
||||||
|
|
||||||
defaultsFilePath = "/tmp/defaults",
|
defaultsFilePath = "",
|
||||||
proxy_ip = "127.0.0.1",
|
proxy_ip = "127.0.0.1",
|
||||||
languages = "GerDub,GerSub,Eng",
|
languages = "GerDub,GerSub,Eng,",
|
||||||
genaueHoster = "",
|
genaueHoster = "",
|
||||||
version = "3.3.2",
|
version = "3.3.2",
|
||||||
defaultFileVersion="1.6",
|
defaultFileVersion="1.6",
|
||||||
@ -71,7 +72,8 @@ struct Settings {
|
|||||||
bool colorless = false,
|
bool colorless = false,
|
||||||
debugMode = false,
|
debugMode = false,
|
||||||
search_IgnoreUpperLower = true,
|
search_IgnoreUpperLower = true,
|
||||||
search_wantUpdate = false;
|
search_wantUpdate = false,
|
||||||
|
askForEveryDir = true;
|
||||||
int startEpisode = 1,
|
int startEpisode = 1,
|
||||||
stopEpisode = 0,
|
stopEpisode = 0,
|
||||||
startSeason = 1,
|
startSeason = 1,
|
||||||
@ -97,6 +99,7 @@ bool nothingExists(std::string path);
|
|||||||
|
|
||||||
bool createDirIsOk(std::string path);
|
bool createDirIsOk(std::string path);
|
||||||
bool makePathIsOk(std::string path);
|
bool makePathIsOk(std::string path);
|
||||||
|
bool removeDirIsOk(std::string path, Settings *settings);
|
||||||
|
|
||||||
int unterOption_help(Settings &settings);
|
int unterOption_help(Settings &settings);
|
||||||
void unterOption_printVersion(Settings &settings);
|
void unterOption_printVersion(Settings &settings);
|
||||||
|
@ -1101,6 +1101,32 @@ int ProgramManager::updateModus(Settings *settings)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ProgramManager::cleanUpSettingsAndCache(Settings *settings)
|
||||||
|
{
|
||||||
|
std::string input;
|
||||||
|
std::cout << "Bitte Bestätigen sie, dass sie alle Einstellungen und" << std::endl
|
||||||
|
<< "Zwischengespeicherten Dateien löschen wollen:\nGeben Sie 'CONFIRM' ein: " << std::flush;
|
||||||
|
std::getline(std::cin, input);
|
||||||
|
if( input != "CONFIRM" ) {
|
||||||
|
std::cout << "Abbruch..." << std::endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Cache Dir
|
||||||
|
if( ! removeDirIsOk(settings->cacheDir, settings)) {
|
||||||
|
std::cout << " => Error: Das löschen des Cache-Ordners ist fehlgeschlagen." << std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
//setting dir
|
||||||
|
if( ! removeDirIsOk(settings->configDir, settings)) {
|
||||||
|
std::cout << " => Error: Das löschen des Settings-Ordners ist fehlgeschlagen." << std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int ProgramManager::searchModus_update(Settings *settings)
|
int ProgramManager::searchModus_update(Settings *settings)
|
||||||
{
|
{
|
||||||
@ -1238,8 +1264,21 @@ int ProgramManager::listDir(std::string &list,std::string path, int maxDepth)
|
|||||||
//verkleiner varibable um 1, um zu verhindern, das endlose schleife entsteht
|
//verkleiner varibable um 1, um zu verhindern, das endlose schleife entsteht
|
||||||
maxDepth--;
|
maxDepth--;
|
||||||
|
|
||||||
if(path[path.length()-1] != '/')
|
if(path[path.length()-1] != '/') {
|
||||||
|
if(path[path.length()-1] != '\\') { // Wenn kein \ oder / am ende ist
|
||||||
|
if(path.find("/") == std::string::npos) { // wenn im namen ein / ist füge am ende / hinzu
|
||||||
|
if(path.find("\\") == std::string::npos) { // wenn im name ein \ ist add \ to en or error
|
||||||
|
std::cout << " => Error: Pfad zu dem Ordner enthält kein Pfadsymbol." << std::endl;
|
||||||
|
return -2;
|
||||||
|
} else {
|
||||||
|
path.push_back('\\');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
path.push_back('/');
|
path.push_back('/');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
DIR* dirp = opendir(path.c_str());
|
DIR* dirp = opendir(path.c_str());
|
||||||
if(!dirp) {
|
if(!dirp) {
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
#include "accountManager.h"
|
#include "accountManager.h"
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <dirent.h>
|
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
|
||||||
|
|
||||||
@ -48,6 +47,8 @@ private:
|
|||||||
int infoModus(Settings * settings);
|
int infoModus(Settings * settings);
|
||||||
int newsModus(Settings *settings);
|
int newsModus(Settings *settings);
|
||||||
int updateModus(Settings *settings);
|
int updateModus(Settings *settings);
|
||||||
|
int cleanUpSettingsAndCache(Settings *settings);
|
||||||
|
|
||||||
|
|
||||||
PageManager pageManager;
|
PageManager pageManager;
|
||||||
std::vector<ThreadData*> threadList;
|
std::vector<ThreadData*> threadList;
|
||||||
|
Loading…
Reference in New Issue
Block a user