mirror of
https://github.com/curl/curl.git
synced 2026-06-02 05:24:15 +03:00
fixed NetWare CLIB implementation of getpass_r()
This commit is contained in:
parent
7fd4f82a45
commit
836ffbfc22
1 changed files with 17 additions and 8 deletions
|
|
@ -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;
|
||||
}
|
||||
} else if (buffer[i-1] != 13) {
|
||||
putchar('*');
|
||||
}
|
||||
} while ((c != 13) && (i < buflen));
|
||||
} while ((buffer[i-1] != 13) && (i < buflen));
|
||||
buffer[i-1] = 0;
|
||||
printf("\r\n");
|
||||
return buffer;
|
||||
}
|
||||
#endif /* __NOVELL_LIBC__ */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue