#include "utils.h" #include "fm.h" #include "log.h" #include #include int get_input(const char *prompt, char *buf, size_t len) { if (!prompt || !buf) return SF_ERR_INVALID_ARG; int ch; curs_set(1); werase(status_window->win); mvwprintw(status_window->win, 0, 0, "%s%s", prompt, buf); wrefresh(status_window->win); while ((ch = getch())) { werase(status_window->win); if (ch >= 32 && ch <= 126) { buf[len++] = ch; } else if (ch == KEY_BACKSPACE || ch == 127 || ch == '\b') { buf[--len] = '\0'; } else if (ch == 27) { werase(status_window->win); curs_set(0); return SF_ERR_CANCEL; } else if (ch == KEY_ENTER || ch == '\n' || ch == '\r') { if (len < PATH_MAX) { buf[++len] = '\0'; curs_set(0); return SF_OK; } else { return SF_ERR_INVALID_LEN; } } else { continue; } mvwprintw(status_window->win, 0, 0, "%s%s", prompt, buf); wrefresh(status_window->win); } curs_set(0); return SF_OK; } bool y_or_n(const char *prompt) { int ch; werase(status_window->win); mvwprintw(status_window->win, 0, 0, "%s (y or n)", prompt); wrefresh(status_window->win); ch = getch(); return ch == 'y'; }