2005-02-11 19:21:47 +00:00
|
|
|
.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
|
2005-02-13 23:44:12 +00:00
|
|
|
.I netkey
|
|
|
|
(see
|
|
|
|
.IR passwd (1)):
|
2005-02-11 19:21:47 +00:00
|
|
|
.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
|