diff options
author | Arun Prakash Jana <engineerarun@gmail.com> | 2020-04-14 22:38:33 +0530 |
---|---|---|
committer | Arun Prakash Jana <engineerarun@gmail.com> | 2020-04-14 22:38:33 +0530 |
commit | 30a6caf8bc385db770771ba84e23534d884eb410 (patch) | |
tree | d8d20df59346a8e7fb0bd03a57357e1eb14ca1a2 | |
parent | e0cdbcb521dca6b68ed36145de01029a4a784b07 (diff) | |
download | nnn-30a6caf8bc385db770771ba84e23534d884eb410.tar.gz |
Refactor set_time_type()
-rw-r--r-- | src/nnn.c | 54 |
1 files changed, 18 insertions, 36 deletions
@@ -615,12 +615,6 @@ static const char * const envs[] = { #define T_CHANGE 1 #define T_MOD 2 -static const char * const time_type[] = { - "'a'ccess", - "'c'hange", - "'m'od", -}; - #ifdef __linux__ static char cp[] = "cp -iRp"; static char mv[] = "mv -i"; @@ -4784,43 +4778,31 @@ static int set_sort_flags(int r) static bool set_time_type(int *presel) { - char buf[24]; - bool first = TRUE; - int r = 0; - size_t chars = 0; - - for (; r < (int)ELEMENTS(time_type); ++r) - if (r != cfg.timetype) { - chars += xstrsncpy(buf + chars, time_type[r], sizeof(buf) - chars) - 1; - if (first) { - buf[chars++] = ' '; - buf[chars++] = '/'; - buf[chars++] = ' '; - first = FALSE; - } else { - buf[chars++] = '?'; - buf[chars] = '\n'; - } - } + bool ret = FALSE; + char buf[] = "'a'ccess / 'c'hange / 'm'od [ ]"; + + buf[sizeof(buf) - 3] = cfg.timetype == T_MOD ? 'm' : (cfg.timetype == T_ACCESS ? 'a' : 'c'); + + int r = get_input(buf); - r = get_input(buf); if (r == 'a' || r == 'c' || r == 'm') { r = (r == 'm') ? T_MOD : ((r == 'a') ? T_ACCESS : T_CHANGE); - if (cfg.timetype == r) { - printwait(messages[MSG_NOCHNAGE], presel); - return FALSE; - } + if (cfg.timetype != r) { + cfg.timetype = r; - cfg.timetype = r; + if (cfg.filtermode || g_ctx[cfg.curctx].c_fltr[1]) + *presel = FILTER; - if (cfg.filtermode || g_ctx[cfg.curctx].c_fltr[1]) - *presel = FILTER; + ret = TRUE; + } else + r = MSG_NOCHNAGE; + } else + r = MSG_INVALID_KEY; - return TRUE; - } + if (!ret) + printwait(messages[r], presel); - printwait(messages[MSG_INVALID_KEY], presel); - return FALSE; + return ret; } static void statusbar(char *path) |