| // 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; | 
 | } |