Link: https://lore.kernel.org/r/20260217200002.683975158@linuxfoundation.org Tested-by: Florian Fainelli <florian.fainelli@broadcom.com> Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com> Tested-by: Peter Schneider <pschneider1968@googlemail.com> Tested-by: Jon Hunter <jonathanh@nvidia.com> Tested-by: Salvatore Bonaccorso <carnil@debian.org> Tested-by: Brett A C Sheffield <bacs@librecast.net> Tested-by: Mark Brown <broonie@kernel.org> Tested-by: Luna Jernberg <droidbittin@gmail.com> Tested-by: Ronald Warsow <rwarsow@gmx.de> Tested-by: Justin M. Forbes <jforbes@fedoraproject.org> Tested-by: Ron Economos <re@w6rz.net> Tested-by: Miguel Ojeda <ojeda@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
54 lines
794 B
C
54 lines
794 B
C
// 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;
|
|
}
|