bug fixes
- fixed aliases not being deleted correctly - added end of file check in parser skip line
This commit is contained in:
parent
1b00896fc7
commit
82b25f1e50
21
hkd.c
21
hkd.c
@ -653,11 +653,10 @@ void parse_config_file (void)
|
|||||||
hotkey_list_destroy(hotkey_list);
|
hotkey_list_destroy(hotkey_list);
|
||||||
hotkey_list = NULL;
|
hotkey_list = NULL;
|
||||||
while (!eof) {
|
while (!eof) {
|
||||||
// FIXME: incorect line counting, specialli for multiline commands
|
// FIXME: incorect line counting, especially for multiline commands
|
||||||
switch (parse_state) {
|
switch (parse_state) {
|
||||||
// First state
|
// First state
|
||||||
case NORM:
|
case NORM:
|
||||||
// FIXME: never ending cycle of death
|
|
||||||
// remove whitespaces
|
// remove whitespaces
|
||||||
while (isblank(*bb))
|
while (isblank(*bb))
|
||||||
bb++;
|
bb++;
|
||||||
@ -677,8 +676,7 @@ void parse_config_file (void)
|
|||||||
break;
|
break;
|
||||||
// Skip line (comment)
|
// Skip line (comment)
|
||||||
case LINE_SKIP:
|
case LINE_SKIP:
|
||||||
// FIXME: check end of file
|
for (;(bb - buffer) < file_size && *bb != '\n'; bb++);
|
||||||
for (;*bb != '\n'; bb++);
|
|
||||||
bb++;
|
bb++;
|
||||||
linenum++;
|
linenum++;
|
||||||
parse_state = NORM;
|
parse_state = NORM;
|
||||||
@ -706,7 +704,6 @@ void parse_config_file (void)
|
|||||||
break;
|
break;
|
||||||
// Get keys
|
// Get keys
|
||||||
case GET_KEYS:
|
case GET_KEYS:
|
||||||
// FIXME: check end of file, token_size >= remaining_size
|
|
||||||
for (token_size = 0; token_size < (file_size - (bb - buffer)) && !(bb[token_size] == ':' || bb[token_size] == '\n'); token_size++);
|
for (token_size = 0; token_size < (file_size - (bb - buffer)) && !(bb[token_size] == ':' || bb[token_size] == '\n'); token_size++);
|
||||||
if (bb[token_size] == '\n')
|
if (bb[token_size] == '\n')
|
||||||
die("Error at line %d: "
|
die("Error at line %d: "
|
||||||
@ -722,7 +719,6 @@ void parse_config_file (void)
|
|||||||
break;
|
break;
|
||||||
// Get command
|
// Get command
|
||||||
case GET_CMD:
|
case GET_CMD:
|
||||||
// FIXME: check end of file, token_size >= remaining_size
|
|
||||||
for (token_size = 0; token_size < (file_size - !(bb - buffer)); token_size++) {
|
for (token_size = 0; token_size < (file_size - !(bb - buffer)); token_size++) {
|
||||||
if (bb[token_size] == ':')
|
if (bb[token_size] == ':')
|
||||||
break;
|
break;
|
||||||
@ -801,14 +797,13 @@ void parse_config_file (void)
|
|||||||
}
|
}
|
||||||
munmap(buffer, file_size);
|
munmap(buffer, file_size);
|
||||||
|
|
||||||
for (struct hotkey_list_e *hkl = hotkey_list, *tmp; hkl; hkl = hkl->next) {
|
for (struct hotkey_list_e *hkl = hotkey_list, *tmp; hkl;) {
|
||||||
if (hkl->fuzzy == ALIAS) {
|
tmp = hkl;
|
||||||
tmp = hkl;
|
hkl = hkl->next;
|
||||||
hkl = hkl->next;
|
if (tmp->fuzzy == ALIAS)
|
||||||
hotkey_list_remove(hotkey_list, tmp);
|
hotkey_list_remove(hotkey_list, tmp);
|
||||||
} else {
|
else
|
||||||
hotkey_size_mask |= 1 << (hkl->data.kb.size - 1);
|
hotkey_size_mask |= 1 << (tmp->data.kb.size - 1);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user