diff options
| author | memchr <118117622+memchr@users.noreply.github.com> | 2023-08-25 15:21:55 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-25 17:21:55 +0200 |
| commit | f0da0b0be4c70eeb94e44847eed9632f01f49807 (patch) | |
| tree | c735b8f3f9454caca0b700810d144897f716bc63 /src | |
| parent | 3a1f30519bb3ae265fc4f9cc720513217e928fdb (diff) | |
input: improved path handling; null check return value of fopen. (#3061)
Diffstat (limited to 'src')
| -rw-r--r-- | src/managers/KeybindManager.cpp | 9 | ||||
| -rw-r--r-- | src/managers/input/InputManager.cpp | 5 |
2 files changed, 6 insertions, 8 deletions
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index c30d94d9..9614774a 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -139,13 +139,12 @@ void CKeybindManager::updateXKBTranslationState() { const auto VARIANT = g_pConfigManager->getString("input:kb_variant"); const auto OPTIONS = g_pConfigManager->getString("input:kb_options"); - xkb_rule_names rules = {.rules = RULES.c_str(), .model = MODEL.c_str(), .layout = LAYOUT.c_str(), .variant = VARIANT.c_str(), .options = OPTIONS.c_str()}; - + xkb_rule_names rules = {.rules = RULES.c_str(), .model = MODEL.c_str(), .layout = LAYOUT.c_str(), .variant = VARIANT.c_str(), .options = OPTIONS.c_str()}; const auto PCONTEXT = xkb_context_new(XKB_CONTEXT_NO_FLAGS); - FILE* const KEYMAPFILE = FILEPATH == "" ? NULL : fopen(FILEPATH.c_str(), "r"); + FILE* const KEYMAPFILE = FILEPATH == "" ? NULL : fopen(absolutePath(FILEPATH, g_pConfigManager->configCurrentPath).c_str(), "r"); - auto PKEYMAP = FILEPATH == "" ? xkb_keymap_new_from_names(PCONTEXT, &rules, XKB_KEYMAP_COMPILE_NO_FLAGS) : - xkb_keymap_new_from_file(PCONTEXT, KEYMAPFILE, XKB_KEYMAP_FORMAT_TEXT_V1, XKB_KEYMAP_COMPILE_NO_FLAGS); + auto PKEYMAP = KEYMAPFILE ? xkb_keymap_new_from_file(PCONTEXT, KEYMAPFILE, XKB_KEYMAP_FORMAT_TEXT_V1, XKB_KEYMAP_COMPILE_NO_FLAGS) : + xkb_keymap_new_from_names(PCONTEXT, &rules, XKB_KEYMAP_COMPILE_NO_FLAGS); if (KEYMAPFILE) fclose(KEYMAPFILE); diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp index 7bc84b82..80869a77 100644 --- a/src/managers/input/InputManager.cpp +++ b/src/managers/input/InputManager.cpp @@ -784,10 +784,9 @@ void CInputManager::applyConfigToKeyboard(SKeyboard* pKeyboard) { if (!FILEPATH.empty()) { auto path = absolutePath(FILEPATH, g_pConfigManager->configCurrentPath); - if (!std::filesystem::exists(path)) - Debug::log(ERR, "input:kb_file= file doesnt exist"); + if (FILE* const KEYMAPFILE = fopen(path.c_str(), "r"); !KEYMAPFILE) + Debug::log(ERR, "Cannot open input:kb_file= file for reading"); else { - FILE* const KEYMAPFILE = fopen(FILEPATH.c_str(), "r"); KEYMAP = xkb_keymap_new_from_file(CONTEXT, KEYMAPFILE, XKB_KEYMAP_FORMAT_TEXT_V1, XKB_KEYMAP_COMPILE_NO_FLAGS); fclose(KEYMAPFILE); } |
