1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-30 04:27:45 +00:00

make seq build on nightly

This commit is contained in:
kwantam 2015-04-25 21:48:22 -04:00
parent b81a751ebd
commit c6585b7086

View file

@ -1,5 +1,5 @@
#![crate_name = "seq"] #![crate_name = "seq"]
#![feature(collections, core, rustc_private)] #![feature(rustc_private)]
// TODO: Make -w flag work with decimals // TODO: Make -w flag work with decimals
// TODO: Support -f flag // TODO: Support -f flag
@ -8,6 +8,7 @@ extern crate getopts;
extern crate libc; extern crate libc;
use std::cmp; use std::cmp;
use std::io::Write;
#[path = "../common/util.rs"] #[path = "../common/util.rs"]
#[macro_use] #[macro_use]
@ -43,7 +44,7 @@ fn parse_options(args: Vec<String>, options: &mut SeqOptions) -> Result<Vec<Stri
let mut iter = args.into_iter().skip(1); let mut iter = args.into_iter().skip(1);
loop { loop {
match iter.next() { match iter.next() {
Some(arg) => match arg.as_slice() { Some(arg) => match &arg[..] {
"--help" | "-h" => { "--help" | "-h" => {
print_help(&program); print_help(&program);
return Err(0); return Err(0);
@ -72,9 +73,9 @@ fn parse_options(args: Vec<String>, options: &mut SeqOptions) -> Result<Vec<Stri
break; break;
}, },
_ => { _ => {
if arg.len() > 1 && arg.as_slice().char_at(0) == '-' { if arg.len() > 1 && arg.chars().next().unwrap() == '-' {
let argptr: *const String = &arg; // escape from the borrow checker let argptr: *const String = &arg; // escape from the borrow checker
let mut chiter = unsafe { (*argptr).as_slice() }.chars().skip(1); let mut chiter = unsafe { &(*argptr)[..] }.chars().skip(1);
let mut ch = ' '; let mut ch = ' ';
while match chiter.next() { Some(m) => { ch = m; true } None => false } { while match chiter.next() { Some(m) => { ch = m; true } None => false } {
match ch { match ch {
@ -164,7 +165,7 @@ pub fn uumain(args: Vec<String>) -> i32 {
let mut largest_dec = 0; let mut largest_dec = 0;
let mut padding = 0; let mut padding = 0;
let first = if free.len() > 1 { let first = if free.len() > 1 {
let slice = free[0].as_slice(); let slice = &free[0][..];
let len = slice.len(); let len = slice.len();
let dec = slice.find('.').unwrap_or(len); let dec = slice.find('.').unwrap_or(len);
largest_dec = len - dec; largest_dec = len - dec;
@ -177,7 +178,7 @@ pub fn uumain(args: Vec<String>) -> i32 {
1.0 1.0
}; };
let step = if free.len() > 2 { let step = if free.len() > 2 {
let slice = free[1].as_slice(); let slice = &free[1][..];
let len = slice.len(); let len = slice.len();
let dec = slice.find('.').unwrap_or(len); let dec = slice.find('.').unwrap_or(len);
largest_dec = cmp::max(largest_dec, len - dec); largest_dec = cmp::max(largest_dec, len - dec);
@ -190,16 +191,16 @@ pub fn uumain(args: Vec<String>) -> i32 {
1.0 1.0
}; };
let last = { let last = {
let slice = free[free.len() - 1].as_slice(); let slice = &free[free.len() - 1][..];
padding = cmp::max(padding, slice.find('.').unwrap_or(slice.len())); padding = cmp::max(padding, slice.find('.').unwrap_or(slice.len()));
match parse_float(slice) { match parse_float(slice) {
Ok(n) => n, Ok(n) => n,
Err(s) => { show_error!("{}", s); return 1; } Err(s) => { show_error!("{}", s); return 1; }
} }
}; };
let separator = escape_sequences(options.separator.as_slice()); let separator = escape_sequences(&options.separator[..]);
let terminator = match options.terminator { let terminator = match options.terminator {
Some(term) => escape_sequences(term.as_slice()), Some(term) => escape_sequences(&term[..]),
None => separator.clone() None => separator.clone()
}; };
print_seq(first, step, last, largest_dec, separator, terminator, options.widths, padding); print_seq(first, step, last, largest_dec, separator, terminator, options.widths, padding);
@ -222,9 +223,9 @@ fn print_seq(first: f64, step: f64, last: f64, largest_dec: usize, separator: St
while !done_printing(value, step, last) { while !done_printing(value, step, last) {
let istr = value.to_string(); let istr = value.to_string();
let ilen = istr.len(); let ilen = istr.len();
let before_dec = istr.as_slice().find('.').unwrap_or(ilen); let before_dec = istr.find('.').unwrap_or(ilen);
if pad && before_dec < padding { if pad && before_dec < padding {
for _ in range(0, padding - before_dec) { for _ in 0..(padding - before_dec) {
if !pipe_print!("0") { if !pipe_print!("0") {
return; return;
} }
@ -239,7 +240,7 @@ fn print_seq(first: f64, step: f64, last: f64, largest_dec: usize, separator: St
} }
idec += 1; idec += 1;
} }
for _ in range(idec, largest_dec) { for _ in idec..largest_dec {
if !pipe_print!("0") { if !pipe_print!("0") {
return; return;
} }