From 1ce58f51d1b31031304b543d25c149d009cc6119 Mon Sep 17 00:00:00 2001 From: jsteube Date: Thu, 15 Sep 2016 04:21:41 +0200 Subject: [PATCH] Move thread_keypress() to terminal.c --- include/terminal.h | 2 + src/hashcat.c | 109 ------------------------------------ src/terminal.c | 135 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 137 insertions(+), 109 deletions(-) diff --git a/include/terminal.h b/include/terminal.h index 91da1bd33..0cde12a89 100644 --- a/include/terminal.h +++ b/include/terminal.h @@ -28,6 +28,8 @@ void send_prompt (); void clear_prompt (); +void *thread_keypress (void *p); + #if defined (_WIN) void SetConsoleWindowSize (const int x); #endif diff --git a/src/hashcat.c b/src/hashcat.c index 6285883ab..c54bf5c24 100644 --- a/src/hashcat.c +++ b/src/hashcat.c @@ -457,115 +457,6 @@ static void *thread_monitor (void *p) -static void *thread_keypress (void *p) -{ - uint quiet = data.quiet; - - tty_break(); - - while (data.shutdown_outer == 0) - { - int ch = tty_getchar(); - - if (ch == -1) break; - - if (ch == 0) continue; - - //https://github.com/hashcat/hashcat/issues/302 - //#if defined (_POSIX) - //if (ch != '\n') - //#endif - - hc_thread_mutex_lock (mux_display); - - log_info (""); - - switch (ch) - { - case 's': - case '\r': - case '\n': - - log_info (""); - - status_display (); - - log_info (""); - - if (quiet == 0) send_prompt (); - - break; - - case 'b': - - log_info (""); - - bypass (); - - log_info (""); - - if (quiet == 0) send_prompt (); - - break; - - case 'p': - - log_info (""); - - SuspendThreads (); - - log_info (""); - - if (quiet == 0) send_prompt (); - - break; - - case 'r': - - log_info (""); - - ResumeThreads (); - - log_info (""); - - if (quiet == 0) send_prompt (); - - break; - - case 'c': - - log_info (""); - - stop_at_checkpoint (); - - log_info (""); - - if (quiet == 0) send_prompt (); - - break; - - case 'q': - - log_info (""); - - myabort (); - - break; - } - - //https://github.com/hashcat/hashcat/issues/302 - //#if defined (_POSIX) - //if (ch != '\n') - //#endif - - hc_thread_mutex_unlock (mux_display); - } - - tty_fix(); - - return (p); -} - diff --git a/src/terminal.c b/src/terminal.c index 062a57454..30bcf701f 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -4,8 +4,34 @@ */ #include "common.h" +#include "types_int.h" +#include "types.h" +#include "logging.h" +#include "interface.h" +#include "timer.h" +#include "ext_OpenCL.h" +#include "ext_ADL.h" +#include "ext_nvapi.h" +#include "ext_nvml.h" +#include "ext_xnvctrl.h" +#include "hwmon.h" +#include "mpsp.h" +#include "rp_cpu.h" +#include "restore.h" +#include "opencl.h" +#include "outfile.h" +#include "potfile.h" +#include "debugfile.h" +#include "loopback.h" +#include "data.h" +#include "thread.h" +#include "status.h" #include "terminal.h" +extern hc_global_data_t data; + +extern hc_thread_mutex_t mux_display; + const char *PROMPT = "[s]tatus [p]ause [r]esume [b]ypass [c]heckpoint [q]uit => "; void send_prompt () @@ -29,6 +55,115 @@ void clear_prompt () fflush (stdout); } +void *thread_keypress (void *p) +{ + uint quiet = data.quiet; + + tty_break(); + + while (data.shutdown_outer == 0) + { + int ch = tty_getchar(); + + if (ch == -1) break; + + if (ch == 0) continue; + + //https://github.com/hashcat/hashcat/issues/302 + //#if defined (_POSIX) + //if (ch != '\n') + //#endif + + hc_thread_mutex_lock (mux_display); + + log_info (""); + + switch (ch) + { + case 's': + case '\r': + case '\n': + + log_info (""); + + status_display (); + + log_info (""); + + if (quiet == 0) send_prompt (); + + break; + + case 'b': + + log_info (""); + + bypass (); + + log_info (""); + + if (quiet == 0) send_prompt (); + + break; + + case 'p': + + log_info (""); + + SuspendThreads (); + + log_info (""); + + if (quiet == 0) send_prompt (); + + break; + + case 'r': + + log_info (""); + + ResumeThreads (); + + log_info (""); + + if (quiet == 0) send_prompt (); + + break; + + case 'c': + + log_info (""); + + stop_at_checkpoint (); + + log_info (""); + + if (quiet == 0) send_prompt (); + + break; + + case 'q': + + log_info (""); + + myabort (); + + break; + } + + //https://github.com/hashcat/hashcat/issues/302 + //#if defined (_POSIX) + //if (ch != '\n') + //#endif + + hc_thread_mutex_unlock (mux_display); + } + + tty_fix(); + + return (p); +} + #if defined (_WIN) void SetConsoleWindowSize (const int x) {