Leonid Plyushch
7 years ago
committed by
Fredrik Fornwall
4 changed files with 51 additions and 27 deletions
@ -0,0 +1,47 @@ |
|||
diff -uNr unrar.mod/consio.cpp unrar.mod2/consio.cpp
|
|||
--- unrar.mod/consio.cpp 2017-08-11 16:56:22.000000000 +0300
|
|||
+++ unrar.mod2/consio.cpp 2017-09-14 20:34:17.247733000 +0300
|
|||
@@ -1,6 +1,10 @@
|
|||
#include "rar.hpp" |
|||
#include "log.cpp" |
|||
|
|||
+// For getpass()
|
|||
+#include <termios.h>
|
|||
+#include <readline/readline.h>
|
|||
+
|
|||
static MESSAGE_TYPE MsgStream=MSG_STDOUT; |
|||
static RAR_CHARSET RedirectCharset=RCH_DEFAULT; |
|||
|
|||
@@ -57,6 +61,32 @@
|
|||
|
|||
|
|||
#ifndef SILENT |
|||
+#ifdef __ANDROID__
|
|||
+char* getpass(const char *prompt) {
|
|||
+ struct termios term_old, term_new;
|
|||
+ int nread;
|
|||
+
|
|||
+ /* Turn echoing off and fail if we can't. */
|
|||
+ if (tcgetattr (0, &term_old) != 0) {
|
|||
+ return NULL;
|
|||
+ }
|
|||
+
|
|||
+ term_new = term_old;
|
|||
+ term_new.c_lflag &= ~ECHO;
|
|||
+
|
|||
+ if (tcsetattr (0, TCSAFLUSH, &term_new) != 0) {
|
|||
+ return NULL;
|
|||
+ }
|
|||
+
|
|||
+ /* Read the password. */
|
|||
+ char *password = readline(prompt);
|
|||
+
|
|||
+ /* Restore terminal. */
|
|||
+ (void) tcsetattr (0, TCSAFLUSH, &term_old);
|
|||
+
|
|||
+ return password;
|
|||
+}
|
|||
+#endif
|
|||
static void cvt_wprintf(FILE *dest,const wchar *fmt,va_list arglist) |
|||
{ |
|||
// This buffer is for format string only, not for entire output, |
@ -1,24 +0,0 @@ |
|||
diff -u -r ../unrar/consio.cpp ./consio.cpp
|
|||
--- ../unrar/consio.cpp 2013-12-01 09:10:14.000000000 +0100
|
|||
+++ ./consio.cpp 2014-02-13 00:27:45.000000000 +0100
|
|||
@@ -144,6 +144,20 @@
|
|||
|
|||
|
|||
#ifndef SILENT |
|||
+#ifdef __ANDROID__
|
|||
+static char* getpass(const char* prompt) {
|
|||
+ static char chars[128];
|
|||
+ int len = 0;
|
|||
+ while (true) {
|
|||
+ char c = fgetc(stdin);
|
|||
+ if (c == '\r' || c == '\n' || c == 0) break;
|
|||
+ chars[len++] = c;
|
|||
+ if (len == sizeof(chars)-1) break;
|
|||
+ }
|
|||
+ chars[len] = 0;
|
|||
+ return chars;
|
|||
+}
|
|||
+#endif
|
|||
static void GetPasswordText(wchar *Str,uint MaxLength) |
|||
{ |
|||
if (MaxLength==0) |
Loading…
Reference in new issue