#include #include #include #include #include #include "Uploader.h" #include "DirectoryScanner.h" #include #include using namespace std; int main(int argc, char *argv[]) { if (argc == 4 && !strcmp(argv[1], "--showHashMap")) { QHashIterator entry(DirectoryScanner(argv[2], argv[3]).fileList()); while (entry.hasNext()) { entry.next(); cout << entry.value().canonicalFilePath().toStdString() << "\t" << entry.key().toStdString() << endl; } return 0; } if (argc > 4 && !strcmp(argv[1], "--generateExclude")) { cerr << "Hashing local files..." << endl; QHashIterator 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; cerr << "\t\tor" << endl; cerr << "\t" << argv[0] << " --showHashMap localpath hashsalt" << endl; return 1; } QCoreApplication a(argc, argv); Uploader uploader(argv[2], argv[3], argv[4], argv[5], argv[6], DirectoryScanner(argv[1], argv[7]).fileList()); QObject::connect(&uploader, SIGNAL(done()), &a, SLOT(quit())); uploader.begin(); return a.exec(); }