On Thu, Dec 19, 2024 at 4:23 PM Rolf Eike Beer <eb@xxxxxxxxx> wrote: > > This has a much nicer output without manual processing. It also adds window > management options from Qt for free. > > Signed-off-by: Rolf Eike Beer <eb@xxxxxxxxx> > --- This did not reflect my previous comment. https://lore.kernel.org/linux-kbuild/CAK7LNASdLT-KQA7+Vn+Y2ZJeropcR-sjmv8p2=DCgzCyQdJAEw@xxxxxxxxxxxxxx/ > scripts/kconfig/qconf.cc | 44 ++++++++++++++++------------------------ > 1 file changed, 17 insertions(+), 27 deletions(-) > > diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc > index eaa465b0ccf9..4d500cc9ba9d 100644 > --- a/scripts/kconfig/qconf.cc > +++ b/scripts/kconfig/qconf.cc > @@ -8,6 +8,7 @@ > #include <QActionGroup> > #include <QApplication> > #include <QCloseEvent> > +#include <QCommandLineParser> > #include <QDebug> > #include <QFileDialog> > #include <QLabel> > @@ -1785,41 +1786,30 @@ void fixup_rootmenu(struct menu *menu) > } > } > > -static const char *progname; > - > -static void usage(void) > -{ > - printf("%s [-s] <config>\n", progname); > - exit(0); > -} > - > int main(int ac, char** av) > { > ConfigMainWindow* v; > - const char *name; > + configApp = new QApplication(ac, av); > + QCommandLineParser cmdline; > + QCommandLineOption silent("s", "silent"); > > - progname = av[0]; > - if (ac > 1 && av[1][0] == '-') { > - switch (av[1][1]) { > - case 's': > - conf_set_message_callback(NULL); > - break; > - case 'h': > - case '?': > - usage(); > - } > - name = av[2]; > - } else > - name = av[1]; > - if (!name) > - usage(); > + cmdline.addOption(silent); > + cmdline.addHelpOption(); > + cmdline.addPositionalArgument("Kconfig", "Top-level Kconfig file", "Kconfig"); > + > + cmdline.process(*configApp); > + > + if (cmdline.isSet(silent)) > + conf_set_message_callback(NULL); > > - conf_parse(name); > + QStringList args = cmdline.positionalArguments(); > + if (args.isEmpty()) > + cmdline.showHelp(1); > + > + conf_parse(args.first().toLocal8Bit().constData()); > fixup_rootmenu(&rootmenu); > //zconfdump(stdout); > > - configApp = new QApplication(ac, av); > - > configSettings = new ConfigSettings(); > configSettings->beginGroup("/kconfig/qconf"); > v = new ConfigMainWindow(); > -- > 2.47.1 > > > -- > Rolf Eike Beer > > emlix GmbH > Headquarters: Berliner Str. 12, 37073 Göttingen, Germany > Phone +49 (0)551 30664-0, e-mail info@xxxxxxxxx > District Court of Göttingen, Registry Number HR B 3160 > Managing Directors: Heike Jordan, Dr. Uwe Kracke > VAT ID No. DE 205 198 055 > Office Berlin: Panoramastr. 1, 10178 Berlin, Germany > Office Bonn: Bachstr. 6, 53115 Bonn, Germany > http://www.emlix.com > > emlix - your embedded Linux partner > > -- Best Regards Masahiro Yamada