From 21c62fd61f2abb2138cec7d680a46d7ff615f68f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 5 May 2021 21:14:49 -0600 Subject: [PATCH] Allow character devices to be used as run input --- src/main.rs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index 1e2bfc2fbc..a99488a435 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,10 +1,8 @@ -#![deny(warnings)] - extern crate syscall; use std::env; use std::fs::{File, read_dir}; -use std::io::{Read, Error, Result}; +use std::io::{BufReader, BufRead, Error, Result}; use std::os::unix::io::{AsRawFd, FromRawFd, RawFd}; use std::path::Path; use std::process::Command; @@ -29,11 +27,11 @@ fn switch_stdio(stdio: &str) -> Result<()> { } pub fn run(file: &Path) -> Result<()> { - let mut data = String::new(); - File::open(file)?.read_to_string(&mut data)?; - - for line in data.lines() { - let line = line.trim(); + let file = File::open(file)?; + let reader = BufReader::new(file); + for line_res in reader.lines() { + let line_raw = line_res?; + let line = line_raw.trim(); if ! line.is_empty() && ! line.starts_with('#') { let mut args = line.split(' ').map(|arg| if arg.starts_with('$') { env::var(&arg[1..]).unwrap_or(String::new())