diff options
Diffstat (limited to 'scripts/permute_conf')
-rw-r--r-- | scripts/permute_conf/.gitignore | 1 | ||||
-rw-r--r-- | scripts/permute_conf/Makefile | 25 | ||||
-rw-r--r-- | scripts/permute_conf/constlist.h | 7 | ||||
-rw-r--r-- | scripts/permute_conf/dotconf.c | 108 | ||||
-rw-r--r-- | scripts/permute_conf/dotconf.h | 19 | ||||
-rw-r--r-- | scripts/permute_conf/menudata.c | 58 | ||||
-rw-r--r-- | scripts/permute_conf/menudata.h | 20 | ||||
-rw-r--r-- | scripts/permute_conf/permute_conf.c | 180 | ||||
-rw-r--r-- | scripts/permute_conf/permutelist.h | 17 |
9 files changed, 0 insertions, 435 deletions
diff --git a/scripts/permute_conf/.gitignore b/scripts/permute_conf/.gitignore deleted file mode 100644 index 7fe1c05..0000000 --- a/scripts/permute_conf/.gitignore +++ /dev/null @@ -1 +0,0 @@ -permute_conf diff --git a/scripts/permute_conf/Makefile b/scripts/permute_conf/Makefile deleted file mode 100644 index e0f7cd2..0000000 --- a/scripts/permute_conf/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -MAKEFLAGS += --no-builtin-rules -.PHONY: all clean -.SUFFIXES: - -all: permute_conf - -KCONFIG_PREFIX = ../shared/kconfig -include $(KCONFIG_PREFIX)/files.mk - -SRC = permute_conf.c \ - menudata.c \ - dotconf.c -OBJ = $(patsubst %.c,%.o,$(SRC)) -CFLAGS = -O0 -Wall -ggdb -DDEBUG -INCLUDES = -I../shared - -%.o: %.c - gcc -c $(CFLAGS) -o $@ $^ $(INCLUDES) - -permute_conf: $(OBJ) $(KCONFIG_OBJ) - gcc -o $@ $^ - -clean:: - $(RM) $(OBJ) - $(RM) permute_conf diff --git a/scripts/permute_conf/constlist.h b/scripts/permute_conf/constlist.h deleted file mode 100644 index 01f172a..0000000 --- a/scripts/permute_conf/constlist.h +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> - -#ifndef _CONSTLIST_H_ -#define _CONSTLIST_H_ - -#endif /* _CONSTLIST_H_ */ diff --git a/scripts/permute_conf/dotconf.c b/scripts/permute_conf/dotconf.c deleted file mode 100644 index bf8e067..0000000 --- a/scripts/permute_conf/dotconf.c +++ /dev/null @@ -1,108 +0,0 @@ -#include "dotconf.h" - -void dotconfig_read(bool * reqsave) { - FILE *f; - f = fopen(DOTCONFIG_FILE, "r"); - if (f == NULL) { - *reqsave = true; - return; - } - - char buffer[READBUFFER_SIZE]; - while (fgets(buffer, READBUFFER_SIZE, f) != NULL) { - if (buffer[0] == '\0' || buffer[1] == '\0') - continue; - if (buffer[0] != '#') { - char *wstr = buffer + 7; - char *end = strchr(wstr, '='); - *end = '\0'; - struct symbol *sym = sym_find(wstr); - if (sym->type != S_BOOLEAN && sym->type != S_TRISTATE) - continue; - if ((sym_get_tristate_value(sym) == yes && *(end + 1) != 'y') - || (sym_get_tristate_value(sym) == no - && *(end + 1) != 'n')) - *reqsave = true; - struct property *prop; - for_all_prompts(sym, prop) { - if (prop->menu->data == NULL) - prop->menu->data = menudata_new(); - } - } - } - - fclose(f); - - struct menu *wmenu; - struct menu **stack; - size_t stack_size = 2, stack_pos = 0; - stack = malloc(stack_size * sizeof(struct menu *)); - wmenu = rootmenu.list; - while (wmenu != NULL) { - if (wmenu->list != NULL) { - if (stack_pos >= stack_size) { - stack_size *= 2; - stack = realloc(stack, stack_size * sizeof(struct menu *)); - } - stack[stack_pos++] = wmenu->list; - } - if (wmenu->data == NULL) { - if (wmenu->sym == NULL || wmenu->sym->name == NULL) { - wmenu->data = menudata_new(); - } else { - wmenu->data = menudata_new(); - menudata_set_permute(wmenu, true); - } - } - wmenu = wmenu->next; - if (wmenu == NULL && stack_pos > 0) - wmenu = stack[--stack_pos]; - } - while (wmenu != NULL) { - if (wmenu->list != NULL) - stack[stack_pos++] = wmenu->list; - if (wmenu->data == NULL) { - if (wmenu->sym == NULL || wmenu->sym->name == NULL) { - wmenu->data = menudata_new(); - } else { - wmenu->data = menudata_new(); - menudata_set_permute(wmenu, true); - } - } - wmenu = wmenu->next; - if (wmenu == NULL && stack_pos > 0) - wmenu = stack[--stack_pos]; - } -} - -void dotconfig_write(void) { - FILE *f; - f = fopen(DOTCONFIG_FILE, "w"); - - struct symbol *sym; - struct property *prop; - int i; - unsigned variable = 0, fixed = 0; - for_all_symbols(i, sym) - if ((sym->type == S_BOOLEAN || sym->type == S_TRISTATE) - && sym->name != NULL) { - for_all_prompts(sym, prop) { - if (prop->menu->data == NULL - || !((struct menudata *) prop->menu->data)->permute) { - fprintf(f, "CONFIG_%s=%s\n", sym->name, - sym_get_tristate_value(sym) == no ? "n" : "y"); - fixed++; - break; - } else { - variable++; - if (verbose_level > 1) - printf("%s=%s\n", sym->name, - sym_get_tristate_value(sym) == no ? "n" : "y"); - } - } - } - - printf("Variable: %d, Fixed: %d\n", variable, fixed); - - fclose(f); -} diff --git a/scripts/permute_conf/dotconf.h b/scripts/permute_conf/dotconf.h deleted file mode 100644 index 34fa8db..0000000 --- a/scripts/permute_conf/dotconf.h +++ /dev/null @@ -1,19 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <stdbool.h> - -#include <kconfig/lkc.h> -#include <macros.h> -#include "menudata.h" - -#ifndef _DOTCONF_H_ -#define _DOTCONF_H_ - -#define DOTCONFIG_FILE "../dot_config" -#define READBUFFER_SIZE 128 - -void dotconfig_read(bool * reqsave); -void dotconfig_write(void); - -#endif /* _DOTCONF_H_ */ diff --git a/scripts/permute_conf/menudata.c b/scripts/permute_conf/menudata.c deleted file mode 100644 index 88910ab..0000000 --- a/scripts/permute_conf/menudata.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "menudata.h" - -struct menudata *menudata_new(void) { - struct menudata *rtn; - rtn = calloc(1, sizeof(struct menudata)); - return rtn; -} - -void menudata_set_permute(struct menu *m, bool perm) { - ((struct menudata *) m->data)->permute = perm; - struct menu *prnt; - for (prnt = m; prnt != NULL; prnt = prnt->parent) { - menudata_cal(prnt); - } -} - -void menudata_set_all_permute(struct menu *m, bool perm) { - menudata_set_permute(m, perm); - - struct menu **stack; - size_t stack_size = 2, stack_pos = 0; - stack = malloc(stack_size * sizeof(struct menu *)); - - m = m->list; - while (m != NULL) { - if (m->data == NULL) - m->data = menudata_new(); - ((struct menudata *) m->data)->permute = perm; - ((struct menudata *) m->data)->subpermute = perm; - - if (m->list != NULL) { - if (stack_pos >= stack_size) { - stack_size *= 2; - stack = realloc(stack, stack_size * sizeof(struct menu *)); - } - stack[stack_pos++] = m->list; - } - - m = m->next; - if (m == NULL && stack_pos > 0) - m = stack[--stack_pos]; - } - -} - -void menudata_cal(struct menu *m) { - bool subperm = false; - struct menu *w; - for (w = m->list; w != NULL; w = w->next) { - if (w->data != NULL && (((struct menudata *) w->data)->permute - || ((struct menudata *) w->data)-> - subpermute)) { - if (m->data == NULL) - m->data = menudata_new(); - ((struct menudata *) m->data)->subpermute = subperm; - } - } -} diff --git a/scripts/permute_conf/menudata.h b/scripts/permute_conf/menudata.h deleted file mode 100644 index a273891..0000000 --- a/scripts/permute_conf/menudata.h +++ /dev/null @@ -1,20 +0,0 @@ -#include <stdlib.h> -#include <stdbool.h> -#include <stdio.h> - -#include <kconfig/lkc.h> - -#ifndef _MENUDATA_H_ -#define _MENUDATA_H_ - -struct menudata { - bool permute; - bool subpermute; -}; - -struct menudata *menudata_new(void); -void menudata_set_permute(struct menu *m, bool perm); -void menudata_set_all_permute(struct menu *m, bool perm); -void menudata_cal(struct menu *m); - -#endif /* _MENUDATA_H_ */ diff --git a/scripts/permute_conf/permute_conf.c b/scripts/permute_conf/permute_conf.c deleted file mode 100644 index ec9abf0..0000000 --- a/scripts/permute_conf/permute_conf.c +++ /dev/null @@ -1,180 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> -#include <stdbool.h> -#include <string.h> -#include <locale.h> -#include <libintl.h> -#include <kconfig/lkc.h> -#include <macros.h> -#include <build_files.h> -#include "menudata.h" -#include "dotconf.h" - -#define INPUT_SIZE 1024 - -int verbose_level; -char *file; - -bool reqsave; - -void printf_help(void); -void exit_save(void); - -int main(int argc, char **argv) { - verbose_level = 1; - int i; - for (i = 1; i < argc; i++) { - if (!strcmp(argv[i], "-v")) - verbose_level++; - else if (file == NULL) - file = argv[i]; - else { - Eprintf("Unknown parameter: %s\n", argv[i]); - exit(1); - } - } - - if (file == NULL) { - Eprintf("No Kconfig input file specified\n"); - exit(2); - } - - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - - conf_parse(file); - conf_read(".config"); - - dotconfig_read(&reqsave); - - struct menu *wroot, *wmenu, *wwmenu; - wroot = &rootmenu; - int menucount; - char *input; - int inputi; - input = malloc(INPUT_SIZE * sizeof(char)); - - printf_help(); - - rootmenu.data = menudata_new(); - while (1) { - printf("\n%s\n", wroot->prompt->text); - wmenu = wroot->list; - menucount = 0; - while (wmenu != NULL) { - if (wmenu->prompt != NULL - && (wmenu->sym == NULL || wmenu->sym->type == S_BOOLEAN - || wmenu->sym->type == S_TRISTATE - || wmenu->sym->type == S_OTHER)) { - if (wmenu->data == NULL) - wmenu->data = menudata_new(); - printf("%3d", ++menucount); - if (((struct menudata *) wmenu->data)->permute) { - printf("<O>"); - } else if (((struct menudata *) wmenu->data)->subpermute) { - printf("<->"); - } else { - printf("<X>"); - } - if (wmenu->sym == NULL || sym_is_choice(wmenu->sym)) - printf(" %s -->\n", wmenu->prompt->text); - else - printf(" %s\n", wmenu->prompt->text); - } - wmenu = wmenu->next; - } - - input: - printf("Input: "); - fgets(input, INPUT_SIZE, stdin); - switch (input[0]) { - case 'e': - case 'v': - case 'f': - inputi = atoi(input + 1); - if (inputi <= 0 && inputi > menucount) - goto input; - int y = 0; - wwmenu = wroot->list; - while (1) { - if (wwmenu->prompt != NULL - && (wwmenu->sym == NULL - || wwmenu->sym->type == S_BOOLEAN - || wwmenu->sym->type == S_TRISTATE - || wwmenu->sym->type == S_OTHER)) - y++; - if (y >= inputi) - break; - wwmenu = wwmenu->next; - } - break; - case 'u': - if (wroot->parent == NULL) - goto input; - wroot = wroot->parent; - break; - case 's': - reqsave = false; - dotconfig_write(); - printf("Configuration saved...\n"); - case 'r': - break; - case 'q': - goto quit; - case 'h': - printf_help(); - default: - goto input; - } - switch (input[0]) { - case 'e': - if (wwmenu->list != NULL) - wroot = wwmenu; - else - goto input; - break; - case 'v': - if (input[1] == 'a') { - menudata_set_all_permute(wwmenu, true); - } else { - menudata_set_permute(wwmenu, true); - } - reqsave = true; - break; - case 'f': - menudata_set_permute(wwmenu, false); - reqsave = true; - break; - } - } - - quit: - exit_save(); - - return 0; -} - -void printf_help(void) { - printf("As input are accepted these commands:\n"); - printf(" e <NUM> Enter menu according to number.\n"); - printf(" u Go to previous upper menu.\n"); - printf(" v <NUM> Set config as variable.\n"); - printf(" va <NUM> Set menu and all its submenus as variable.\n"); - printf(" f <NUM> Set menu and all its submenus as fixed.\n"); - printf(" s Save settings.\n"); - printf(" r Reprint menu.\n"); - printf(" h Prints this text.\n"); - printf(" q Quit this program\n"); -} - -void exit_save(void) { - if (!reqsave) - return; - printf("Unsaved chages. Save (y/N): "); - int ch = fgetc(stdin); - if (ch == 'y' || ch == 'Y') { - dotconfig_write(); - printf("Configuration saved.\n"); - } -} diff --git a/scripts/permute_conf/permutelist.h b/scripts/permute_conf/permutelist.h deleted file mode 100644 index 725f6d6..0000000 --- a/scripts/permute_conf/permutelist.h +++ /dev/null @@ -1,17 +0,0 @@ -#include <stdlib.h> -#include <stdbool.h> -#include <kconfig/lkc.h> - -#ifndef _PERMUTELIST_H_ -#define _PERMUTELIST_H_ - -struct permutelist { - struct menu *permute; - size_t size, pos; -}; - -void permutelist_add(struct menu *m); -void permutelist_remove(struct menu *m); -bool permutelist_is_permute(struct menu *m); - -#endif /* _PERMUTELIST_H_ */ |