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:
parent
b81a751ebd
commit
c6585b7086
1 changed files with 13 additions and 12 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue