summaryrefslogtreecommitdiffstats
path: root/scripts/kconfig/mnconf-common.c
diff options
context:
space:
mode:
authorMasahiro Yamada <masahiroy@kernel.org>2023-12-03 19:25:23 +0900
committerMasahiro Yamada <masahiroy@kernel.org>2023-12-10 15:34:37 +0900
commit6c07fd84977b605b6a4ceb03b38e6325974f06d6 (patch)
tree118ad994fb87821f44783ae87375d8714b55e638 /scripts/kconfig/mnconf-common.c
parentd821f8a26efb6789666d70ce7a8f27df6c33c12e (diff)
downloadlinux-stable-6c07fd84977b605b6a4ceb03b38e6325974f06d6.tar.gz
linux-stable-6c07fd84977b605b6a4ceb03b38e6325974f06d6.tar.bz2
linux-stable-6c07fd84977b605b6a4ceb03b38e6325974f06d6.zip
kconfig: factor out common code shared by mconf and nconf
Separate out the duplicated code to mnconf-common.c. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Diffstat (limited to 'scripts/kconfig/mnconf-common.c')
-rw-r--r--scripts/kconfig/mnconf-common.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/scripts/kconfig/mnconf-common.c b/scripts/kconfig/mnconf-common.c
new file mode 100644
index 000000000000..18cb9a6c5aaa
--- /dev/null
+++ b/scripts/kconfig/mnconf-common.c
@@ -0,0 +1,53 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include "expr.h"
+#include "list.h"
+#include "mnconf-common.h"
+
+int jump_key_char;
+
+int next_jump_key(int key)
+{
+ if (key < '1' || key > '9')
+ return '1';
+
+ key++;
+
+ if (key > '9')
+ key = '1';
+
+ return key;
+}
+
+int handle_search_keys(int key, size_t start, size_t end, void *_data)
+{
+ struct search_data *data = _data;
+ struct jump_key *pos;
+ int index = 0;
+
+ if (key < '1' || key > '9')
+ return 0;
+
+ list_for_each_entry(pos, data->head, entries) {
+ index = next_jump_key(index);
+
+ if (pos->offset < start)
+ continue;
+
+ if (pos->offset >= end)
+ break;
+
+ if (key == index) {
+ data->target = pos->target;
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+int get_jump_key_char(void)
+{
+ jump_key_char = next_jump_key(jump_key_char);
+
+ return jump_key_char;
+}