mirror of
https://github.com/moparisthebest/curl
synced 2024-11-11 03:55:03 -05:00
fixed NetWare CLIB implementation of getpass_r()
This commit is contained in:
parent
7fd4f82a45
commit
836ffbfc22
@ -136,18 +136,27 @@ char *getpass_r(const char *prompt, char *buffer, size_t buflen)
|
||||
#include <nwconio.h>
|
||||
char *getpass_r(const char *prompt, char *buffer, size_t buflen)
|
||||
{
|
||||
int i = 0;
|
||||
int c;
|
||||
size_t i = 0;
|
||||
|
||||
printf("%s", prompt);
|
||||
do {
|
||||
c = getch();
|
||||
if (c != 13) {
|
||||
buffer[i] = c;
|
||||
i++;
|
||||
printf("%s", "*");
|
||||
buffer[i++] = getch();
|
||||
if (buffer[i-1] == '\b') {
|
||||
/* remove this letter and if this is not the first key,
|
||||
remove the previous one as well */
|
||||
if (i > 1) {
|
||||
printf("\b \b");
|
||||
i = i - 2;
|
||||
} else {
|
||||
RingTheBell();
|
||||
i = i - 1;
|
||||
}
|
||||
} while ((c != 13) && (i < buflen));
|
||||
} else if (buffer[i-1] != 13) {
|
||||
putchar('*');
|
||||
}
|
||||
} while ((buffer[i-1] != 13) && (i < buflen));
|
||||
buffer[i-1] = 0;
|
||||
printf("\r\n");
|
||||
return buffer;
|
||||
}
|
||||
#endif /* __NOVELL_LIBC__ */
|
||||
|
Loading…
Reference in New Issue
Block a user