GNU Linux-libre 6.8.7-gnu
[releases.git] / scripts / kconfig / mnconf-common.c
1 // SPDX-License-Identifier: GPL-2.0-only
2 #include "expr.h"
3 #include "list.h"
4 #include "mnconf-common.h"
5
6 int jump_key_char;
7
8 int next_jump_key(int key)
9 {
10         if (key < '1' || key > '9')
11                 return '1';
12
13         key++;
14
15         if (key > '9')
16                 key = '1';
17
18         return key;
19 }
20
21 int handle_search_keys(int key, size_t start, size_t end, void *_data)
22 {
23         struct search_data *data = _data;
24         struct jump_key *pos;
25         int index = 0;
26
27         if (key < '1' || key > '9')
28                 return 0;
29
30         list_for_each_entry(pos, data->head, entries) {
31                 index = next_jump_key(index);
32
33                 if (pos->offset < start)
34                         continue;
35
36                 if (pos->offset >= end)
37                         break;
38
39                 if (key == index) {
40                         data->target = pos->target;
41                         return 1;
42                 }
43         }
44
45         return 0;
46 }
47
48 int get_jump_key_char(void)
49 {
50         jump_key_char = next_jump_key(jump_key_char);
51
52         return jump_key_char;
53 }