summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/backends/clang.rs13
-rw-r--r--src/backends/mod.rs27
-rw-r--r--src/backends/python.rs1
3 files changed, 5 insertions, 36 deletions
diff --git a/src/backends/clang.rs b/src/backends/clang.rs
index 6248218..4259546 100644
--- a/src/backends/clang.rs
+++ b/src/backends/clang.rs
@@ -2,10 +2,9 @@ use serde_derive::{ Serialize, Deserialize };
use crate::backends::{ Backend, mk_tmp_dir, RunStatus };
use std::path::{ Path, PathBuf };
use std::io::{ Result, Error, ErrorKind };
-use std::process::Command;
+use std::process::{ Command };
use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};
-use log::trace;
#[derive(Debug, Serialize, Deserialize, Default)]
@@ -48,14 +47,12 @@ impl ClangBackend {
if src_mod.is_err() || binary_mod.is_err() || src_mod.unwrap() > binary_mod.unwrap() {
let clang_status = Command::new(&self.cc)
- .args(&self.args)
.arg("-x").arg("c++")
.arg(fname.as_os_str())
.arg("-o").arg(&binary_fname)
- .arg("-lstdc++")
+ .args(&self.args)
.status()?;
-
- trace!("{:#?}", clang_status);
+
if !clang_status.success() {
return Err(Error::new(ErrorKind::Other,
"could not compile"));
@@ -79,7 +76,6 @@ impl Backend for ClangBackend {
let binary_fname = self.build(fname)?;
let binary_proc = Command::new(&binary_fname)
- .stdin(self.get_stdin(fname))
.spawn()?;
get_status(binary_proc)
@@ -87,7 +83,7 @@ impl Backend for ClangBackend {
}
use nix::sys::wait;
-
+
#[cfg(unix)]
fn get_status(proc: std::process::Child) -> Result<RunStatus> {
let id = proc.id() as i32; // for fuck sake, why this emits u32?
@@ -97,6 +93,7 @@ fn get_status(proc: std::process::Child) -> Result<RunStatus> {
.map_err(|err| Error::new(ErrorKind::Other, err));
let status = status_result?;
+
match status {
wait::WaitStatus::Exited(pid, code) => {
assert_eq!(pid.as_raw(), id);
diff --git a/src/backends/mod.rs b/src/backends/mod.rs
index 010c4d9..0af1bb1 100644
--- a/src/backends/mod.rs
+++ b/src/backends/mod.rs
@@ -3,9 +3,6 @@ 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;
@@ -28,30 +25,6 @@ pub trait Backend {
fn get_template(&self) -> Option<&str>;
fn run(&self, fname: &Path) -> Result<RunStatus>;
-
- fn try_guess_test_file(&self, fname: &Path) -> Option<PathBuf> {
- let maybe_test = fname.with_extension("txt");
- if maybe_test.exists() {
- return Some(maybe_test);
- }
- 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> {
diff --git a/src/backends/python.rs b/src/backends/python.rs
index f1d0e4d..66402b9 100644
--- a/src/backends/python.rs
+++ b/src/backends/python.rs
@@ -38,7 +38,6 @@ impl Backend for PythonBackend {
let mut child = Command::new(self.get_interpreter())
.arg(fname.as_os_str())
- .stdin(self.get_stdin(fname))
.spawn()?;
let timeout = std::time::Duration::from_secs_f32(self.timeout.unwrap_or(1.0));