aboutsummaryrefslogtreecommitdiff
path: root/programs/src/kconfig/symlist.c
diff options
context:
space:
mode:
authorKarel Kočí <cynerd@email.cz>2014-12-14 19:28:28 +0100
committerKarel Kočí <cynerd@email.cz>2014-12-14 19:28:28 +0100
commit4ec68e612e5d6670a154677b4c8914f22153b122 (patch)
tree7fa4379e01336d0ac4e3613bb6b4d6ea7e66a04e /programs/src/kconfig/symlist.c
parent5b99a9efbdd7026185266d71fca9615e124a6132 (diff)
downloadlinux-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.c49
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);
+}