1 #ifndef WIN32 2 3 #include <unistd.h> 4 5 #include <stdlib.h> 6 #include <stdio.h> 7 8 #include <termios.h> 9 #include <string.h> 10 11 #include <sys/ioctl.h> /* non posix */ 12 13 /* from: http://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_4.html#SEC48 */ 14 15 static struct termios stored_settings; 16 17 void terminal_acquire(void)18terminal_acquire(void){ 19 struct termios new_settings; 20 tcgetattr(0,&stored_settings); 21 new_settings = stored_settings; 22 new_settings.c_lflag &= (~ECHO); /* no echo */ 23 new_settings.c_lflag &= (~ICANON); /* no lined input */ 24 new_settings.c_lflag &= (~ISIG); /* no signal generation */ 25 new_settings.c_cc[VTIME] = 0; 26 new_settings.c_cc[VMIN] = 1; 27 tcsetattr(0,TCSANOW,&new_settings); 28 return; 29 } 30 31 void terminal_release(void)32terminal_release(void){ 33 tcsetattr(0,TCSANOW,&stored_settings); 34 return; 35 } 36 37 int terminal_getsize(void)38terminal_getsize(void){ 39 struct winsize winsz; 40 ioctl(1, TIOCGWINSZ, &winsz); 41 return winsz.ws_col; 42 } 43 44 int terminal_isatty(int fd)45terminal_isatty(int fd){ 46 return isatty(fd); 47 } 48 #endif /* ifndef WIN32 */ 49