Gaudi Framework, version v23r5

Home   Generated: Wed Nov 28 2012
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
merge.cpp
Go to the documentation of this file.
1 #include "merge/merge.C"
2 #include <cstdlib>
3 
4 static int usage() {
5  ::printf("Gaudi merge facility for ROOT tree based files.\n"
6  " Usage: \n"
7  "gaudi_merge -o <output-file> -i <input-file 1> [ -i <input-file 2> ...]\n\n"
8  "input- and output files may specify any legal (ROOT) file name.\n"
9  " -output Specify output file name.\n"
10  " -input Specify input file name.\n"
11  " -debug Switch debug flag on.\n"
12  );
13  return 1;
14 }
15 
16 int main(int argc, char** argv) {
17  bool dbg = false, fixup=true;
18  vector<string> input;
19  string output;
20  for(int i=1; i < argc; ++i) {
21  if ( *argv[i] == '-' ) {
22  switch(::toupper(*(argv[i]+1))) {
23  case 'N':
24  fixup = false;
25  break;
26  case 'D':
27  dbg = true;
28  break;
29  case 'O':
30  if ( i+1 < argc ) output = argv[i+1];
31  ++i;
32  break;
33  case 'I':
34  if ( i+1 < argc ) input.push_back(argv[i+1]);
35  ++i;
36  break;
37  default:
38  return usage();
39  }
40  }
41  }
42  if ( input.empty() ) {
43  ::printf("\nERROR: No input file(s) supplied\n\n");
44  return usage();
45  }
46  else if ( output.empty() ) {
47  ::printf("\nERROR: No output file supplied.\n\n");
48  return usage();
49  }
50  gROOT->SetBatch(kTRUE);
51  for(size_t i=0; i<input.size();++i) {
52  const string& in = input[i];
53  bool do_fixup = fixup && ((i+1)==input.size());
54  //::printf("+++ Target:%s\n+++ Source file:%s Fixup:%s Dbg:%s %d %d\n",
55  // output.c_str(),in.c_str(),do_fixup ? "YES" : "NO",dbg ? "YES" : "NO",i,input.size());
56  int result = merge(output.c_str(),in.c_str(),do_fixup,dbg);
57  if ( result == MERGE_ERROR ) {
58  printf("\nERROR: File merge failed after %ld files.\n\n",long(i+1));
59  return 1;
60  }
61  }
62  return 0;
63 }

Generated at Wed Nov 28 2012 12:17:18 for Gaudi Framework, version v23r5 by Doxygen version 1.8.2 written by Dimitri van Heesch, © 1997-2004