/**
 * @file src/term.c
 */

#include "term.h"

/**
 * @brief Get terminal window size
 * @return Struct in which window size if stored
 */
struct winsize getWinSize() {
  struct winsize w = err_winsize;
  ioctl(stdout_fileno, TIOCGWINSZ, &w);
  return w;
}

/**
 * @brief getchar() becomes like getch() in MSVC
 * @return Original termios
 */
struct termios enableRawMode() {
  struct termios orig;
  tcgetattr(stdin_fileno, &orig);
  struct termios raw = orig;
  raw.c_lflag &= ~0xaU; // ~(ICANON | ECHO)
  tcsetattr(stdin_fileno, TCSAFLUSH, &raw);
  return orig;
}

void disableRawMode(struct termios *orig) {
  tcsetattr(stdin_fileno, TCSAFLUSH, orig);
}