xref: /plan9-contrib/sys/src/ape/lib/v/plan9/tty.c (revision 781103c4074deb8af160e8a0da2742ba6b29dc2b)
11dce3b00SDavid du Colombier /*
21dce3b00SDavid du Colombier  * turn raw (no echo, etc.) on and off.
31dce3b00SDavid du Colombier  * ptyfs is gone, so don't even try tcsetattr, etc.
41dce3b00SDavid du Colombier  */
53e12c5d1SDavid du Colombier #define _POSIX_SOURCE
63e12c5d1SDavid du Colombier #define _RESEARCH_SOURCE
71dce3b00SDavid du Colombier 
83e12c5d1SDavid du Colombier #include <sys/types.h>
93e12c5d1SDavid du Colombier #include <unistd.h>
103e12c5d1SDavid du Colombier #include <fcntl.h>
113e12c5d1SDavid du Colombier #include <libv.h>
123e12c5d1SDavid du Colombier 
131dce3b00SDavid du Colombier static int ctlfd = -1;
143e12c5d1SDavid du Colombier 
153e12c5d1SDavid du Colombier /* fd is ignored */
163e12c5d1SDavid du Colombier 
tty_echooff(int)17*781103c4SDavid du Colombier tty_echooff(int)
183e12c5d1SDavid du Colombier {
191dce3b00SDavid du Colombier 	if(ctlfd >= 0)
203e12c5d1SDavid du Colombier 		return 0;
211dce3b00SDavid du Colombier 	ctlfd = open("/dev/consctl", O_WRONLY);
221dce3b00SDavid du Colombier 	if(ctlfd < 0)
233e12c5d1SDavid du Colombier 		return -1;
241dce3b00SDavid du Colombier 	write(ctlfd, "rawon", 5);
253e12c5d1SDavid du Colombier 	return 0;
263e12c5d1SDavid du Colombier }
273e12c5d1SDavid du Colombier 
tty_echoon(int)28*781103c4SDavid du Colombier tty_echoon(int)
293e12c5d1SDavid du Colombier {
301dce3b00SDavid du Colombier 	if(ctlfd >= 0){
311dce3b00SDavid du Colombier 		write(ctlfd, "rawoff", 6);
321dce3b00SDavid du Colombier 		close(ctlfd);
331dce3b00SDavid du Colombier 		ctlfd = -1;
343e12c5d1SDavid du Colombier 		return 0;
353e12c5d1SDavid du Colombier 	}
363e12c5d1SDavid du Colombier 	return -1;
373e12c5d1SDavid du Colombier }
38