extern int term_erase, term_kill;
static char *
-getln(fd, buf, bufsiz, stars)
+getln(fd, buf, bufsiz, feedback)
int fd;
char *buf;
size_t bufsiz;
- int stars;
+ int feedback;
{
size_t left = bufsiz;
ssize_t nr = -1;
nr = read(fd, &c, 1);
if (nr != 1 || c == '\n' || c == '\r')
break;
- if (stars) {
+ if (feedback) {
if (c == term_kill) {
while (cp > buf) {
(void) write(fd, "\b \b", 3);
*cp++ = c;
}
*cp = '\0';
+ if (feedback) {
+ /* erase stars */
+ while (cp > buf) {
+ (void) write(fd, "\b \b", 3);
+ --cp;
+ }
+ }
return(nr == 1 ? buf : NULL);
}