Compare commits

..

No commits in common. "7ee23cd20d4f4df61cb20ddd9cd6d5ff22762331" and "4fc23d0a7663aeb4c2fc0bd3d07b67860f2a7faf" have entirely different histories.

3 changed files with 26 additions and 20 deletions

View File

@ -12,22 +12,9 @@ const VERSION: &str = "2.0.0";
extern "C" { extern "C" {
fn nmseffect_set_clearscr(_: c_int) -> c_void; fn nmseffect_set_clearscr(_: c_int) -> c_void;
fn nmseffect_exec( fn nmseffect_exec(input: *const c_char, len: c_int, autodecrypt_c: c_int) -> c_char;
input: *const c_char,
len: c_int,
autodecrypt_c: c_int,
maskblank_c: c_int,
) -> c_char;
static mut foregroundColor: c_int; static mut foregroundColor: c_int;
} static mut maskBlank: c_int;
///Sleep for the number of milliseconds indicated by argument
#[no_mangle]
pub extern "C" fn nmseffect_sleep(t: c_int) {
use std::time::Duration;
let dur = Duration::from_millis(t as u64);
std::thread::sleep(dur);
} }
/// Return a random character from charTable[]. /// Return a random character from charTable[].
@ -65,7 +52,13 @@ pub extern "C" fn rust_main() {
foregroundColor = n; foregroundColor = n;
} }
} }
let maskblank_c = if args.mask_blanks { 1 } else { 0 }; unsafe {
if args.mask_blanks {
maskBlank = 1;
} else {
maskBlank = 0;
}
}
if args.clear_screen { if args.clear_screen {
unsafe { unsafe {
@ -83,7 +76,7 @@ pub extern "C" fn rust_main() {
let output_cstring = CString::new(output).unwrap(); let output_cstring = CString::new(output).unwrap();
let ptr = output_cstring.as_ptr(); let ptr = output_cstring.as_ptr();
let len = output_cstring.as_bytes().len(); let len = output_cstring.as_bytes().len();
let _r = unsafe { nmseffect_exec(ptr, len as i32, autodecrypt_c, maskblank_c) }; let _r = unsafe { nmseffect_exec(ptr, len as i32, autodecrypt_c) };
} }
fn get_input(prompt: &str) -> String { fn get_input(prompt: &str) -> String {

View File

@ -32,6 +32,7 @@
#define REVEAL_LOOP_SPEED 50 // miliseconds between each reveal loop #define REVEAL_LOOP_SPEED 50 // miliseconds between each reveal loop
// Behavior settings // Behavior settings
int maskBlank = 0; // Mask blank spaces
const int colorOn = 1; // Terminal color flag - nothing actually sets this to be false ever const int colorOn = 1; // Terminal color flag - nothing actually sets this to be false ever
// Character attribute structure, linked list. Keeps track of every // Character attribute structure, linked list. Keeps track of every
@ -46,14 +47,14 @@ struct charAttr {
}; };
// Static function prototypes // Static function prototypes
extern void nmseffect_sleep(int); static void nmseffect_sleep(int);
/* /*
* This function applies the data decryption effect to the character * This function applies the data decryption effect to the character
* string that is provided as an argument. It returns the last character * string that is provided as an argument. It returns the last character
* pressed by the user. * pressed by the user.
*/ */
char nmseffect_exec(unsigned char *string, int string_len, int autoDecrypt, int maskBlank) { char nmseffect_exec(unsigned char *string, int string_len, int autoDecrypt) {
struct charAttr *list_pointer = NULL; struct charAttr *list_pointer = NULL;
struct charAttr *list_head = NULL; struct charAttr *list_head = NULL;
struct charAttr *list_temp = NULL; struct charAttr *list_temp = NULL;
@ -297,3 +298,15 @@ char nmseffect_exec(unsigned char *string, int string_len, int autoDecrypt, int
void nmseffect_set_clearscr(int setting) { void nmseffect_set_clearscr(int setting) {
nmstermio_set_clearscr(setting); nmstermio_set_clearscr(setting);
} }
/*
* Sleep for the number of milliseconds indicated by argument 't'.
*/
static void nmseffect_sleep(int t) {
struct timespec ts;
ts.tv_sec = t / 1000;
ts.tv_nsec = (t % 1000) * 1000000;
nanosleep(&ts, NULL);
}

View File

@ -9,7 +9,7 @@
#define NMSEFFECT_H 1 #define NMSEFFECT_H 1
// Function prototypes // Function prototypes
char nmseffect_exec(unsigned char *, int string_len, int autoDecrypt, int maskblank); char nmseffect_exec(unsigned char *, int string_len, int autoDecrypt);
void nmseffect_set_returnopts(char *); void nmseffect_set_returnopts(char *);
void nmseffect_set_clearscr(int); void nmseffect_set_clearscr(int);
void nmseffect_use_color(int); void nmseffect_use_color(int);