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
|
# Makefile.in: Makefile template for configure
|
||||||
#
|
#
|
||||||
# Known contributors to this file:
|
# Known contributors to this file:
|
||||||
# Markus Armbruster, 2005-2015
|
# Markus Armbruster, 2005-2020
|
||||||
#
|
#
|
||||||
|
|
||||||
CC = @CC@
|
CC = @CC@
|
||||||
|
@ -53,9 +53,9 @@ srcdir = @srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
|
|
||||||
prog = empire$E
|
prog = empire$E
|
||||||
obj = expect.$O fnameat.$O host.$O ipglob.$O linebuf.$O login.$O \
|
obj = expect.$O fnameat.$O getpass.$O host.$O ipglob.$O linebuf.$O \
|
||||||
main.$O play.$O ringbuf.$O secure.$O servcmd.$O termlib.$O version.$O \
|
login.$O main.$O play.$O ringbuf.$O secure.$O servcmd.$O termlib.$O \
|
||||||
$(LIBOBJS)
|
version.$O $(LIBOBJS)
|
||||||
|
|
||||||
all: $(prog)
|
all: $(prog)
|
||||||
|
|
||||||
|
@ -82,6 +82,7 @@ uninstall:
|
||||||
# FIXME generate from .d
|
# FIXME generate from .d
|
||||||
expect.$O: misc.h proto.h
|
expect.$O: misc.h proto.h
|
||||||
fnameat.$O: fnameat.h
|
fnameat.$O: fnameat.h
|
||||||
|
getpass.$O: misc.h
|
||||||
host.$O: misc.h
|
host.$O: misc.h
|
||||||
linebuf.$O: linebuf.h
|
linebuf.$O: linebuf.h
|
||||||
login.$O: misc.h proto.h
|
login.$O: misc.h proto.h
|
||||||
|
@ -95,8 +96,8 @@ version.$O: version.h
|
||||||
$(obj): config.h
|
$(obj): config.h
|
||||||
|
|
||||||
expect.$O: w32/sys/socket.h w32/unistd.h w32/w32types.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
|
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
|
main.$O: w32/sys/socket.h w32/unistd.h w32/w32types.h
|
||||||
play.$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
|
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 <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
|
||||||
#ifdef _WIN32
|
|
||||||
#include <windows.h>
|
|
||||||
#endif
|
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "proto.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
|
int
|
||||||
login(int s, char *uname, char *cname, char *cpass,
|
login(int s, char *uname, char *cname, char *cpass,
|
||||||
int kill_proc, int utf8)
|
int kill_proc, int utf8)
|
||||||
|
|
|
@ -48,6 +48,9 @@ int parseid(char *);
|
||||||
int expect(int s, int match, char *buf);
|
int expect(int s, int match, char *buf);
|
||||||
void sendcmd(int s, char *cmd, char *arg);
|
void sendcmd(int s, char *cmd, char *arg);
|
||||||
|
|
||||||
|
/* getpass.c */
|
||||||
|
char *get_password(const char *);
|
||||||
|
|
||||||
/* host.c */
|
/* host.c */
|
||||||
int tcp_connect(char *, char *);
|
int tcp_connect(char *, char *);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue