diff options
author | Karel Kočí <cynerd@email.cz> | 2015-05-06 11:55:16 +0200 |
---|---|---|
committer | Karel Kočí <cynerd@email.cz> | 2015-05-07 13:25:59 +0200 |
commit | 96b508f54e069e1b3ae5a4a9f8ebf122a6dd76bf (patch) | |
tree | 4ec908d06872f228b081c0932874c071b67962c8 | |
parent | 4e2a6b5219f469c4b05628a0133340ba2fa2d807 (diff) | |
download | linux-conf-perf-96b508f54e069e1b3ae5a4a9f8ebf122a6dd76bf.tar.gz linux-conf-perf-96b508f54e069e1b3ae5a4a9f8ebf122a6dd76bf.tar.bz2 linux-conf-perf-96b508f54e069e1b3ae5a4a9f8ebf122a6dd76bf.zip |
Add initial implementation of setpermute
-rw-r--r-- | scripts/setpermute/Makefile | 23 | ||||
-rw-r--r-- | scripts/setpermute/constlist.h | 7 | ||||
-rw-r--r-- | scripts/setpermute/menudata.h | 16 | ||||
-rw-r--r-- | scripts/setpermute/permutelist.h | 17 | ||||
-rwxr-xr-x | scripts/setpermute/setpermute | bin | 0 -> 130181 bytes | |||
-rw-r--r-- | scripts/setpermute/setpermute.c | 132 |
6 files changed, 195 insertions, 0 deletions
diff --git a/scripts/setpermute/Makefile b/scripts/setpermute/Makefile new file mode 100644 index 0000000..734a12e --- /dev/null +++ b/scripts/setpermute/Makefile @@ -0,0 +1,23 @@ +MAKEFLAGS += --no-builtin-rules +.PHONY: all clean +.SUFFIXES: + +all: setpermute + +KCONFIG_PREFIX = ../shared/kconfig +include $(KCONFIG_PREFIX)/files.mk + +SRC = setpermute.c +OBJ = $(patsubst %.c,%.o,$(SRC)) +CFLAGS = -O0 -Wall -ggdb -DDEBUG +INCLUDES = -I../shared + +%.o: %.c + gcc -c $(CFLAGS) -o $@ $^ $(INCLUDES) + +setpermute: $(OBJ) $(KCONFIG_OBJ) + gcc -o $@ $^ + +clean:: + $(RM) $(OBJ) + $(RM) setpermute diff --git a/scripts/setpermute/constlist.h b/scripts/setpermute/constlist.h new file mode 100644 index 0000000..01f172a --- /dev/null +++ b/scripts/setpermute/constlist.h @@ -0,0 +1,7 @@ +#include <stdlib.h> +#include <stdio.h> + +#ifndef _CONSTLIST_H_ +#define _CONSTLIST_H_ + +#endif /* _CONSTLIST_H_ */ diff --git a/scripts/setpermute/menudata.h b/scripts/setpermute/menudata.h new file mode 100644 index 0000000..1369106 --- /dev/null +++ b/scripts/setpermute/menudata.h @@ -0,0 +1,16 @@ +#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; +}; + +bool menudata_cal_subpermute(struct menu *m); + +#endif /* _MENUDATA_H_ */ diff --git a/scripts/setpermute/permutelist.h b/scripts/setpermute/permutelist.h new file mode 100644 index 0000000..725f6d6 --- /dev/null +++ b/scripts/setpermute/permutelist.h @@ -0,0 +1,17 @@ +#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_ */ diff --git a/scripts/setpermute/setpermute b/scripts/setpermute/setpermute Binary files differnew file mode 100755 index 0000000..f568a9d --- /dev/null +++ b/scripts/setpermute/setpermute diff --git a/scripts/setpermute/setpermute.c b/scripts/setpermute/setpermute.c new file mode 100644 index 0000000..fc1221c --- /dev/null +++ b/scripts/setpermute/setpermute.c @@ -0,0 +1,132 @@ +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <locale.h> +#include <libintl.h> + +#include <kconfig/lkc.h> +#include <macros.h> +#include <build_files.h> + +#define INPUT_SIZE 1024 + +int verbose_level; +char *file, *folder; + +void printf_help(); + +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 if (folder == NULL) + folder = argv[i]; + else { + Eprintf("Unknown parameter: %s\n", argv[i]); + exit(1); + } + } + + if (file == NULL) { + Eprintf("No Kconfig input file specified\n"); + exit(2); + } + if (folder == NULL) { + Eprintf("No output folder specified\n"); + exit(3); + } + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + conf_parse(file); + conf_read(".config"); + + struct menu *wroot, *wmenu, *wwmenu; + wroot = &rootmenu; + unsigned menucount; + char *input; + int inputi; + input = malloc(INPUT_SIZE * sizeof(char)); + + printf_help(); + + while (1) { + printf("\n%s\n", wroot->prompt->text); + wmenu = wroot->list; + menucount = 0; + while (wmenu != NULL) { + if (wmenu->prompt != NULL) { + if (wmenu->list == NULL) + printf("%3d<X>: %s\n", ++menucount, + wmenu->prompt->text); + else + printf("%3d<X>: %s -->\n", ++menucount, + 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) + y++; + if (y >= inputi) + break; + wwmenu = wwmenu->next; + } + break; + case 'u': + wmenu = wmenu->parent; + break; + case 'r': + break; + case 'q': + goto quit; + case 'h': + printf_help(); + default: + goto input; + } + switch (input[0]) { + case 'e': + wroot = wwmenu; + break; + case 'v': + break; + case 'f': + break; + } + } + + quit: + + return 0; +} + +void printf_help() { + 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 menu and all its submenus as variable.\n"); + printf(" f <NUM> Set menu and all its submenus as fixed.\n"); + printf(" r Reprint menu.\n"); + printf(" h Prints this text.\n"); + printf(" q Quit this program\n"); +} |