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 Colombiertty_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 Colombiertty_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