diff options
author | Karel Kočí <cynerd@email.cz> | 2014-12-14 19:28:28 +0100 |
---|---|---|
committer | Karel Kočí <cynerd@email.cz> | 2014-12-14 19:28:28 +0100 |
commit | 4ec68e612e5d6670a154677b4c8914f22153b122 (patch) | |
tree | 7fa4379e01336d0ac4e3613bb6b4d6ea7e66a04e /programs/src/kconfig/symlist.c | |
parent | 5b99a9efbdd7026185266d71fca9615e124a6132 (diff) | |
download | linux-conf-perf-4ec68e612e5d6670a154677b4c8914f22153b122.tar.gz linux-conf-perf-4ec68e612e5d6670a154677b4c8914f22153b122.tar.bz2 linux-conf-perf-4ec68e612e5d6670a154677b4c8914f22153b122.zip |
Add kconfig_parser
kconfig_parser is placed to new folder tree. In folder "programs" will be all programs.
Files in folder programs/src/kconfig/kconfig are taken from kernel v3.18-rc3. In future, they should be updated if new changes will be added to kernel.
Diffstat (limited to 'programs/src/kconfig/symlist.c')
-rw-r--r-- | programs/src/kconfig/symlist.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/programs/src/kconfig/symlist.c b/programs/src/kconfig/symlist.c new file mode 100644 index 0000000..7dcd2c6 --- /dev/null +++ b/programs/src/kconfig/symlist.c @@ -0,0 +1,49 @@ +#include "symlist.h" + +struct symlist *symlist_create() { + struct symlist *ret; + ret = malloc(sizeof(struct symlist)); + ret->size = 2; + ret->pos = 0; + ret->array = malloc(ret->size * sizeof(struct symlist_el)); + return ret; +} + +void symlist_add(struct symlist *sl, char *name) { + if (sl->pos >= sl->size) { + sl->size *= 2; + sl->array = + realloc(sl->array, sl->size * sizeof(struct symlist_el)); + } + sl->array[sl->pos].id = sl->pos + 1; + sl->array[sl->pos].name = name; + sl->array[sl->pos].be = NULL; + sl->pos++; +} + +struct symlist_el *symlist_find(struct symlist *sl, char *name) { + int i = 0; + while (i < sl->pos) { + if (!strcmp(name, sl->array[i].name)) + return &sl->array[i]; + i++; + } + return NULL; +} + +void symlist_print(struct symlist *sl) { + int i; + for (i = 0; i < sl->pos; i++) { + printf("%d:%s\n", sl->array[i].id, sl->array[i].name); + if (sl->array[i].be != NULL) { + printf(" "); + boolexp_print(sl->array[i].be); + printf("\n"); + } + } +} + +void symlist_free(struct symlist *sl) { + free(sl->array); + free(sl); +} |