1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
.TH READCONS 3
.SH NAME
readcons \- prompt console for input
.SH SYNOPSIS
.B
#include <u.h>
.PP
.B
#include <libc.h>
.PP
.B
char *readcons(char *prompt, char *def, int secret)
.SH DESCRIPTION
.I Readcons
prompts at the console for input.
It returns a NUL-terminated buffer containing the input
without a final newline.
The buffer should be freed (and perhaps cleared first)
when no longer needed.
.PP
If the user types an empty string (just a newline) and
.I def
is non-zero, then a copy of
.I def
is returned instead of the empty string.
.PP
If
.I secret
is non-zero, the input is not echoed to the screen.
.SH EXAMPLE
A stripped-down version of
.I netkey
(see
.MR passwd (1) ):
.IP
.EX
pass = readcons("password", nil, 1);
passtokey(key, pass);
memset(pass, 0, strlen(pass));
free(pass);
for(;;){
chal = readcons("challenge", nil, 0);
sprint(buf, "%d", strtol(chal, 0, 10));
free(chal);
netcrypt(key, buf);
print("response: %s\n", buf);
}
.EE
.SH SOURCE
.B \*9/src/lib9/readcons.c
|