All pastes #1191071 Raw Edit

termios + select

public c v1 · immutable
#1191071 ·published 2008-09-02 02:10 UTC
rendered paste body
#include <err.h>#include <errno.h>#include <stdlib.h>#include <stdio.h>#include <termios.h>#include <unistd.h>#include <sys/select.h>intmain(void){	struct termios	told, tnew;	if (tcgetattr(STDIN_FILENO, &told) == -1)		err(errno, "tcgetattr");	tnew = told;	tnew.c_lflag &= ~(ECHO | ECHONL | ICANON);	if (tcsetattr(STDIN_FILENO, TCSADRAIN, &tnew) == -1)		err(errno, "tcsetattr");	for (;;) {		uint8_t	c;		fd_set	set;		FD_ZERO(&set);		FD_SET(STDIN_FILENO, &set);		if (select(1, &set, NULL, NULL, NULL) != 1) {			warn("select");			continue;		}		if (read(STDIN_FILENO, &c, 1) < 1)			break;		(void) fprintf(stdout, "%d, ", c);		(void) fflush(stdout);		if (c == 27)			break;	}	if (tcsetattr(STDIN_FILENO, TCSADRAIN, &told) == -1)		err(errno, "tcsetattr");	exit(EXIT_SUCCESS);}