Add a utility read_to_string() function.

This commit is contained in:
Jakob Stoklund Olesen
2016-09-14 13:14:43 -07:00
parent ddadf2e7c1
commit 99c04383c8
5 changed files with 22 additions and 20 deletions

View File

@@ -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() {

View File

@@ -10,6 +10,7 @@ use docopt::Docopt;
use std::io::{self, Write};
use std::process;
mod utils;
mod filetest;
mod cat;
mod print_cfg;

View File

@@ -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());

View File

@@ -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())

View 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)
}