1 #include "merge/merge.C" 6 ::printf(
"Gaudi merge facility for ROOT tree based files.\n" 8 "gaudi_merge -o <output-file> -i <input-file 1> [ -i <input-file 2> ...]\n\n" 9 "input- and output files may specify any legal (ROOT) file name.\n" 10 " -output Specify output file name.\n" 11 " -input Specify input file name.\n" 12 " -debug Switch debug flag on.\n" 17 static ErrorHandlerFunc_t s_err =
nullptr;
18 static void err_handler(Int_t
level, Bool_t abort_bool,
const char *
location,
const char *
msg)
20 if ( msg &&
strstr(msg,
"no dictionary for class") )
return;
21 s_err(level,abort_bool, location, msg);
25 bool dbg =
false, fixup=
true;
28 for(
int i=1; i <
argc; ++i) {
29 if ( *argv[i] ==
'-' ) {
30 switch(::
toupper(*(argv[i]+1))) {
38 if ( i+1 < argc ) output = argv[i+1];
42 if ( i+1 < argc ) input.push_back(argv[i+1]);
50 if ( input.empty() ) {
51 ::printf(
"\nERROR: No input file(s) supplied\n\n");
54 else if ( output.empty() ) {
55 ::printf(
"\nERROR: No output file supplied.\n\n");
58 gROOT->SetBatch(kTRUE);
59 s_err = SetErrorHandler(err_handler);
60 for(
size_t i=0; i<input.size();++i) {
61 const string& in = input[i];
62 bool do_fixup = fixup && ((i+1)==input.size());
65 int result = merge(output.c_str(),in.c_str(),do_fixup,dbg);
66 if ( result == MERGE_ERROR ) {
67 printf(
"\nERROR: File merge failed after %ld files.\n\n",
long(i+1));
void usage(std::string argv0)
int main(int argc, char **argv)
void toupper(std::string &s)