mbox: test driver improved

This commit is contained in:
Jean-Francois Dockes 2010-11-30 11:35:21 +01:00
parent 6f431e2455
commit 629e62e2b8

View File

@ -521,6 +521,8 @@ using namespace std;
static char *thisprog; static char *thisprog;
static char usage [] = static char usage [] =
"Test driver for mbox walking function\n"
"mh_mbox [-m num] mboxfile\n"
" \n\n" " \n\n"
; ;
static void static void
@ -534,9 +536,14 @@ RclConfig *RclConfig::getMainConfig()
{ {
return config; return config;
} }
static int op_flags;
#define OPT_MOINS 0x1
#define OPT_m 0x2
//#define OPT_t 0x4
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
string msgnum;
thisprog = argv[0]; thisprog = argv[0];
argc--; argv++; argc--; argv++;
@ -547,9 +554,14 @@ int main(int argc, char **argv)
Usage(); Usage();
while (**argv) while (**argv)
switch (*(*argv)++) { switch (*(*argv)++) {
case 'm': op_flags |= OPT_m; if (argc < 2) Usage();
msgnum = *(++argv);
argc--;
goto b1;
// case 't': op_flags |= OPT_t;break;
default: Usage(); break; default: Usage(); break;
} }
argc--; argv++; b1: argc--; argv++;
} }
if (argc != 1) if (argc != 1)
@ -561,17 +573,38 @@ int main(int argc, char **argv)
cerr << "init failed " << reason << endl; cerr << "init failed " << reason << endl;
exit(1); exit(1);
} }
config->setKeyDir(path_getfather(filename));
MimeHandlerMbox mh("text/x-mail"); MimeHandlerMbox mh("text/x-mail");
if (!mh.set_document_file(filename)) { if (!mh.set_document_file(filename)) {
cerr << "set_document_file failed" << endl; cerr << "set_document_file failed" << endl;
exit(1); exit(1);
} }
if (!msgnum.empty()) {
mh.skip_to_document(msgnum);
if (!mh.next_document()) {
cerr << "next_document failed after skipping to " << msgnum << endl;
exit(1);
}
map<string, string>::const_iterator it =
mh.get_meta_data().find("content");
int size;
if (it == mh.get_meta_data().end()) {
size = -1;
cerr << "No content!!" << endl;
exit(1);
}
cout << "Doc " << msgnum << ":" << endl;
cout << it->second << endl;
exit(0);
}
int docnt = 0; int docnt = 0;
while (mh.has_documents()) { while (mh.has_documents()) {
if (!mh.next_document()) { if (!mh.next_document()) {
cerr << "next_document failed" << endl; cerr << "next_document failed" << endl;
exit(1); exit(1);
} }
docnt++;
map<string, string>::const_iterator it = map<string, string>::const_iterator it =
mh.get_meta_data().find("content"); mh.get_meta_data().find("content");
int size; int size;
@ -581,7 +614,6 @@ int main(int argc, char **argv)
size = it->second.length(); size = it->second.length();
} }
cout << "Doc " << docnt << " size " << size << endl; cout << "Doc " << docnt << " size " << size << endl;
docnt++;
} }
cout << docnt << " documents found in " << filename << endl; cout << docnt << " documents found in " << filename << endl;
exit(0); exit(0);