{
enum Mode {Undefined, Add, Delete, Extract, Merge, Split};
Mode mode=Undefined;
if(argc>1) {
switch (argv[1][0]) {
case 'A':
mode=Add;
break;
case 'D':
mode=Delete;
break;
case 'E':
mode=Extract;
break;
case 'M':
mode=Merge;
break;
case 'S':
mode=Split;
break;
default:
break;
}
}
if(mode!=Undefined) {
for(int i=2; i<argc; i++) {
argv[i-1]=argv[i];
}
argc--;
}
CoreApplication a(argc, argv, help);
AbstractTarget * t=0;
switch(mode) {
case Add:
t=new TargetAdd();
break;
case Delete:
App::stream() << tr("gptarget: mode 'Delete' currently not supported. Request it to the developers if needed.") << endl;
return 2;
case Extract:
t=new TargetExtract();
break;
case Merge:
t=new TargetMerge();
break;
case Split:
App::stream() << tr("gptarget: mode 'Split' currently not supported. Request it to the developers if needed.") << endl;
return 2;
case Undefined:
App::stream() << tr("gptarget: mode not specified, see -help") << endl;
return 2;
}
t->setOptions(argc, argv);
int exitCode=t->execute();
delete t;
return exitCode;
}