client: Move get_password() from login.c to getpass.c
Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
parent
f98747ae0e
commit
e551b6198d
4 changed files with 86 additions and 43 deletions
|
@ -28,7 +28,7 @@
|
|||
# Makefile.in: Makefile template for configure
|
||||
#
|
||||
# Known contributors to this file:
|
||||
# Markus Armbruster, 2005-2015
|
||||
# Markus Armbruster, 2005-2020
|
||||
#
|
||||
|
||||
CC = @CC@
|
||||
|
@ -53,9 +53,9 @@ srcdir = @srcdir@
|
|||
VPATH = @srcdir@
|
||||
|
||||
prog = empire$E
|
||||
obj = expect.$O fnameat.$O host.$O ipglob.$O linebuf.$O login.$O \
|
||||
main.$O play.$O ringbuf.$O secure.$O servcmd.$O termlib.$O version.$O \
|
||||
$(LIBOBJS)
|
||||
obj = expect.$O fnameat.$O getpass.$O host.$O ipglob.$O linebuf.$O \
|
||||
login.$O main.$O play.$O ringbuf.$O secure.$O servcmd.$O termlib.$O \
|
||||
version.$O $(LIBOBJS)
|
||||
|
||||
all: $(prog)
|
||||
|
||||
|
@ -82,6 +82,7 @@ uninstall:
|
|||
# FIXME generate from .d
|
||||
expect.$O: misc.h proto.h
|
||||
fnameat.$O: fnameat.h
|
||||
getpass.$O: misc.h
|
||||
host.$O: misc.h
|
||||
linebuf.$O: linebuf.h
|
||||
login.$O: misc.h proto.h
|
||||
|
@ -95,8 +96,8 @@ version.$O: version.h
|
|||
$(obj): config.h
|
||||
|
||||
expect.$O: w32/sys/socket.h w32/unistd.h w32/w32types.h
|
||||
getpass.$O: w32/unistd.h w32/w32types.h
|
||||
host.$O: w32/sys/socket.h w32/netinet/in.h w32/arpa/inet.h w32/netdb.h w32/unistd.h w32/w32types.h
|
||||
login.$O: w32/unistd.h w32/w32types.h
|
||||
main.$O: w32/sys/socket.h w32/unistd.h w32/w32types.h
|
||||
play.$O: w32/sys/socket.h w32/unistd.h w32/w32types.h
|
||||
ringbuf.$O: w32/sys/uio.h w32/w32types.h
|
||||
|
|
77
src/client/getpass.c
Normal file
77
src/client/getpass.c
Normal file
|
@ -0,0 +1,77 @@
|
|||
/*
|
||||
* Empire - A multi-player, client/server Internet based war game.
|
||||
* Copyright (C) 1986-2020, Dave Pare, Jeff Bailey, Thomas Ruschak,
|
||||
* Ken Stevens, Steve McClure, Markus Armbruster
|
||||
*
|
||||
* Empire is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* ---
|
||||
*
|
||||
* See files README, COPYING and CREDITS in the root of the source
|
||||
* tree for related information and legal notices. It is expected
|
||||
* that future projects/authors will amend these files as needed.
|
||||
*
|
||||
* ---
|
||||
*
|
||||
* getpass.c: Get a password
|
||||
*
|
||||
* Known contributors to this file:
|
||||
* Markus Armbruster, 2009-2020
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#ifdef HAVE_GETPASS
|
||||
#include <unistd.h>
|
||||
#else
|
||||
#include <string.h>
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#endif
|
||||
#endif
|
||||
#include "misc.h"
|
||||
|
||||
char *
|
||||
get_password(const char *prompt)
|
||||
{
|
||||
#ifdef HAVE_GETPASS
|
||||
return getpass(prompt);
|
||||
#else
|
||||
static char buf[128];
|
||||
char *p;
|
||||
size_t len;
|
||||
#ifdef _WIN32
|
||||
DWORD mode;
|
||||
HANDLE input_handle = GetStdHandle(STD_INPUT_HANDLE);
|
||||
|
||||
if (GetConsoleMode(input_handle, &mode))
|
||||
SetConsoleMode(input_handle, mode & ~ENABLE_ECHO_INPUT);
|
||||
else
|
||||
#endif
|
||||
printf("Note: your input is echoed to the screen\n");
|
||||
printf("%s", prompt);
|
||||
fflush(stdout);
|
||||
p = fgets(buf, sizeof(buf), stdin);
|
||||
#ifdef _WIN32
|
||||
if (GetConsoleMode(input_handle, &mode))
|
||||
SetConsoleMode(input_handle, mode | ENABLE_ECHO_INPUT);
|
||||
#endif
|
||||
if (!p)
|
||||
return NULL;
|
||||
len = strlen(p);
|
||||
if (p[len - 1] == '\n')
|
||||
p[len - 1] = 0;
|
||||
return p;
|
||||
#endif /* !HAVE_GETPASS */
|
||||
}
|
|
@ -38,47 +38,9 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#endif
|
||||
#include "misc.h"
|
||||
#include "proto.h"
|
||||
|
||||
static char *
|
||||
get_password(const char *prompt)
|
||||
{
|
||||
#ifdef HAVE_GETPASS
|
||||
return getpass(prompt);
|
||||
#else
|
||||
static char buf[128];
|
||||
char *p;
|
||||
size_t len;
|
||||
#ifdef _WIN32
|
||||
DWORD mode;
|
||||
HANDLE input_handle = GetStdHandle(STD_INPUT_HANDLE);
|
||||
|
||||
if (GetConsoleMode(input_handle, &mode))
|
||||
SetConsoleMode(input_handle, mode & ~ENABLE_ECHO_INPUT);
|
||||
else
|
||||
#endif
|
||||
printf("Note: your input is echoed to the screen\n");
|
||||
printf("%s", prompt);
|
||||
fflush(stdout);
|
||||
p = fgets(buf, sizeof(buf), stdin);
|
||||
#ifdef _WIN32
|
||||
if (GetConsoleMode(input_handle, &mode))
|
||||
SetConsoleMode(input_handle, mode | ENABLE_ECHO_INPUT);
|
||||
#endif
|
||||
if (!p)
|
||||
return NULL;
|
||||
len = strlen(p);
|
||||
if (p[len - 1] == '\n')
|
||||
p[len - 1] = 0;
|
||||
return p;
|
||||
#endif /* !HAVE_GETPASS */
|
||||
}
|
||||
|
||||
int
|
||||
login(int s, char *uname, char *cname, char *cpass,
|
||||
int kill_proc, int utf8)
|
||||
|
|
|
@ -48,6 +48,9 @@ int parseid(char *);
|
|||
int expect(int s, int match, char *buf);
|
||||
void sendcmd(int s, char *cmd, char *arg);
|
||||
|
||||
/* getpass.c */
|
||||
char *get_password(const char *);
|
||||
|
||||
/* host.c */
|
||||
int tcp_connect(char *, char *);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue