@@ -24,11 +24,11 @@ @interface ObjFWNew: OFObject @end extern void newApp(OFString *); -extern void newClass(OFString *); +extern void newClass(OFString *, OFString *); OF_APPLICATION_DELEGATE(ObjFWNew) static void showUsage(void) @@ -41,31 +41,37 @@ @implementation ObjFWNew - (void)applicationDidFinishLaunching { bool app, class; + OFString *superclass = nil; const OFOptionsParserOption options[] = { { '\0', @"app", 0, &app, NULL }, { '\0', @"class", 0, &class, NULL }, + { '\0', @"superclass", 1, NULL, &superclass }, { '\0', nil, 0, NULL, NULL } }; OFOptionsParser *optionsParser; OFUnichar option; optionsParser = [OFOptionsParser parserWithOptions: options]; while ((option = [optionsParser nextOption]) != '\0') - if (option == '?') + if (option == '?' || option == ':' || option == '=') showUsage(); if ((app ^ class) != 1 || optionsParser.remainingArguments.count != 1) showUsage(); + if (superclass && !class) + showUsage(); + if (app) newApp(optionsParser.remainingArguments.firstObject); else if (class) - newClass(optionsParser.remainingArguments.firstObject); + newClass(optionsParser.remainingArguments.firstObject, + superclass); else showUsage(); [OFApplication terminate]; } @end