1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-28 11:37:44 +00:00

Merge pull request #119 from Arcterus/tac

tac: fix an issue with --separator
This commit is contained in:
Heather 2014-02-28 08:41:08 +03:00
commit b68dd16d56

View file

@ -50,7 +50,13 @@ fn main() {
let before = matches.opt_present("b"); let before = matches.opt_present("b");
let regex = matches.opt_present("r"); let regex = matches.opt_present("r");
let separator = match matches.opt_str("s") { let separator = match matches.opt_str("s") {
Some(m) => m, Some(m) => {
if m.len() == 0 {
crash!(1, "separator cannot be empty")
} else {
m
}
}
None => ~"\n" None => ~"\n"
}; };
tac(matches.free, before, regex, separator); tac(matches.free, before, regex, separator);
@ -61,9 +67,11 @@ fn tac(filenames: ~[~str], before: bool, _: bool, separator: ~str) {
for filename in filenames.move_iter() { for filename in filenames.move_iter() {
let mut file = io::BufferedReader::new( let mut file = io::BufferedReader::new(
crash_if_err!(1, io::File::open(&Path::new(filename)))); crash_if_err!(1, io::File::open(&Path::new(filename))));
let data = crash_if_err!(1, file.read_to_str()); let mut data = crash_if_err!(1, file.read_to_str());
let mut split_vec: ~[&str] = data.split_str(separator).collect(); if data.ends_with("\n") {
split_vec.pop(); // removes blank line that is inserted otherwise data.pop_char(); // removes blank line that is inserted otherwise
}
let split_vec: ~[&str] = data.split_str(separator).collect();
let rev: ~str = split_vec.rev_iter().fold(~"", |a, &b| let rev: ~str = split_vec.rev_iter().fold(~"", |a, &b|
a + if before { a + if before {
separator + b separator + b