summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2011-02-14 23:47:40 -0500
committerJason A. Donenfeld <Jason@zx2c4.com>2011-02-14 23:47:40 -0500
commit33ec94dad1f4be45aad478de9de3654801bf6edd (patch)
tree0eaa66fb31ba0052d83c72809aace25ff94d9d87
parentNicer messages. (diff)
downloadoldgen-zmusicuploader-33ec94dad1f4be45aad478de9de3654801bf6edd.tar.xz
oldgen-zmusicuploader-33ec94dad1f4be45aad478de9de3654801bf6edd.zip
Add exclusion list generator.
-rw-r--r--main.cpp32
1 files changed, 30 insertions, 2 deletions
diff --git a/main.cpp b/main.cpp
index 2bf96d4..ae77694 100644
--- a/main.cpp
+++ b/main.cpp
@@ -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);