5 * prompt for a string with a possible default response
8 readcons(char *prompt, char *def, int raw)
10 int fdin, fdout, ctl, n;
16 if((fdin = open("/dev/cons", OREAD)) < 0)
18 if((fdout = open("/dev/cons", OWRITE)) < 0)
22 if((ctl = open("/dev/consctl", OWRITE)) < 0)
24 write(ctl, "rawon", 5);
28 fprint(fdout, "%s[%s]: ", prompt, def);
30 fprint(fdout, "%s: ", prompt);
35 if((p = realloc(s, n+32)) == nil)
43 if(n == 0 || *p == 0x7f){
44 werrstr("input aborted");
48 if(*p == '\n' || *p == '\r'){
49 if(p == s && def != nil){
55 write(fdout, "\n", 1);
57 } else if(*p == '\b') {
58 while(p > s && (p[-1] & 0xc0) == 0x80)
62 } else if(*p == 0x15) { /* ^U: line kill */
64 fprint(fdout, "\n%s[%s]: ", prompt, def);
66 fprint(fdout, "\n%s: ", prompt);
75 write(fdout, "\n", 1);
78 write(ctl, "rawoff", 6);