mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 15:06:14 +01:00
gio/tests/gtlsconsoleinteraction: Work around missing getpass() on win32
Loosely based on a patch by Sam Thursfield <ssssam@gmail.com>. https://bugzilla.gnome.org/show_bug.cgi?id=656341
This commit is contained in:
parent
a0029515ca
commit
41e4db8076
@ -22,8 +22,14 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <glib.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
#include <glib/gprintf.h>
|
||||
#include <conio.h>
|
||||
#endif
|
||||
|
||||
#include "gtlsconsoleinteraction.h"
|
||||
|
||||
/*
|
||||
@ -34,6 +40,31 @@
|
||||
|
||||
G_DEFINE_TYPE (GTlsConsoleInteraction, g_tls_console_interaction, G_TYPE_TLS_INTERACTION);
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
/* win32 doesn't have getpass() */
|
||||
static gchar *
|
||||
getpass (const gchar *prompt)
|
||||
{
|
||||
static gchar buf[BUFSIZ];
|
||||
gint i;
|
||||
|
||||
g_printf ("%s", prompt);
|
||||
fflush (stdout);
|
||||
|
||||
for (i = 0; i < BUFSIZ - 1; ++i)
|
||||
{
|
||||
buf[i] = _getch ();
|
||||
if (buf[i] == '\r')
|
||||
break;
|
||||
}
|
||||
buf[i] = '\0';
|
||||
|
||||
g_printf ("\n");
|
||||
|
||||
return &buf[0];
|
||||
}
|
||||
#endif
|
||||
|
||||
static GTlsInteractionResult
|
||||
g_tls_console_interaction_ask_password (GTlsInteraction *interaction,
|
||||
GTlsPassword *password,
|
||||
|
Loading…
Reference in New Issue
Block a user