73 lines
1.4 KiB
C++
73 lines
1.4 KiB
C++
|
|
#include <Log.h>
|
|
|
|
#include <iostream>
|
|
#include <signal.h> //signal handler
|
|
|
|
#include "search.h"
|
|
|
|
static bool run = true;
|
|
|
|
void sig_handler(int sig_num) {
|
|
Log::info << "signalHandler triggered";
|
|
run = false;
|
|
(void) sig_num;
|
|
}
|
|
|
|
int main(int argc, const char** argv) {
|
|
Log::init();
|
|
Log::setConsoleLogLevel(Log::Level::TRACE);
|
|
Log::addLogfile("log.txt", Log::Level::TRACE);
|
|
#if __unix__
|
|
Log::setColoredOutput(true);
|
|
#endif
|
|
|
|
if(argc < 2) {
|
|
Log::error << "Usage: " << argv[0] << " <file> [<file2> ....]";
|
|
return 1;
|
|
}
|
|
|
|
Search search;
|
|
for(int i = 1; i < argc; ++i) {
|
|
Log::info << "Load File: " << argv[i];
|
|
search.addFile(argv[i]);
|
|
}
|
|
|
|
signal(SIGINT, sig_handler);
|
|
|
|
while(run) {
|
|
Log::info << "Enter Search String: ";
|
|
std::string searchterm;
|
|
std::cin >> searchterm;
|
|
|
|
if(!run) break;
|
|
|
|
Log::info << "Enter Flags: [RI]";
|
|
std::string flags;
|
|
std::cin >> flags;
|
|
Searchflags parsedflags = Search::fromString(flags);
|
|
|
|
if(!run) break;
|
|
|
|
std::list<const Message*> results = search.search(searchterm, parsedflags);
|
|
Log::info << results.size() << " results";
|
|
if(results.size()) {
|
|
Log::info << "Print results?";
|
|
char c;
|
|
std::cin >> c;
|
|
|
|
if(!run) break;
|
|
|
|
if(c == 'y' || c == 'Y') {
|
|
//print results
|
|
for(const Message* m : results) {
|
|
Log::info << search.getShortChatname(m->chatid) << ": (" << m->messageid << ") " << m->text;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Log::stop();
|
|
return 0;
|
|
}
|