32 {
33 bool dbg = false, fixup = true;
34 vector<string> input;
36 for (
int i = 1; i <
argc; ++i ) {
37 if ( *argv[i] == '-' ) {
38 switch (
::toupper( *( argv[i] + 1 ) ) ) {
39 case 'N':
40 fixup = false;
41 break;
42 case 'D':
43 dbg = true;
44 break;
45 case 'O':
47 ++i;
48 break;
49 case 'I':
50 if ( i + 1 < argc ) input.push_back( argv[i + 1] );
51 ++i;
52 break;
53 default:
55 }
56 }
57 }
58 if ( input.empty() ) {
59 ::printf( "\nERROR: No input file(s) supplied\n\n" );
61 }
else if (
output.empty() ) {
62 ::printf( "\nERROR: No output file supplied.\n\n" );
64 }
65 gROOT->SetBatch( kTRUE );
66 s_err = SetErrorHandler( err_handler );
67 for ( size_t i = 0; i < input.size(); ++i ) {
68 const string& in = input[i];
69 bool do_fixup = fixup && ( ( i + 1 ) == input.size() );
70
71
72 int result =
merge(
output.c_str(), in.c_str(), do_fixup, dbg );
73 if ( result == MERGE_ERROR ) {
74 printf( "\nERROR: File merge failed after %ld files.\n\n", long( i + 1 ) );
75 return 1;
76 }
77 }
78 return 0;
79}
void toupper(std::string &s)
void usage(const std::string &argv0)
int merge(const char *target, const char *source, bool fixup=false, bool dbg=true)