static int
get_key_pos(unsigned long key_id)
{
- if (!cache_valid || key_id != cache_key_id) {
+ int position;
+
+ if (cache_valid && key_id == cache_key_id)
+ return cache_key_pos;
+
+ position = lookup_key(key_id);
+
+ if (position >= 0) {
cache_valid = 1;
- cache_key_pos = lookup_key(key_id);
+ cache_key_pos = position;
cache_key_id = key_id;
}
- return cache_key_pos;
+ return position;
}
/* ================================================== */
int
KEY_KeyKnown(unsigned long key_id)
{
- int position;
-
- if (cache_valid && (key_id == cache_key_id)) {
- return 1;
- } else {
-
- position = lookup_key(key_id);
-
- if (position >= 0) {
- /* Store key in cache, we will probably be using it in a
- minute... */
- cache_valid = 1;
- cache_key_pos = position;
- cache_key_id = key_id;
- return 1;
- } else {
- return 0;
- }
- }
+ return get_key_pos(key_id) >= 0;
}
/* ================================================== */