| // SPDX-License-Identifier: GPL-2.0-only | |
| #include <list.h> | |
| #include "expr.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; | |
| } |