Add a utility read_to_string() function.
This commit is contained in:
@@ -3,11 +3,9 @@
|
||||
//! Read a sequence of Cretonne IL files and print them again to stdout. This has the effect of
|
||||
//! normalizing formatting and removing comments.
|
||||
|
||||
use std::fs::File;
|
||||
use std::io::{self, Read};
|
||||
|
||||
use std::io;
|
||||
use CommandResult;
|
||||
|
||||
use utils::read_to_string;
|
||||
use cton_reader::parse_functions;
|
||||
use cretonne::write::write_function;
|
||||
|
||||
@@ -22,10 +20,7 @@ pub fn run(files: Vec<String>) -> CommandResult {
|
||||
}
|
||||
|
||||
fn cat_one(filename: String) -> CommandResult {
|
||||
let mut file = try!(File::open(&filename).map_err(|e| format!("{}: {}", filename, e)));
|
||||
let mut buffer = String::new();
|
||||
try!(file.read_to_string(&mut buffer)
|
||||
.map_err(|e| format!("Couldn't read {}: {}", filename, e)));
|
||||
let buffer = try!(read_to_string(&filename).map_err(|e| format!("{}: {}", filename, e)));
|
||||
let items = try!(parse_functions(&buffer).map_err(|e| format!("{}: {}", filename, e)));
|
||||
|
||||
for (idx, func) in items.into_iter().enumerate() {
|
||||
|
||||
@@ -10,6 +10,7 @@ use docopt::Docopt;
|
||||
use std::io::{self, Write};
|
||||
use std::process;
|
||||
|
||||
mod utils;
|
||||
mod filetest;
|
||||
mod cat;
|
||||
mod print_cfg;
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
//!
|
||||
//! Read a series of Cretonne IL files and print their control flow graphs
|
||||
//! in graphviz format.
|
||||
use std::fs::File;
|
||||
use std::io::{Read, Write, stdout};
|
||||
use std::io::{Write, stdout};
|
||||
|
||||
use CommandResult;
|
||||
use utils::read_to_string;
|
||||
use cretonne::ir::Function;
|
||||
use cretonne::cfg::ControlFlowGraph;
|
||||
use cretonne::ir::instructions::InstructionData;
|
||||
@@ -156,10 +156,7 @@ impl<T: Write> CFGPrinter<T> {
|
||||
}
|
||||
|
||||
fn print_cfg(filename: String) -> CommandResult {
|
||||
let mut file = try!(File::open(&filename).map_err(|e| format!("{}: {}", filename, e)));
|
||||
let mut buffer = String::new();
|
||||
try!(file.read_to_string(&mut buffer)
|
||||
.map_err(|e| format!("Couldn't read {}: {}", filename, e)));
|
||||
let buffer = try!(read_to_string(&filename).map_err(|e| format!("{}: {}", filename, e)));
|
||||
let items = try!(parse_functions(&buffer).map_err(|e| format!("{}: {}", filename, e)));
|
||||
|
||||
let mut cfg_printer = CFGPrinter::new(stdout());
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use CommandResult;
|
||||
use utils::read_to_string;
|
||||
use filecheck::{CheckerBuilder, Checker, NO_VARIABLES};
|
||||
use std::fs::File;
|
||||
use std::io::{self, Read};
|
||||
|
||||
pub fn run(files: Vec<String>, verbose: bool) -> CommandResult {
|
||||
@@ -40,11 +40,7 @@ pub fn run(files: Vec<String>, verbose: bool) -> CommandResult {
|
||||
}
|
||||
|
||||
fn read_checkfile(filename: &str) -> Result<Checker, String> {
|
||||
let mut file = try!(File::open(&filename).map_err(|e| format!("{}: {}", filename, e)));
|
||||
let mut buffer = String::new();
|
||||
try!(file.read_to_string(&mut buffer)
|
||||
.map_err(|e| format!("Couldn't read {}: {}", filename, e)));
|
||||
|
||||
let buffer = try!(read_to_string(&filename).map_err(|e| format!("{}: {}", filename, e)));
|
||||
let mut builder = CheckerBuilder::new();
|
||||
try!(builder.text(&buffer).map_err(|e| format!("{}: {}", filename, e)));
|
||||
Ok(builder.finish())
|
||||
|
||||
13
cranelift/src/tools/utils.rs
Normal file
13
cranelift/src/tools/utils.rs
Normal file
@@ -0,0 +1,13 @@
|
||||
//! Utility functions.
|
||||
|
||||
use std::path::Path;
|
||||
use std::fs::File;
|
||||
use std::io::{Result, Read};
|
||||
|
||||
/// Read an entire file into a string.
|
||||
pub fn read_to_string<P: AsRef<Path>>(path: P) -> Result<String> {
|
||||
let mut file = try!(File::open(path));
|
||||
let mut buffer = String::new();
|
||||
try!(file.read_to_string(&mut buffer));
|
||||
Ok(buffer)
|
||||
}
|
||||
Reference in New Issue
Block a user