diff options
author | Karel Kočí <cynerd@email.cz> | 2015-03-22 22:05:56 +0100 |
---|---|---|
committer | Karel Kočí <cynerd@email.cz> | 2015-03-22 22:05:56 +0100 |
commit | 3b4fbaa22233e764f6b94effd1b21c494061d32c (patch) | |
tree | a7da885e905077137f61f9c5898ade4cbc9da5e5 /programs/src/kconfig_parser/kconfig_parser.c | |
parent | f0ade98600d1fdcaeb4476ee80fb12b834f61f84 (diff) | |
download | linux-conf-perf-3b4fbaa22233e764f6b94effd1b21c494061d32c.tar.gz linux-conf-perf-3b4fbaa22233e764f6b94effd1b21c494061d32c.tar.bz2 linux-conf-perf-3b4fbaa22233e764f6b94effd1b21c494061d32c.zip |
kconfig_parser: Fix rev_dep and implement verbose level output
After this fix, generated dependency should be all right.
Verbose output implementation is only temporally.
It needs better implementation.
And command line arguments should be parsed with argp.
Diffstat (limited to 'programs/src/kconfig_parser/kconfig_parser.c')
-rw-r--r-- | programs/src/kconfig_parser/kconfig_parser.c | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/programs/src/kconfig_parser/kconfig_parser.c b/programs/src/kconfig_parser/kconfig_parser.c index c4ee358..ef49551 100644 --- a/programs/src/kconfig_parser/kconfig_parser.c +++ b/programs/src/kconfig_parser/kconfig_parser.c @@ -10,9 +10,14 @@ #include <unistd.h> #include <locale.h> #include <stdbool.h> +#include <argp.h> #include "kconfig/lkc.h" #include "symlist.h" #include "output.h" +#include "macros.h" + +int verbose_level; +char *file; struct symlist *gsymlist; int noname_num; @@ -21,12 +26,22 @@ void build_symlist(); void cpy_dep(); int main(int argc, char **argv) { + // TODO argp + verbose_level = 1; + int i; + for (i = 0; i < argc; i++) { + if (!strcmp(argv[i], "-v")) + verbose_level++; + else if (file == NULL) + file = argv[i]; + } + if (argc < 2) { - printf("No input file specified\n"); + Eprintf("No input file specified\n"); exit(1); } if (argc < 3) { - printf("No output folder specified\n"); + Eprintf("No output folder specified\n"); exit(2); } @@ -73,23 +88,24 @@ void cpy_dep() { for_all_symbols(i, sym) { if ((sym->type == S_BOOLEAN || sym->type == S_TRISTATE) && strstr(sym->name, "NONAMEGEN") == NULL) { - printf("working: %s\n", sym->name); + Iprintf("working: %s\n", sym->name); el = symlist_find(gsymlist, sym->name); if (sym->dir_dep.expr != NULL) { - printf_original(gsymlist, sym->dir_dep.expr); - printf("Direct:\n"); - el->be = kconfig_cnfexpr(gsymlist, sym->dir_dep.expr); - cnf_printf(el->be); + if (verbose_level > 2) + printf_original(gsymlist, sym->dir_dep.expr); + el->be = kconfig_cnfexpr(gsymlist, false, sym->dir_dep.expr); + Iprintf("Direct:\n"); + if (verbose_level > 2) + cnf_printf(el->be); } if (sym->rev_dep.expr != NULL) { - if (!strcmp(sym->name, "CRC32")) - continue; - printf_original(gsymlist, sym->rev_dep.expr); - printf("Revers:\n"); - el->re_be = kconfig_cnfexpr(gsymlist, sym->rev_dep.expr); - cnf_printf(el->re_be); - el->re_be = kconfig_cnfexpr(gsymlist, sym->rev_dep.expr); + if (verbose_level > 2) + printf_original(gsymlist, sym->rev_dep.expr); + el->re_be = kconfig_cnfexpr(gsymlist, true, sym->rev_dep.expr); + Iprintf("Revers:\n"); + if (verbose_level > 2) + cnf_printf(el->re_be); } } } |