client: Move get_password() from login.c to getpass.c
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 27 Dec 2020 09:06:08 +0000 (10:06 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 17 Jan 2021 20:24:28 +0000 (21:24 +0100)
Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
src/client/Makefile.in
src/client/getpass.c [new file with mode: 0644]
src/client/login.c
src/client/misc.h

index 6791618eb3cd009c933ee517c509cafeb2f26c6e..3ab7b404a7edbccfe27fa0b2373e2e277344ec41 100644 (file)
@@ -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
diff --git a/src/client/getpass.c b/src/client/getpass.c
new file mode 100644 (file)
index 0000000..517e377
--- /dev/null
@@ -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 */
+}
index 6707bc294445b275904eae9df1724d06d4f2da01..bf75bf8458a487bf6024bccd8f678b2e9af0bc91 100644 (file)
 #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)
index e33f1460d5a8e208a8a108b1946c36b0509ad896..0dca36b7695112e59cba3b46b3e8a6e4f2f2752a 100644 (file)
@@ -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 *);