diff options
author | syn <isaqtm@gmail.com> | 2020-01-18 21:27:11 +0300 |
---|---|---|
committer | syn <isaqtm@gmail.com> | 2020-01-18 21:27:11 +0300 |
commit | 7af2343e276d3040937a6b2e075b4557b83aeb0e (patch) | |
tree | b49cf9aa2fdd351312d788f1d3dd12284d4d4cdd /src/backends/mod.rs | |
parent | 326eea2a59784deda086c851d5794a5eb534659b (diff) | |
download | evr-7af2343e276d3040937a6b2e075b4557b83aeb0e.tar.gz |
Extract 'stdin from file' & add to clang
Diffstat (limited to 'src/backends/mod.rs')
-rw-r--r-- | src/backends/mod.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/backends/mod.rs b/src/backends/mod.rs index 25ac164..010c4d9 100644 --- a/src/backends/mod.rs +++ b/src/backends/mod.rs @@ -3,6 +3,9 @@ use std::env::temp_dir; use lazy_static::lazy_static; use std::io::{ Error, ErrorKind, Result }; use nix::sys::signal::Signal as NixSignal; +use std::process::Stdio; +use std::fs::File; +use log::warn; pub mod python; pub mod clang; @@ -33,6 +36,22 @@ pub trait Backend { } None } + + fn get_stdin(&self, fname: &Path) -> Stdio { + match self.try_guess_test_file(fname) { + Some(test_filename) => match File::open(&test_filename) { + Ok(test_content) => { + println!("Using {}", test_filename.as_path().display()); + Stdio::from(test_content) + }, + Err(err) => { + warn!("Could not open test file. Fallback to piped: {}", err); + Stdio::piped() + } + }, + None => Stdio::piped() + } + } } fn mk_tmp_dir() -> Result<&'static std::path::PathBuf> { |