1 /* From /sys/src/libauthsrv/readnvram.c, LPL licensed */
7 readcons(char *prompt, char *def, int raw, char *buf, int nbuf)
9 int fdin, fdout, ctl, n, m;
12 fdin = open("/dev/cons", OREAD);
15 fdout = open("/dev/cons", OWRITE);
19 fprint(fdout, "%s[%s]: ", prompt, def);
21 fprint(fdout, "%s: ", prompt);
23 ctl = open("/dev/consctl", OWRITE);
25 write(ctl, "rawon", 5);
31 n = read(fdin, line, 1);
34 werrstr("readcons: EOF");
39 werrstr("can't read cons");
44 if(n == 0 || line[0] == '\n' || line[0] == '\r'){
46 write(ctl, "rawoff", 6);
47 write(fdout, "\n", 1);
51 if(buf[0]=='\0' && def)
58 }else if(line[0] == 0x15){ /* ^U: line kill */
61 fprint(fdout, "%s[%s]: ", prompt, def);
63 fprint(fdout, "%s: ", prompt);
66 fprint(fdout, "line too long\n");
69 fprint(fdout, "%s[%s]: ", prompt, def);
71 fprint(fdout, "%s: ", prompt);