diff --git a/.gitignore b/.gitignore deleted file mode 100644 index ea8c4bf..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target diff --git a/Cargo.lock b/Cargo.lock deleted file mode 100644 index 64d7111..0000000 --- a/Cargo.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "bRAC" -version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml deleted file mode 100644 index 4d53bbc..0000000 --- a/Cargo.toml +++ /dev/null @@ -1,6 +0,0 @@ -[package] -name = "bRAC" -version = "0.1.0" -edition = "2021" - -[dependencies] diff --git a/README.md b/README.md index 4705a6e..0353376 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,9 @@ # bRAC better RAC client + +## how to use + +```bash +rustc main.rs -o main # build +./main # run +``` diff --git a/main b/main new file mode 100644 index 0000000..ab5899d Binary files /dev/null and b/main differ diff --git a/src/main.rs b/main.rs similarity index 72% rename from src/main.rs rename to main.rs index f6a484d..a352c4d 100644 --- a/src/main.rs +++ b/main.rs @@ -1,32 +1,16 @@ use std::{error::Error, io::{stdin, stdout, BufRead, Read, Write}, net::TcpStream, thread}; const MAX_MESSAGES: usize = 100; +const DEFAULT_HOST: &str = "meex.lol:11234"; -type E = Box; - -fn send_message(host: &str, message: &str) -> Result<(), E> { +fn send_message(host: &str, message: &str) -> Result<(), Box> { let mut stream = TcpStream::connect(host)?; stream.write_all(&[0x01])?; stream.write_all(message.as_bytes())?; Ok(()) } -fn sanitize_string(s: &str, sanitize_newlines: bool) -> String { - let mut sanitized = s.replace(&['\x08', '\x0D', '\x1B'][..], ""); - - if sanitize_newlines { - sanitized = sanitized.replace("\n", "\\\\n"); - if !s.ends_with('\n') { - sanitized.push('\n'); - } - } - - sanitized -} - - -/// max messages count: 100 -fn read_messages(host: &str) -> Result, E> { +fn read_messages(host: &str) -> Result, Box> { let mut stream = TcpStream::connect(host)?; stream.write_all(&[0x00])?; let packet_size = { @@ -44,7 +28,6 @@ fn read_messages(host: &str) -> Result, E> { stream.read_exact(&mut buf)?; format!("{}{}", &buf_str, String::from_utf8_lossy(&buf).to_string()) }; - let packet_data = sanitize_string(&packet_data, false); let mut lines: Vec = packet_data.split("\n").map(|o| o.to_string()).collect(); lines.reverse(); lines.truncate(MAX_MESSAGES); @@ -52,15 +35,15 @@ fn read_messages(host: &str) -> Result, E> { Ok(lines) } -fn print_console(messages: Vec) -> Result<(), E> { +fn print_console(messages: Vec) -> Result<(), Box> { let mut out = stdout().lock(); - let text = format!("{}\n> ", messages.join("\n")); + let text = format!("{}{}\n> ", "\n".repeat(MAX_MESSAGES - messages.len()), messages.join("\n")); out.write_all(text.as_bytes())?; out.flush()?; Ok(()) } -fn recv_loop(host: &str) -> Result<(), E> { +fn recv_loop(host: &str) -> Result<(), Box> { let mut cache = Vec::new(); while let Ok(messages) = read_messages(host) { if cache == messages { continue } @@ -84,13 +67,13 @@ fn main() { let host = read_host(); let host = if let Some(host) = &host { - if host.is_empty() { - "meex.lol:11234" - } else { - host.as_str() + if host.is_empty() { + DEFAULT_HOST + } else { + host } - } else { - "meex.lol:11234" + } else { + DEFAULT_HOST }.to_string(); thread::spawn({