/* Processes remapping of a key. Returns error code. */ static int execute_after_remapping(const wchar_t rhs[], const wchar_t left_keys[], keys_info_t keys_info, key_info_t key_info, key_chunk_t *curr) { int result; if(rhs[0] == L'\0' && left_keys[0] == L'\0') { /* Nop command executed correctly. */ result = 0; } else if(rhs[0] == L'\0') { keys_info_t keys_info; init_keys_info(&keys_info, 1); enter_chunk(curr); result = dispatch_keys(left_keys, &keys_info, curr->no_remap, NO_COUNT_GIVEN); leave_chunk(curr); } else { wchar_t buf[16 + wcslen(rhs) + 1 + wcslen(left_keys) + 1]; buf[0] = '\0'; if(key_info.reg != NO_REG_GIVEN) { vifm_swprintf(buf, ARRAY_LEN(buf), L"\"%c", key_info.reg); } if(key_info.count != NO_COUNT_GIVEN) { vifm_swprintf(buf + wcslen(buf), ARRAY_LEN(buf) - wcslen(buf), L"%d", key_info.count); } wcscat(buf, rhs); wcscat(buf, left_keys); if(curr->conf.followed != FOLLOWED_BY_SELECTOR) { init_keys_info(&keys_info, 1); } enter_chunk(curr); result = dispatch_keys(buf, &keys_info, curr->no_remap, NO_COUNT_GIVEN); leave_chunk(curr); } return result; }
/* does real job on setting terminal title */ static void set_terminal_title(const char *path) { #ifdef _WIN32 wchar_t buf[2048]; vifm_swprintf(buf, ARRAY_LEN(buf), L"%" WPRINTF_MBSTR L" - VIFM", path); SetConsoleTitleW(buf); #else char *const title = format_str("\033]2;%s - VIFM\007", path); putp(title); fflush(stdout); free(title); #endif }