mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-12 11:10:07 +00:00
d32deab17b
Suggested by G. Brandon Robinson.
50 lines
990 B
Groff
50 lines
990 B
Groff
.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
|