Improved help. Moving to 0.2.
#include <sys/types.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <termios.h>
#include "main.h"
static int is_tios_saved = 0;
static struct termios saved_tios;
void prepare_user_terminal()
{
int res;
struct termios tios;
res = tcgetattr(1, &tios);
if (res == -1)
error("tcgetatttr");
memcpy(&saved_tios, &tios, sizeof(struct termios));
is_tios_saved = 1;
tios.c_lflag &= ~(ECHO | ECHONL | ICANON | IEXTEN);
/*cfmakeraw(&tios);*/
res = tcsetattr(1, TCSANOW, &tios);
if (res == -1)
error("tcsetatttr");
}
void restore_user_terminal()
{
int res;
res = tcsetattr(1, TCSANOW, &saved_tios);
if (res == -1)
error("tcsetatttr");
}
void finish(int ret)
{
if (is_tios_saved)
restore_user_terminal();
exit(ret);
}