From abc9af02de6ca2dec7f4c4256e0523a207c85ce3 Mon Sep 17 00:00:00 2001 From: Nathan Fisher Date: Wed, 23 Aug 2023 15:57:53 -0400 Subject: [PATCH] Implement random in-crate, remove all dependencies --- .gitignore | 1 + Cargo.lock | 68 ----------------------------------------------------- Cargo.toml | 1 - src/main.rs | 20 ++++++++-------- 4 files changed, 11 insertions(+), 79 deletions(-) diff --git a/.gitignore b/.gitignore index ea8c4bf..fd9f291 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /target +*.core diff --git a/Cargo.lock b/Cargo.lock index 6c1309f..ced3267 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,74 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "getrandom" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "libc" -version = "0.2.140" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" - [[package]] name = "liff" version = "1.0.0" -dependencies = [ - "rand", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" diff --git a/Cargo.toml b/Cargo.toml index 0855b4d..7b8dd3e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,6 @@ path = "src/main.rs" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -rand = "0.8" [profile.release] codegen-units = 1 diff --git a/src/main.rs b/src/main.rs index 992ba31..8d0461e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,11 +1,8 @@ -use { - rand::Rng, - std::{ - env, - fs::{self, DirEntry}, - io::{self, Write}, - path::PathBuf, - }, +use std::{ + env, + fs::{self, DirEntry, File}, + io::{self, Read, Write}, + path::PathBuf, }; fn get_datadirs() -> Vec { @@ -57,8 +54,11 @@ fn get_files() -> Vec { fn main() -> Result<(), io::Error> { let files = get_files(); let len = files.len(); - let mut rng = rand::thread_rng(); - let idx = rng.gen_range(0..len); + let mut buf = [0; 4]; + let mut fd = File::open("/dev/urandom")?; + fd.read_exact(&mut buf)?; + let idx = u32::from_ne_bytes(buf); + let idx: usize = usize::try_from(idx).unwrap() % len; if let Some(path) = files.get(idx) { let contents = fs::read(path)?; io::stdout().write_all(&contents)?;