diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2011-02-14 23:47:40 -0500 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2011-02-14 23:47:40 -0500 |
commit | 33ec94dad1f4be45aad478de9de3654801bf6edd (patch) | |
tree | 0eaa66fb31ba0052d83c72809aace25ff94d9d87 | |
parent | Nicer messages. (diff) | |
download | oldgen-zmusicuploader-33ec94dad1f4be45aad478de9de3654801bf6edd.tar.xz oldgen-zmusicuploader-33ec94dad1f4be45aad478de9de3654801bf6edd.zip |
Add exclusion list generator.
-rw-r--r-- | main.cpp | 32 |
1 files changed, 30 insertions, 2 deletions
@@ -1,14 +1,42 @@ #include <QCoreApplication> #include <QFile> +#include <QDir> +#include <QFileInfo> +#include <QHashIterator> #include "Uploader.h" #include "DirectoryScanner.h" #include <iostream> +#include <cstring> using namespace std; int main(int argc, char *argv[]) { - if (argc < 8) { - cerr << "Usage: " << argv[0] << " localpath serverhost serverpath username password xorkey hashsalt" << endl; + + if (argc > 4 && !strcmp(argv[1], "--generateExclude")) { + cerr << "Hashing local files..." << endl; + QHashIterator<const QString, QFileInfo> entry(DirectoryScanner(argv[2], argv[3]).fileList()); + cerr << "Generating exclusion hashes..." << endl; + while (entry.hasNext()) { + entry.next(); + for (int i = 4; i < argc; ++i) { + QFileInfo excluded(argv[i]); + if (!excluded.exists()) { + cerr << argv[i] << " not found." << endl; + return 1; + } + if (entry.value().canonicalFilePath().startsWith(excluded.canonicalFilePath())) { + cout << entry.key().toStdString() << endl; + break; + } + } + } + return 0; + } + else if (argc < 8) { + cerr << "Usages:" << endl; + cerr << "\t" << argv[0] << " localpath serverhost serverpath username password xorkey hashsalt" << endl; + cerr << "\t\tor" << endl; + cerr << "\t" << argv[0] << " --generateExclude localpath hashsalt directories-or-files..." << endl; return 1; } QCoreApplication a(argc, argv); |