diff --git a/src/base64/base64.rs b/src/base64/base64.rs index 466aedb0c..7d17d6566 100644 --- a/src/base64/base64.rs +++ b/src/base64/base64.rs @@ -44,7 +44,7 @@ pub fn uumain(args: Vec) -> int { optflag("h", "help", "display this help text and exit"), optflag("V", "version", "output version information and exit") ]; - let matches = match getopts(args.tail(), opts) { + let matches = match getopts(args.tail(), &opts) { Ok(m) => m, Err(e) => { error!("error: {}", e); @@ -53,15 +53,15 @@ pub fn uumain(args: Vec) -> int { }; let progname = args[0].clone(); - let usage = usage("Base64 encode or decode FILE, or standard input, to standard output.", opts); + let usage = usage("Base64 encode or decode FILE, or standard input, to standard output.", &opts); let mode = if matches.opt_present("help") { - Help + Mode::Help } else if matches.opt_present("version") { - Version + Mode::Version } else if matches.opt_present("decode") { - Decode + Mode::Decode } else { - Encode + Mode::Encode }; let ignore_garbage = matches.opt_present("ignore-garbage"); let line_wrap = match matches.opt_str("wrap") { @@ -86,10 +86,10 @@ pub fn uumain(args: Vec) -> int { }; match mode { - Decode => decode(input, ignore_garbage), - Encode => encode(input, line_wrap), - Help => help(progname.as_slice(), usage.as_slice()), - Version => version() + Mode::Decode => decode(input, ignore_garbage), + Mode::Encode => encode(input, line_wrap), + Mode::Help => help(progname.as_slice(), usage.as_slice()), + Mode::Version => version() } 0 diff --git a/src/basename/basename.rs b/src/basename/basename.rs index dcb1f71ef..f437fd81c 100644 --- a/src/basename/basename.rs +++ b/src/basename/basename.rs @@ -32,7 +32,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => crash!(1, "Invalid options\n{}", f) }; @@ -43,7 +43,7 @@ pub fn uumain(args: Vec) -> int { println!("Print NAME with any leading directory components removed."); println!("If specified, also remove a trailing SUFFIX."); - print(getopts::usage("", opts).as_slice()); + print(getopts::usage("", &opts).as_slice()); return 0; } diff --git a/src/cat/cat.rs b/src/cat/cat.rs index b84444a5c..75eb900ea 100644 --- a/src/cat/cat.rs +++ b/src/cat/cat.rs @@ -36,7 +36,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("h", "help", "display this help and exit"), getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => panic!("Invalid options\n{}", f) }; @@ -47,7 +47,7 @@ pub fn uumain(args: Vec) -> int { println!(" {0:s} [OPTION]... [FILE]...", program); println!(""); print(getopts::usage("Concatenate FILE(s), or standard input, to \ - standard output.", opts).as_slice()); + standard output.", &opts).as_slice()); println!(""); println!("With no FILE, or when FILE is -, read standard input."); return 0; @@ -57,18 +57,18 @@ pub fn uumain(args: Vec) -> int { return 0; } - let mut number_mode = NumberNone; + let mut number_mode = NumberingMode::NumberNone; if matches.opt_present("n") { - number_mode = NumberAll; + number_mode = NumberingMode::NumberAll; } if matches.opt_present("b") { - number_mode = NumberNonEmpty; + number_mode = NumberingMode::NumberNonEmpty; } - let show_nonprint = matches.opts_present(["A".to_string(), "e".to_string(), + let show_nonprint = matches.opts_present(&["A".to_string(), "e".to_string(), "t".to_string(), "v".to_string()]); - let show_ends = matches.opts_present(["E".to_string(), "A".to_string(), + let show_ends = matches.opts_present(&["E".to_string(), "A".to_string(), "e".to_string()]); - let show_tabs = matches.opts_present(["A".to_string(), "T".to_string(), + let show_tabs = matches.opts_present(&["A".to_string(), "T".to_string(), "t".to_string()]); let squeeze_blank = matches.opt_present("s"); let mut files = matches.free; @@ -104,7 +104,7 @@ fn write_lines(files: Vec, number: NumberingMode, squeeze_blank: bool, let mut writer = UnsafeWriter::new(out_buf.as_mut_slice(), stdout_raw()); let mut at_line_start = true; loop { - let n = match reader.read(in_buf) { + let n = match reader.read(&mut in_buf) { Ok(n) if n != 0 => n, _ => break, }; @@ -118,7 +118,7 @@ fn write_lines(files: Vec, number: NumberingMode, squeeze_blank: bool, }; if in_buf[pos] == '\n' as u8 { if !at_line_start || !squeeze_blank { - if at_line_start && number == NumberAll { + if at_line_start && number == NumberingMode::NumberAll { (write!(&mut writer, "{0:6u}\t", line_counter)).unwrap(); line_counter += 1; } @@ -133,7 +133,7 @@ fn write_lines(files: Vec, number: NumberingMode, squeeze_blank: bool, at_line_start = true; continue; } - if at_line_start && number != NumberNone { + if at_line_start && number != NumberingMode::NumberNone { (write!(&mut writer, "{0:6u}\t", line_counter)).unwrap(); line_counter += 1; } @@ -180,7 +180,7 @@ fn write_bytes(files: Vec, number: NumberingMode, squeeze_blank: bool, let mut writer = UnsafeWriter::new(out_buf.as_mut_slice(), stdout_raw()); let mut at_line_start = true; loop { - let n = match reader.read(in_buf) { + let n = match reader.read(&mut in_buf) { Ok(n) if n != 0 => n, _ => break, }; @@ -191,7 +191,7 @@ fn write_bytes(files: Vec, number: NumberingMode, squeeze_blank: bool, } if byte == '\n' as u8 { if !at_line_start || !squeeze_blank { - if at_line_start && number == NumberAll { + if at_line_start && number == NumberingMode::NumberAll { (write!(&mut writer, "{0:6u}\t", line_counter)).unwrap(); line_counter += 1; } @@ -206,7 +206,7 @@ fn write_bytes(files: Vec, number: NumberingMode, squeeze_blank: bool, at_line_start = true; continue; } - if at_line_start && number != NumberNone { + if at_line_start && number != NumberingMode::NumberNone { (write!(&mut writer, "{0:6u}\t", line_counter)).unwrap(); line_counter += 1; at_line_start = false; @@ -228,8 +228,8 @@ fn write_bytes(files: Vec, number: NumberingMode, squeeze_blank: bool, _ => byte, }; match byte { - 0 ... 31 => writer.write(['^' as u8, byte + 64]), - 127 => writer.write(['^' as u8, byte - 64]), + 0 ... 31 => writer.write(&['^' as u8, byte + 64]), + 127 => writer.write(&['^' as u8, byte - 64]), _ => writer.write_u8(byte), } } else { @@ -251,7 +251,7 @@ fn write_fast(files: Vec) { }; loop { - match reader.read(in_buf) { + match reader.read(&mut in_buf) { Ok(n) if n != 0 => { // This interface is completely broken. writer.write(in_buf.slice_to(n)).unwrap(); @@ -267,7 +267,7 @@ fn exec(files: Vec, number: NumberingMode, show_nonprint: bool, if show_nonprint || show_tabs { write_bytes(files, number, squeeze_blank, show_ends, show_nonprint, show_tabs); - } else if number != NumberNone || squeeze_blank || show_ends { + } else if number != NumberingMode::NumberNone || squeeze_blank || show_ends { write_lines(files, number, squeeze_blank, show_ends); } else { write_fast(files); diff --git a/src/chmod/chmod.rs b/src/chmod/chmod.rs index 0b1286613..15b34f299 100644 --- a/src/chmod/chmod.rs +++ b/src/chmod/chmod.rs @@ -47,7 +47,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit") ]; // TODO: sanitize input for - at beginning (e.g. chmod -x testfile). Solution is to add a to -x, making a-x - let mut matches = match getopts::getopts(args.tail(), opts) { + let mut matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => { crash!(1, "{}", f) @@ -66,7 +66,7 @@ Each MODE is of the form '[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=]?[0-7]+'.", name = NAME, version = VERSION, program = program, usage = getopts::usage("Change the mode of each FILE to MODE. \ With --reference, change the mode of \ - each FILE to that of RFILE.", opts)); + each FILE to that of RFILE.", &opts)); } else if matches.opt_present("version") { println!("{} v{}", NAME, VERSION); } else if matches.free.is_empty() && matches.opt_present("reference") || matches.free.len() < 2 { diff --git a/src/chroot/chroot.rs b/src/chroot/chroot.rs index 249d3800f..bb43cf1eb 100644 --- a/src/chroot/chroot.rs +++ b/src/chroot/chroot.rs @@ -51,17 +51,17 @@ pub fn uumain(args: Vec) -> int { optflag("V", "version", "Show program's version") ]; - let opts = match getopts(args.tail(), options) { + let opts = match getopts(args.tail(), &options) { Ok(m) => m, Err(f) => { show_error!("{}", f); - help_menu(program.as_slice(), options); + help_menu(program.as_slice(), &options); return 1 } }; if opts.opt_present("V") { version(); return 0 } - if opts.opt_present("h") { help_menu(program.as_slice(), options); return 0 } + if opts.opt_present("h") { help_menu(program.as_slice(), &options); return 0 } if opts.free.len() == 0 { println!("Missing operand: NEWROOT"); @@ -126,9 +126,7 @@ fn set_context(root: &Path, options: &getopts::Matches) { fn enter_chroot(root: &Path) { let root_str = root.display(); - if !std::os::change_dir(root) { - crash!(1, "cannot chdir to {}", root_str) - }; + std::os::change_dir(root).unwrap(); let err = unsafe { chroot(".".to_c_str().unwrap() as *const libc::c_char) }; diff --git a/src/cksum/cksum.rs b/src/cksum/cksum.rs index 4afa4db60..0a3b793e7 100644 --- a/src/cksum/cksum.rs +++ b/src/cksum/cksum.rs @@ -61,7 +61,7 @@ fn cksum(fname: &str) -> IoResult<(u32, uint)> { let mut bytes: [u8, ..1024 * 1024] = unsafe { mem::uninitialized() }; loop { - match rd.read(bytes) { + match rd.read(&mut bytes) { Ok(num_bytes) => { for &b in bytes.slice_to(num_bytes).iter() { crc = crc_update(crc, b); @@ -80,7 +80,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(err) => panic!("{}", err), }; diff --git a/src/comm/comm.rs b/src/comm/comm.rs index 505a70a30..600922f25 100644 --- a/src/comm/comm.rs +++ b/src/comm/comm.rs @@ -52,8 +52,8 @@ enum LineReader { impl LineReader { fn read_line(&mut self) -> IoResult { match self { - &Stdin(ref mut r) => r.read_line(), - &FileIn(ref mut r) => r.read_line(), + &LineReader::Stdin(ref mut r) => r.read_line(), + &LineReader::FileIn(ref mut r) => r.read_line(), } } } @@ -117,7 +117,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(err) => panic!("{}", err), }; diff --git a/src/cp/cp.rs b/src/cp/cp.rs index df4ed6b3e..c5f366cb0 100644 --- a/src/cp/cp.rs +++ b/src/cp/cp.rs @@ -36,7 +36,7 @@ pub fn uumain(args: Vec) -> int { optflag("h", "help", "display this help and exit"), optflag("", "version", "output version information and exit"), ]; - let matches = match getopts(args.tail(), opts) { + let matches = match getopts(args.tail(), &opts) { Ok(m) => m, Err(e) => { error!("error: {}", e); @@ -45,19 +45,19 @@ pub fn uumain(args: Vec) -> int { }; let progname = &args[0]; - let usage = usage("Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.", opts); + let usage = usage("Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.", &opts); let mode = if matches.opt_present("version") { - Version + Mode::Version } else if matches.opt_present("help") { - Help + Mode::Help } else { - Copy + Mode::Copy }; match mode { - Copy => copy(matches), - Help => help(progname.as_slice(), usage.as_slice()), - Version => version(), + Mode::Copy => copy(matches), + Mode::Help => help(progname.as_slice(), usage.as_slice()), + Mode::Version => version(), } 0 @@ -168,12 +168,12 @@ pub fn paths_refer_to_same_file(p1: &Path, p2: &Path) -> io::IoResult { if p1_lstat.kind == io::TypeSymlink { raw_p1 = fs::readlink(&raw_p1).unwrap(); } - raw_p1 = os::make_absolute(&raw_p1); + raw_p1 = os::make_absolute(&raw_p1).unwrap(); if p2_lstat.kind == io::TypeSymlink { raw_p2 = fs::readlink(&raw_p2).unwrap(); } - raw_p2 = os::make_absolute(&raw_p2); + raw_p2 = os::make_absolute(&raw_p2).unwrap(); Ok(raw_p1 == raw_p2) } diff --git a/src/cut/buffer.rs b/src/cut/buffer.rs index 77e9a4e67..74994011a 100644 --- a/src/cut/buffer.rs +++ b/src/cut/buffer.rs @@ -99,7 +99,7 @@ impl Bytes::Select for BufReader { } let newline_idx = match self.end - self.start { - 0 => return Bytes::EndOfFile, + 0 => return Bytes::Selected::EndOfFile, buf_used if bytes < buf_used => { // because the output delimiter should only be placed between // segments check if the byte after bytes is a newline @@ -114,7 +114,7 @@ impl Bytes::Select for BufReader { self.start += bytes; - return Bytes::Complete(segment); + return Bytes::Selected::Complete(segment); } } } @@ -129,7 +129,7 @@ impl Bytes::Select for BufReader { self.start = 0; self.end = 0; - return Bytes::Partial(segment); + return Bytes::Selected::Partial(segment); } } } @@ -139,6 +139,6 @@ impl Bytes::Select for BufReader { let segment = self.buffer.slice(self.start, new_start); self.start = new_start; - Bytes::NewlineFound(segment) + Bytes::Selected::NewlineFound(segment) } } diff --git a/src/cut/cut.rs b/src/cut/cut.rs index 64ea51032..bf97e1d14 100644 --- a/src/cut/cut.rs +++ b/src/cut/cut.rs @@ -55,7 +55,8 @@ fn list_to_ranges(list: &str, complement: bool) -> Result, String> { fn cut_bytes(reader: R, ranges: &Vec, opts: &Options) -> int { - use buffer::Bytes::{Select, NewlineFound, Complete, Partial, EndOfFile}; + use buffer::Bytes::Select; + use buffer::Bytes::Selected::{NewlineFound, Complete, Partial, EndOfFile}; let mut buf_read = buffer::BufReader::new(reader); let mut out = BufferedWriter::new(stdio::stdout_raw()); @@ -126,7 +127,7 @@ fn cut_bytes(reader: R, } buf_read.consume_line(); - out.write([b'\n']).unwrap(); + out.write(&[b'\n']).unwrap(); } 0 @@ -261,7 +262,7 @@ fn cut_fields_delimiter(reader: R, if ! only_delimited { out.write(line.as_slice()).unwrap(); if line[line.len() - 1] != b'\n' { - out.write([b'\n']).unwrap(); + out.write(&[b'\n']).unwrap(); } } @@ -343,7 +344,7 @@ fn cut_fields(reader: R, if ! opts.only_delimited { out.write(line.as_slice()).unwrap(); if line[line.len() - 1] != b'\n' { - out.write([b'\n']).unwrap(); + out.write(&[b'\n']).unwrap(); } } @@ -404,13 +405,13 @@ fn cut_files(mut filenames: Vec, mode: Mode) -> int { if stdin_read { continue } exit_code |= match mode { - Bytes(ref ranges, ref opts) => { + Mode::Bytes(ref ranges, ref opts) => { cut_bytes(stdio::stdin_raw(), ranges, opts) } - Characters(ref ranges, ref opts) => { + Mode::Characters(ref ranges, ref opts) => { cut_characters(stdio::stdin_raw(), ranges, opts) } - Fields(ref ranges, ref opts) => { + Mode::Fields(ref ranges, ref opts) => { cut_fields(stdio::stdin_raw(), ranges, opts) } }; @@ -433,11 +434,11 @@ fn cut_files(mut filenames: Vec, mode: Mode) -> int { }; exit_code |= match mode { - Bytes(ref ranges, ref opts) => cut_bytes(file, ranges, opts), - Characters(ref ranges, ref opts) => { + Mode::Bytes(ref ranges, ref opts) => cut_bytes(file, ranges, opts), + Mode::Characters(ref ranges, ref opts) => { cut_characters(file, ranges, opts) } - Fields(ref ranges, ref opts) => cut_fields(file, ranges, opts) + Mode::Fields(ref ranges, ref opts) => cut_fields(file, ranges, opts) }; } } @@ -459,7 +460,7 @@ pub fn uumain(args: Vec) -> int { optflag("", "version", "output version information and exit"), ]; - let matches = match getopts(args.tail(), opts) { + let matches = match getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => { show_error!("Invalid options\n{}", f) @@ -471,7 +472,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {0} OPTION... [FILE]...", args[0]); println!(""); - print(usage("Print selected parts of lines from each FILE to standard output.", opts).as_slice()); + print(usage("Print selected parts of lines from each FILE to standard output.", &opts).as_slice()); println!(""); println!("Use one, and only one of -b, -c or -f. Each LIST is made up of one"); println!("range, or many ranges separated by commas. Selected input is written"); @@ -499,13 +500,13 @@ pub fn uumain(args: Vec) -> int { matches.opt_str("fields")) { (Some(byte_ranges), None, None) => { list_to_ranges(byte_ranges.as_slice(), complement).map(|ranges| - Bytes(ranges, + Mode::Bytes(ranges, Options { out_delim: matches.opt_str("output-delimiter") }) ) } (None, Some(char_ranges), None) => { list_to_ranges(char_ranges.as_slice(), complement).map(|ranges| - Characters(ranges, + Mode::Characters(ranges, Options { out_delim: matches.opt_str("output-delimiter") }) ) } @@ -520,7 +521,7 @@ pub fn uumain(args: Vec) -> int { if delim.as_slice().char_len() != 1 { Err("the delimiter must be a single character".to_string()) } else { - Ok(Fields(ranges, + Ok(Mode::Fields(ranges, FieldOptions { delimiter: delim, out_delimeter: out_delim, @@ -528,7 +529,7 @@ pub fn uumain(args: Vec) -> int { })) } } - None => Ok(Fields(ranges, + None => Ok(Mode::Fields(ranges, FieldOptions { delimiter: "\t".to_string(), out_delimeter: out_delim, diff --git a/src/dirname/dirname.rs b/src/dirname/dirname.rs index 75db84529..0ca8286c1 100644 --- a/src/dirname/dirname.rs +++ b/src/dirname/dirname.rs @@ -23,7 +23,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => panic!("Invalid options\n{}", f) }; @@ -36,7 +36,7 @@ pub fn uumain(args: Vec) -> int { println!(""); print(getopts::usage("Output each NAME with its last non-slash component and trailing slashes removed; if NAME contains no /'s, output '.' (meaning the current -directory).", opts).as_slice()); +directory).", &opts).as_slice()); return 0; } diff --git a/src/du/du.rs b/src/du/du.rs index d119a6a9b..bebbfd103 100644 --- a/src/du/du.rs +++ b/src/du/du.rs @@ -157,7 +157,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => { show_error!("Invalid options\n{}", f); @@ -184,7 +184,7 @@ Units are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, ... (pow‐ ers of 1000).", program = program, version = VERSION, - usage = getopts::usage("Summarize disk usage of each FILE, recursively for directories.", opts)); + usage = getopts::usage("Summarize disk usage of each FILE, recursively for directories.", &opts)); return 0; } else if matches.opt_present("version") { println!("{} version: {}", program, VERSION); diff --git a/src/echo/echo.rs b/src/echo/echo.rs index 545970cbe..773417b30 100644 --- a/src/echo/echo.rs +++ b/src/echo/echo.rs @@ -142,7 +142,7 @@ fn print_help(program: &String) { println!(" {0:s} [SHORT-OPTION]... [STRING]...", *program); println!(" {0:s} LONG-OPTION", *program); println!(""); - println(getopts::usage("Echo the STRING(s) to standard output.", opts).as_slice()); + println(getopts::usage("Echo the STRING(s) to standard output.", &opts).as_slice()); println("If -e is in effect, the following sequences are recognized: \\\\ backslash diff --git a/src/expand/expand.rs b/src/expand/expand.rs index 08f48c1a1..557335cb1 100644 --- a/src/expand/expand.rs +++ b/src/expand/expand.rs @@ -82,7 +82,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => crash!(1, "{}", f) }; @@ -91,7 +91,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage: {:s} [OPTION]... [FILE]...", NAME); io::print(getopts::usage( "Convert tabs in each FILE to spaces, writing to standard output.\n\ - With no FILE, or when FILE is -, read standard input.", opts).as_slice()); + With no FILE, or when FILE is -, read standard input.", &opts).as_slice()); return 0; } diff --git a/src/factor/factor.rs b/src/factor/factor.rs index e5399fdb1..757b01932 100644 --- a/src/factor/factor.rs +++ b/src/factor/factor.rs @@ -69,7 +69,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("v", "version", "print the version and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => crash!(1, "Invalid options\n{}", f) }; @@ -82,7 +82,7 @@ pub fn uumain(args: Vec) -> int { \t{program} [OPTION]\n\ \n\ {usage}", program = program, version = VERSION, usage = getopts::usage("Print the prime factors of the given number(s). \ - If none are specified, read from standard input.", opts)); + If none are specified, read from standard input.", &opts)); return 1; } if matches.opt_present("version") { diff --git a/src/fmt/linebreak.rs b/src/fmt/linebreak.rs index 4c0dac617..7ba4c73bf 100644 --- a/src/fmt/linebreak.rs +++ b/src/fmt/linebreak.rs @@ -9,11 +9,10 @@ use FmtOptions; use parasplit::{Paragraph, ParaWords, WordInfo}; -use std::num::{Float, SignedInt}; +use std::num::{Float, Int, SignedInt}; use std::i64; use std::cmp; use std::mem; -use std::num; struct BreakArgs<'a> { opts : &'a FmtOptions, @@ -373,7 +372,7 @@ fn compute_demerits(delta_len: int, stretch: int, wlen: int, prev_rat: f32) -> ( // we penalize lines that have very different ratios from previous lines let bad_delta_r = (DR_MULT * (((ratio - prev_rat) / 2.0).powf(3f32)).abs()) as i64; - let demerits = num::pow(1 + bad_linelen + bad_wordlen + bad_delta_r, 2); + let demerits = Int::pow(1 + bad_linelen + bad_wordlen + bad_delta_r, 2); (demerits, ratio) } diff --git a/src/fmt/parasplit.rs b/src/fmt/parasplit.rs index bac590cdb..d4094b2ba 100644 --- a/src/fmt/parasplit.rs +++ b/src/fmt/parasplit.rs @@ -40,16 +40,16 @@ impl Line { // when we know that it's a FormatLine, as in the ParagraphStream iterator fn get_formatline(self) -> FileLine { match self { - FormatLine(fl) => fl, - NoFormatLine(..) => panic!("Found NoFormatLine when expecting FormatLine") + Line::FormatLine(fl) => fl, + Line::NoFormatLine(..) => panic!("Found NoFormatLine when expecting FormatLine") } } // when we know that it's a NoFormatLine, as in the ParagraphStream iterator fn get_noformatline(self) -> (String, bool) { match self { - NoFormatLine(s, b) => (s, b), - FormatLine(..) => panic!("Found FormatLine when expecting NoFormatLine") + Line::NoFormatLine(s, b) => (s, b), + Line::FormatLine(..) => panic!("Found FormatLine when expecting NoFormatLine") } } } @@ -154,34 +154,34 @@ impl<'a> Iterator for FileLines<'a> { // Err(true) indicates that this was a linebreak, // which is important to know when detecting mail headers if n.as_slice().is_whitespace() { - return Some(NoFormatLine("\n".to_string(), true)); + return Some(Line::NoFormatLine("\n".to_string(), true)); } // if this line does not match the prefix, // emit the line unprocessed and iterate again let (pmatch, poffset) = self.match_prefix(n.as_slice()); if !pmatch { - return Some(NoFormatLine(n, false)); + return Some(Line::NoFormatLine(n, false)); } else if n.as_slice().slice_from(poffset + self.opts.prefix.len()).is_whitespace() { // if the line matches the prefix, but is blank after, // don't allow lines to be combined through it (that is, // treat it like a blank line, except that since it's // not truly blank we will not allow mail headers on the // following line) - return Some(NoFormatLine(n, false)); + return Some(Line::NoFormatLine(n, false)); } // skip if this line matches the anti_prefix // (NOTE definition of match_anti_prefix is TRUE if we should process) if !self.match_anti_prefix(n.as_slice()) { - return Some(NoFormatLine(n, false)); + return Some(Line::NoFormatLine(n, false)); } // figure out the indent, prefix, and prefixindent ending points let prefix_end = poffset + self.opts.prefix.len(); let (indent_end, prefix_len, indent_len) = self.compute_indent(n.as_slice(), prefix_end); - Some(FormatLine(FileLine { + Some(Line::FormatLine(FileLine { line : n, indent_end : indent_end, pfxind_end : poffset, @@ -259,8 +259,8 @@ impl<'a> Iterator> for ParagraphStream<'a> { match self.lines.peek() { None => return None, Some(l) => match l { - &FormatLine(_) => false, - &NoFormatLine(_, _) => true + &Line::FormatLine(_) => false, + &Line::NoFormatLine(_, _) => true } }; @@ -292,8 +292,8 @@ impl<'a> Iterator> for ParagraphStream<'a> { None => break, Some(l) => { match l { - &FormatLine(ref x) => x, - &NoFormatLine(..) => break + &Line::FormatLine(ref x) => x, + &Line::NoFormatLine(..) => break } } }; diff --git a/src/fold/fold.rs b/src/fold/fold.rs index cb9a9fce9..399d034d6 100644 --- a/src/fold/fold.rs +++ b/src/fold/fold.rs @@ -36,7 +36,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit") ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => crash!(1, "{}", f) }; @@ -47,7 +47,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {} [OPTION]... [FILE]...", program); println!(""); - print!("{}", getopts::usage("Writes each file (or standard input if no files are given) to standard output whilst breaking long lines", opts)); + print!("{}", getopts::usage("Writes each file (or standard input if no files are given) to standard output whilst breaking long lines", &opts)); } else if matches.opt_present("V") { println!("{} v{}", NAME, VERSION); } else { diff --git a/src/groups/groups.rs b/src/groups/groups.rs index c29aa077f..b1989e14b 100644 --- a/src/groups/groups.rs +++ b/src/groups/groups.rs @@ -33,7 +33,7 @@ pub fn uumain(args: Vec) -> int { optflag("V", "version", "display version information and exit") ]; - let matches = match getopts(args.tail(), options) { + let matches = match getopts(args.tail(), &options) { Ok(m) => { m }, Err(f) => { show_error!("{}", f); @@ -47,7 +47,7 @@ pub fn uumain(args: Vec) -> int { print!("{} v{}\n\n\ Usage:\n \ {} [OPTION]... [USER]...\n\n\ - {}", NAME, VERSION, program, usage("Prints the groups a user is in to standard output.", options)); + {}", NAME, VERSION, program, usage("Prints the groups a user is in to standard output.", &options)); } else { group(get_pw_from_args(&matches.free), true); } diff --git a/src/hashsum/hashsum.rs b/src/hashsum/hashsum.rs index b8f41987e..7d649d71e 100644 --- a/src/hashsum/hashsum.rs +++ b/src/hashsum/hashsum.rs @@ -273,7 +273,7 @@ fn digest_reader(digest: &mut Box, reader: &mut Reader, binary: bool) -> let mut vec = Vec::with_capacity(524288); let mut looking_for_newline = false; loop { - match reader.read(buffer) { + match reader.read(&mut buffer) { Ok(0) => {}, Ok(nread) => { if windows && !binary { diff --git a/src/head/head.rs b/src/head/head.rs index 4e1d758be..b196942c6 100644 --- a/src/head/head.rs +++ b/src/head/head.rs @@ -46,16 +46,16 @@ pub fn uumain(args: Vec) -> int { optflag("V", "version", "version") ]; - let given_options = match getopts(args.as_slice(), possible_options) { + let given_options = match getopts(args.as_slice(), &possible_options) { Ok (m) => { m } Err(_) => { - println!("{:s}", usage(NAME, possible_options)); + println!("{:s}", usage(NAME, &possible_options)); return 1; } }; if given_options.opt_present("h") { - println!("{:s}", usage(NAME, possible_options)); + println!("{:s}", usage(NAME, &possible_options)); return 0; } if given_options.opt_present("V") { version(); return 0 } diff --git a/src/hostid/hostid.rs b/src/hostid/hostid.rs index 818cf4fe6..eeb899429 100644 --- a/src/hostid/hostid.rs +++ b/src/hostid/hostid.rs @@ -54,10 +54,10 @@ pub fn uumain(args: Vec) -> int { optflag("", "version", "output version information and exit"), ]; - let usage = usage("[options]", opts); + let usage = usage("[options]", &opts); - let matches = match getopts(args.tail(), opts) { + let matches = match getopts(args.tail(), &opts) { Ok(m) => m, Err(e) => { show_error!("{}\n{}", e, get_help_text(NAME, usage.as_slice())); @@ -66,17 +66,17 @@ pub fn uumain(args: Vec) -> int { }; let mode = if matches.opt_present("version") { - Version + Mode::Version } else if matches.opt_present("help") { - Help + Mode::Help } else { - HostId + Mode::HostId }; match mode { - HostId => hostid(), - Help => help(NAME, usage.as_slice()), - Version => version(), + Mode::HostId => hostid(), + Mode::Help => help(NAME, usage.as_slice()), + Mode::Version => version(), } 0 diff --git a/src/hostname/hostname.rs b/src/hostname/hostname.rs index 2d3a57166..8588861d3 100644 --- a/src/hostname/hostname.rs +++ b/src/hostname/hostname.rs @@ -53,13 +53,13 @@ pub fn uumain(args: Vec) -> int { optflag("V", "version", "Show program's version") ]; - let matches = match getopts(args.tail(), options) { + let matches = match getopts(args.tail(), &options) { Ok(m) => { m } - _ => { help_menu(program.as_slice(), options); return 0; } + _ => { help_menu(program.as_slice(), &options); return 0; } }; if matches.opt_present("h") { - help_menu(program.as_slice(), options); + help_menu(program.as_slice(), &options); return 0 } if matches.opt_present("V") { version(); return 0 } @@ -110,7 +110,7 @@ pub fn uumain(args: Vec) -> int { } } 1 => xsethostname(matches.free.last().unwrap().as_slice()), - _ => help_menu(program.as_slice(), options) + _ => help_menu(program.as_slice(), &options) }; 0 diff --git a/src/id/id.rs b/src/id/id.rs index 15ef512dc..ee4ba81ee 100644 --- a/src/id/id.rs +++ b/src/id/id.rs @@ -100,16 +100,16 @@ pub fn uumain(args: Vec) -> int { optflag("u", "", "Display the effective user ID as a number") ]; - let matches = match getopts(args_t, options) { + let matches = match getopts(args_t, &options) { Ok(m) => { m }, Err(_) => { - println!("{:s}", usage(NAME, options)); + println!("{:s}", usage(NAME, &options)); return 1; } }; if matches.opt_present("h") { - println!("{:s}", usage(NAME, options)); + println!("{:s}", usage(NAME, &options)); return 0; } diff --git a/src/kill/kill.rs b/src/kill/kill.rs index 3ae044749..910655729 100644 --- a/src/kill/kill.rs +++ b/src/kill/kill.rs @@ -61,11 +61,11 @@ pub fn uumain(args: Vec) -> int { optflag("L", "table", "list all signal names in a nice table"), ]; - let usage = usage("[options] [...]", opts); + let usage = usage("[options] [...]", &opts); let (args, obs_signal) = handle_obsolete(args); - let matches = match getopts(args.tail(), opts) { + let matches = match getopts(args.tail(), &opts) { Ok(m) => m, Err(e) => { show_error!("{}\n{}", e, get_help_text(NAME, usage.as_slice())); @@ -74,23 +74,23 @@ pub fn uumain(args: Vec) -> int { }; let mode = if matches.opt_present("version") { - Version + Mode::Version } else if matches.opt_present("help") { - Help + Mode::Help } else if matches.opt_present("table") { - Table + Mode::Table } else if matches.opt_present("list") { - List + Mode::List } else { - Kill + Mode::Kill }; match mode { - Kill => return kill(matches.opt_str("signal").unwrap_or(obs_signal.unwrap_or("9".to_string())).as_slice(), matches.free), - Table => table(), - List => list(matches.opt_str("list")), - Help => help(NAME, usage.as_slice()), - Version => version(), + Mode::Kill => return kill(matches.opt_str("signal").unwrap_or(obs_signal.unwrap_or("9".to_string())).as_slice(), matches.free), + Mode::Table => table(), + Mode::List => list(matches.opt_str("list")), + Mode::Help => help(NAME, usage.as_slice()), + Mode::Version => version(), } 0 diff --git a/src/link/link.rs b/src/link/link.rs index 81f6360b7..a0ab5c582 100644 --- a/src/link/link.rs +++ b/src/link/link.rs @@ -27,7 +27,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(err) => panic!("{}", err), }; diff --git a/src/logname/logname.rs b/src/logname/logname.rs index 6eb37352d..8462d5330 100644 --- a/src/logname/logname.rs +++ b/src/logname/logname.rs @@ -53,7 +53,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => crash!(1, "Invalid options\n{}", f) }; @@ -64,7 +64,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {:s}", program); println!(""); - print(getopts::usage("print user's login name", opts).as_slice()); + print(getopts::usage("print user's login name", &opts).as_slice()); return 0; } if matches.opt_present("version") { diff --git a/src/mkdir/mkdir.rs b/src/mkdir/mkdir.rs index b9cc0aac0..cd38180d1 100644 --- a/src/mkdir/mkdir.rs +++ b/src/mkdir/mkdir.rs @@ -41,7 +41,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "display this version") ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => { crash!(1, "Invalid options\n{}", f); @@ -49,7 +49,7 @@ pub fn uumain(args: Vec) -> int { }; if args.len() == 1 || matches.opt_present("help") { - print_help(opts); + print_help(&opts); return 0; } if matches.opt_present("version") { diff --git a/src/mkfifo/mkfifo.rs b/src/mkfifo/mkfifo.rs index 9b4f7b549..cd11902f4 100644 --- a/src/mkfifo/mkfifo.rs +++ b/src/mkfifo/mkfifo.rs @@ -30,7 +30,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(err) => panic!("{}", err), }; diff --git a/src/mv/mv.rs b/src/mv/mv.rs index 9e491912b..fa43ac7c3 100644 --- a/src/mv/mv.rs +++ b/src/mv/mv.rs @@ -79,14 +79,14 @@ pub fn uumain(args: Vec) -> int { optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts(args.tail(), opts) { + let matches = match getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => { show_error!("Invalid options\n{}", f); return 1; } }; - let usage = usage("Move SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.", opts); + let usage = usage("Move SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.", &opts); /* This does not exactly match the GNU implementation: * The GNU mv defaults to Force, but if more than one of the @@ -94,23 +94,23 @@ pub fn uumain(args: Vec) -> int { * To default to no-clobber in that situation seems safer: */ let overwrite_mode = if matches.opt_present("no-clobber") { - NoClobber + OverwriteMode::NoClobber } else if matches.opt_present("interactive") { - Interactive + OverwriteMode::Interactive } else { - Force + OverwriteMode::Force }; let backup_mode = if matches.opt_present("b") { - SimpleBackup + BackupMode::SimpleBackup } else if matches.opt_present("backup") { match matches.opt_str("backup") { - None => SimpleBackup, + None => BackupMode::SimpleBackup, Some(mode) => match mode.as_slice() { - "simple" | "never" => SimpleBackup, - "numbered" | "t" => NumberedBackup, - "existing" | "nil" => ExistingBackup, - "none" | "off" => NoBackup, + "simple" | "never" => BackupMode::SimpleBackup, + "numbered" | "t" => BackupMode::NumberedBackup, + "existing" | "nil" => BackupMode::ExistingBackup, + "none" | "off" => BackupMode::NoBackup, x => { show_error!("invalid argument ‘{}’ for ‘backup type’\n\ Try 'mv --help' for more information.", x); @@ -119,10 +119,10 @@ pub fn uumain(args: Vec) -> int { } } } else { - NoBackup + BackupMode::NoBackup }; - if overwrite_mode == NoClobber && backup_mode != NoBackup { + if overwrite_mode == OverwriteMode::NoClobber && backup_mode != BackupMode::NoBackup { show_error!("options --backup and --no-clobber are mutually exclusive\n\ Try 'mv --help' for more information."); return 1; @@ -276,21 +276,21 @@ fn rename(from: &Path, to: &Path, b: &Behaviour) -> IoResult<()> { if to.exists() { match b.overwrite { - NoClobber => return Ok(()), - Interactive => { + OverwriteMode::NoClobber => return Ok(()), + OverwriteMode::Interactive => { print!("{}: overwrite ‘{}’? ", NAME, to.display()); if !read_yes() { return Ok(()); } }, - Force => {} + OverwriteMode::Force => {} }; backup_path = match b.backup { - NoBackup => None, - SimpleBackup => Some(simple_backup_path(to, &b.suffix)), - NumberedBackup => Some(numbered_backup_path(to)), - ExistingBackup => Some(existing_backup_path(to, &b.suffix)) + BackupMode::NoBackup => None, + BackupMode::SimpleBackup => Some(simple_backup_path(to, &b.suffix)), + BackupMode::NumberedBackup => Some(numbered_backup_path(to)), + BackupMode::ExistingBackup => Some(existing_backup_path(to, &b.suffix)) }; if let Some(ref p) = backup_path { try!(fs::rename(to, p)); @@ -318,7 +318,7 @@ fn rename(from: &Path, to: &Path, b: &Behaviour) -> IoResult<()> { fn read_yes() -> bool { match BufferedReader::new(stdin_raw()).read_line() { Ok(s) => match s.as_slice().slice_shift_char() { - (Some(x), _) => x == 'y' || x == 'Y', + Some((x, _)) => x == 'y' || x == 'Y', _ => false }, _ => false diff --git a/src/nl/helper.rs b/src/nl/helper.rs index 1a277fdd1..d627e325f 100644 --- a/src/nl/helper.rs +++ b/src/nl/helper.rs @@ -4,12 +4,12 @@ extern crate regex; // parse_style parses a style string into a NumberingStyle. fn parse_style(chars: &[char]) -> Result<::NumberingStyle, String> { match chars { - ['a'] => { Ok(::NumberForAll) }, - ['t'] => { Ok(::NumberForNonEmpty) }, - ['n'] => { Ok(::NumberForNone) }, + ['a'] => { Ok(::NumberingStyle::NumberForAll) }, + ['t'] => { Ok(::NumberingStyle::NumberForNonEmpty) }, + ['n'] => { Ok(::NumberingStyle::NumberForNone) }, ['p', rest..] => { match regex::Regex::new(String::from_chars(rest).as_slice()) { - Ok(re) => Ok(::NumberForRegularExpression(re)), + Ok(re) => Ok(::NumberingStyle::NumberForRegularExpression(re)), Err(_) => Err(String::from_str("Illegal regular expression")), } } @@ -32,9 +32,9 @@ pub fn parse_options(settings: &mut ::Settings, opts: &getopts::Matches) -> Vec< match opts.opt_str("n") { None => {}, Some(val) => match val.as_slice() { - "ln" => { settings.number_format = ::Left; }, - "rn" => { settings.number_format = ::Right; }, - "rz" => { settings.number_format = ::RightZero; }, + "ln" => { settings.number_format = ::NumberFormat::Left; }, + "rn" => { settings.number_format = ::NumberFormat::Right; }, + "rz" => { settings.number_format = ::NumberFormat::RightZero; }, _ => { errs.push(String::from_str("Illegal value for -n")); }, } } diff --git a/src/nl/nl.rs b/src/nl/nl.rs index 8d7b33a2e..39ce3e56a 100644 --- a/src/nl/nl.rs +++ b/src/nl/nl.rs @@ -19,6 +19,7 @@ extern crate getopts; use std::io::{stdin}; use std::io::BufferedReader; use std::io::fs::File; +use std::num::Int; use std::path::Path; use getopts::{optopt, optflag, getopts, usage, OptGroup}; @@ -93,30 +94,30 @@ pub fn uumain(args: Vec) -> int { // A mutable settings object, initialized with the defaults. let mut settings = Settings { - header_numbering: NumberForNone, - body_numbering: NumberForAll, - footer_numbering: NumberForNone, + header_numbering: NumberingStyle::NumberForNone, + body_numbering: NumberingStyle::NumberForAll, + footer_numbering: NumberingStyle::NumberForNone, section_delimiter: ['\\', ':'], starting_line_number: 1, line_increment: 1, join_blank_lines: 1, number_width: 6, - number_format: Right, + number_format: NumberFormat::Right, renumber: true, number_separator: String::from_str("\t"), }; - let given_options = match getopts(args.tail(), possible_options) { + let given_options = match getopts(args.tail(), &possible_options) { Ok (m) => { m } Err(f) => { show_error!("{}", f); - print_usage(possible_options); + print_usage(&possible_options); return 1 } }; if given_options.opt_present("help") { - print_usage(possible_options); + print_usage(&possible_options); return 0; } if given_options.opt_present("version") { version(); return 0; } @@ -164,15 +165,15 @@ fn nl (reader: &mut BufferedReader, settings: &Settings) { let line_no_width_initial = line_no_width; // Stores the smallest integer with one more digit than line_no, so that // when line_no >= line_no_threshold, we need to use one more digit. - let mut line_no_threshold = std::num::pow(10u64, line_no_width); + let mut line_no_threshold = Int::pow(10u64, line_no_width); let mut empty_line_count: u64 = 0; let fill_char = match settings.number_format { - RightZero => '0', + NumberFormat::RightZero => '0', _ => ' ' }; // Initially, we use the body's line counting settings let mut regex_filter = match settings.body_numbering { - NumberForRegularExpression(ref re) => re, + NumberingStyle::NumberForRegularExpression(ref re) => re, _ => REGEX_DUMMY, }; let mut line_filter = pass_regex; @@ -226,7 +227,7 @@ fn nl (reader: &mut BufferedReader, settings: &Settings) { if settings.renumber { line_no = settings.starting_line_number; line_no_width = line_no_width_initial; - line_no_threshold = std::num::pow(10u64, line_no_width); + line_no_threshold = Int::pow(10u64, line_no_width); } &settings.header_numbering }, @@ -239,16 +240,16 @@ fn nl (reader: &mut BufferedReader, settings: &Settings) { &settings.body_numbering } } { - NumberForAll => { + NumberingStyle::NumberForAll => { line_filter = pass_all; }, - NumberForNonEmpty => { + NumberingStyle::NumberForNonEmpty => { line_filter = pass_nonempty; }, - NumberForNone => { + NumberingStyle::NumberForNone => { line_filter = pass_none; } - NumberForRegularExpression(ref re) => { + NumberingStyle::NumberForRegularExpression(ref re) => { line_filter = pass_regex; regex_filter = re; } @@ -285,7 +286,7 @@ fn nl (reader: &mut BufferedReader, settings: &Settings) { } let fill = String::from_char(w, fill_char); match settings.number_format { - Left => { + NumberFormat::Left => { println!("{1}{0}{2}{3}", fill, line_no, settings.number_separator, line) }, _ => { diff --git a/src/nohup/nohup.rs b/src/nohup/nohup.rs index c077d3170..16d305fb2 100644 --- a/src/nohup/nohup.rs +++ b/src/nohup/nohup.rs @@ -79,17 +79,17 @@ pub fn uumain(args: Vec) -> int { optflag("V", "version", "Show version and exit"), ]; - let opts = match getopts(args.tail(), options) { + let opts = match getopts(args.tail(), &options) { Ok(m) => m, Err(f) => { show_error!("{}", f); - show_usage(program.as_slice(), options); + show_usage(program.as_slice(), &options); return 1 } }; if opts.opt_present("V") { version(); return 0 } - if opts.opt_present("h") { show_usage(program.as_slice(), options); return 0 } + if opts.opt_present("h") { show_usage(program.as_slice(), &options); return 0 } if opts.free.len() == 0 { show_error!("Missing operand: COMMAND"); diff --git a/src/nproc/nproc.rs b/src/nproc/nproc.rs index 881e48159..8bc88156d 100644 --- a/src/nproc/nproc.rs +++ b/src/nproc/nproc.rs @@ -29,7 +29,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(err) => { show_error!("{}", err); @@ -48,7 +48,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {} [OPTIONS] NAME...", NAME); println!(""); - print!("{}", getopts::usage("Print the number of cores available to the current process.", opts)); + print!("{}", getopts::usage("Print the number of cores available to the current process.", &opts)); return 0; } diff --git a/src/paste/paste.rs b/src/paste/paste.rs index fe17917e5..11a78ad26 100644 --- a/src/paste/paste.rs +++ b/src/paste/paste.rs @@ -31,7 +31,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("h", "help", "display this help and exit"), getopts::optflag("V", "version", "output version information and exit") ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => crash!(1, "{}", f) }; @@ -41,7 +41,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {0:s} [OPTION]... [FILE]...", program); println!(""); - print!("{}", getopts::usage("Write lines consisting of the sequentially corresponding lines from each FILE, separated by TABs, to standard output.", opts)); + print!("{}", getopts::usage("Write lines consisting of the sequentially corresponding lines from each FILE, separated by TABs, to standard output.", &opts)); } else if matches.opt_present("version") { println!("{} {}", NAME, VERSION); } else { diff --git a/src/printenv/printenv.rs b/src/printenv/printenv.rs index faa4e37bf..d933cb52f 100644 --- a/src/printenv/printenv.rs +++ b/src/printenv/printenv.rs @@ -31,7 +31,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("h", "help", "display this help and exit"), getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => { crash!(1, "Invalid options\n{}", f) @@ -43,7 +43,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {0:s} [VARIABLE]... [OPTION]...", program); println!(""); - print(getopts::usage("Prints the given environment VARIABLE(s), otherwise prints them all.", opts).as_slice()); + print(getopts::usage("Prints the given environment VARIABLE(s), otherwise prints them all.", &opts).as_slice()); return 0; } if matches.opt_present("version") { diff --git a/src/pwd/pwd.rs b/src/pwd/pwd.rs index a4140a8e0..09974a836 100644 --- a/src/pwd/pwd.rs +++ b/src/pwd/pwd.rs @@ -29,7 +29,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => { crash!(1, "Invalid options\n{}", f) @@ -42,14 +42,14 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {0:s} [OPTION] NAME...", program); println!(""); - print(getopts::usage("Print the full filename of the current working directory.", opts).as_slice()); + print(getopts::usage("Print the full filename of the current working directory.", &opts).as_slice()); } else if matches.opt_present("version") { println!("pwd version: {}", VERSION); return 0; } else { let cwd = std::os::getcwd(); - println!("{}", cwd.display()); + println!("{}", cwd.unwrap().display()); return 0; } diff --git a/src/realpath/realpath.rs b/src/realpath/realpath.rs index b5b8b1570..982d09ba9 100644 --- a/src/realpath/realpath.rs +++ b/src/realpath/realpath.rs @@ -30,17 +30,17 @@ pub fn uumain(args: Vec) -> int { optflag("q", "quiet", "Do not print warnings for invalid paths"), ]; - let opts = match getopts(args.tail(), options) { + let opts = match getopts(args.tail(), &options) { Ok(m) => m, Err(f) => { show_error!("{}", f); - show_usage(program.as_slice(), options); + show_usage(program.as_slice(), &options); return 1 } }; if opts.opt_present("V") { version(); return 0 } - if opts.opt_present("h") { show_usage(program.as_slice(), options); return 0 } + if opts.opt_present("h") { show_usage(program.as_slice(), &options); return 0 } if opts.free.len() == 0 { show_error!("Missing operand: FILENAME, at least one is required"); @@ -62,7 +62,7 @@ pub fn uumain(args: Vec) -> int { fn resolve_path(path: &str, strip: bool, zero: bool, quiet: bool) -> bool { let p = Path::new(path); - let abs = std::os::make_absolute(&p); + let abs = std::os::make_absolute(&p).unwrap(); if strip { if zero { diff --git a/src/relpath/relpath.rs b/src/relpath/relpath.rs index 26c0f2ede..22f228261 100644 --- a/src/relpath/relpath.rs +++ b/src/relpath/relpath.rs @@ -28,17 +28,17 @@ pub fn uumain(args: Vec) -> int { optopt("d", "", "If any of FROM and TO is not subpath of DIR, output absolute path instead of relative", "DIR"), ]; - let opts = match getopts(args.tail(), options) { + let opts = match getopts(args.tail(), &options) { Ok(m) => m, Err(f) => { show_error!("{}", f); - show_usage(program.as_slice(), options); + show_usage(program.as_slice(), &options); return 1 } }; if opts.opt_present("V") { version(); return 0 } - if opts.opt_present("h") { show_usage(program.as_slice(), options); return 0 } + if opts.opt_present("h") { show_usage(program.as_slice(), &options); return 0 } if opts.free.len() == 0 { show_error!("Missing operand: TO"); @@ -50,14 +50,14 @@ pub fn uumain(args: Vec) -> int { let from = if opts.free.len() > 1 { Path::new(opts.free[1].as_slice()) } else { - std::os::getcwd() + std::os::getcwd().unwrap() }; - let absto = std::os::make_absolute(&to); - let absfrom = std::os::make_absolute(&from); + let absto = std::os::make_absolute(&to).unwrap(); + let absfrom = std::os::make_absolute(&from).unwrap(); if opts.opt_present("d") { let base = Path::new(opts.opt_str("d").unwrap()); - let absbase = std::os::make_absolute(&base); + let absbase = std::os::make_absolute(&base).unwrap(); if !absbase.is_ancestor_of(&absto) || !absbase.is_ancestor_of(&absfrom) { println!("{}", absto.display()); return 0 diff --git a/src/rm/rm.rs b/src/rm/rm.rs index 73ede765f..791a5c940 100644 --- a/src/rm/rm.rs +++ b/src/rm/rm.rs @@ -47,7 +47,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("h", "help", "display this help and exit"), getopts::optflag("V", "version", "output version information and exit") ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => { crash!(1, "{}", f) @@ -59,7 +59,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {0:s} [OPTION]... [FILE]...", program); println!(""); - print(getopts::usage("Remove (unlink) the FILE(s).", opts).as_slice()); + print(getopts::usage("Remove (unlink) the FILE(s).", &opts).as_slice()); println!(""); println!("By default, rm does not remove directories. Use the --recursive (-r)"); println!("option to remove each listed directory, too, along with all of its contents"); @@ -83,27 +83,27 @@ pub fn uumain(args: Vec) -> int { let force = matches.opt_present("force"); let interactive = if matches.opt_present("i") { - InteractiveAlways + InteractiveMode::InteractiveAlways } else if matches.opt_present("I") { - InteractiveOnce + InteractiveMode::InteractiveOnce } else if matches.opt_present("interactive") { match matches.opt_str("interactive").unwrap().as_slice() { - "none" => InteractiveNone, - "once" => InteractiveOnce, - "always" => InteractiveAlways, + "none" => InteractiveMode::InteractiveNone, + "once" => InteractiveMode::InteractiveOnce, + "always" => InteractiveMode::InteractiveAlways, val => { crash!(1, "Invalid argument to interactive ({})", val) } } } else { - InteractiveNone + InteractiveMode::InteractiveNone }; let one_fs = matches.opt_present("one-file-system"); let preserve_root = !matches.opt_present("no-preserve-root"); let recursive = matches.opt_present("recursive"); let dir = matches.opt_present("dir"); let verbose = matches.opt_present("verbose"); - if interactive == InteractiveOnce && (recursive || matches.free.len() > 3) { + if interactive == InteractiveMode::InteractiveOnce && (recursive || matches.free.len() > 3) { let msg = if recursive { "Remove all arguments recursively? " @@ -169,7 +169,7 @@ fn remove(files: Vec, force: bool, interactive: InteractiveMode, one_fs: fn remove_dir(path: &Path, name: &str, interactive: InteractiveMode, verbose: bool) -> Result<(), int> { let response = - if interactive == InteractiveAlways { + if interactive == InteractiveMode::InteractiveAlways { prompt_file(path, name) } else { true @@ -189,7 +189,7 @@ fn remove_dir(path: &Path, name: &str, interactive: InteractiveMode, verbose: bo fn remove_file(path: &Path, name: &str, interactive: InteractiveMode, verbose: bool) -> Result<(), int> { let response = - if interactive == InteractiveAlways { + if interactive == InteractiveMode::InteractiveAlways { prompt_file(path, name) } else { true diff --git a/src/rmdir/rmdir.rs b/src/rmdir/rmdir.rs index b85298ef1..b2723d2fc 100644 --- a/src/rmdir/rmdir.rs +++ b/src/rmdir/rmdir.rs @@ -32,7 +32,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("h", "help", "print this help and exit"), getopts::optflag("V", "version", "output version information and exit") ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => { show_error!("{}", f); @@ -46,7 +46,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {0:s} [OPTION]... DIRECTORY...", program); println!(""); - print(getopts::usage("Remove the DIRECTORY(ies), if they are empty.", opts).as_slice()); + print(getopts::usage("Remove the DIRECTORY(ies), if they are empty.", &opts).as_slice()); } else if matches.opt_present("version") { println!("rmdir 1.0.0"); } else if matches.free.is_empty() { diff --git a/src/seq/seq.rs b/src/seq/seq.rs index fc2d60cba..741dd2f7a 100644 --- a/src/seq/seq.rs +++ b/src/seq/seq.rs @@ -136,7 +136,7 @@ fn print_help(program: &String) { ]; println!("seq 1.0.0\n"); println!("Usage:\n {} [-w] [-s string] [-t string] [first [step]] last\n", *program); - println!("{:s}", getopts::usage("Print sequences of numbers", opts)); + println!("{:s}", getopts::usage("Print sequences of numbers", &opts)); } fn print_version() { diff --git a/src/shuf/shuf.rs b/src/shuf/shuf.rs index a6fea71cd..07d15529f 100644 --- a/src/shuf/shuf.rs +++ b/src/shuf/shuf.rs @@ -48,7 +48,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("h", "help", "display this help and exit"), getopts::optflag("V", "version", "output version information and exit") ]; - let mut matches = match getopts::getopts(args.tail(), opts) { + let mut matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => { crash!(1, "{}", f) @@ -64,7 +64,7 @@ Usage: {usage} With no FILE, or when FILE is -, read standard input.", name = NAME, version = VERSION, prog = program, - usage = getopts::usage("Write a random permutation of the input lines to standard output.", opts)); + usage = getopts::usage("Write a random permutation of the input lines to standard output.", &opts)); } else if matches.opt_present("version") { println!("{} v{}", NAME, VERSION); } else { @@ -76,7 +76,7 @@ With no FILE, or when FILE is -, read standard input.", return 1; } match parse_range(range) { - Ok(m) => InputRange(m), + Ok(m) => Mode::InputRange(m), Err((msg, code)) => { show_error!("{}", msg); return code; @@ -85,12 +85,12 @@ With no FILE, or when FILE is -, read standard input.", } None => { if echo { - Echo + Mode::Echo } else { if matches.free.len() == 0 { matches.free.push("-".to_string()); } - Default + Mode::Default } } }; @@ -122,9 +122,9 @@ With no FILE, or when FILE is -, read standard input.", fn shuf(input: Vec, mode: Mode, repeat: bool, zero: bool, count: uint, output: Option, random: Option) -> IoResult<()> { match mode { - Echo => shuf_lines(input, repeat, zero, count, output, random), - InputRange(range) => shuf_lines(range.map(|num| num.to_string()).collect(), repeat, zero, count, output, random), - Default => { + Mode::Echo => shuf_lines(input, repeat, zero, count, output, random), + Mode::InputRange(range) => shuf_lines(range.map(|num| num.to_string()).collect(), repeat, zero, count, output, random), + Mode::Default => { let lines: Vec = input.into_iter().flat_map(|filename| { let slice = filename.as_slice(); let mut file_buf; @@ -159,8 +159,8 @@ enum WrappedRng { impl WrappedRng { fn next_u32(&mut self) -> u32 { match self { - &RngFile(ref mut r) => r.next_u32(), - &RngDefault(ref mut r) => r.next_u32(), + &WrappedRng::RngFile(ref mut r) => r.next_u32(), + &WrappedRng::RngDefault(ref mut r) => r.next_u32(), } } } @@ -171,8 +171,8 @@ fn shuf_lines(mut lines: Vec, repeat: bool, zero: bool, count: uint, out None => box io::stdout() as Box }; let mut rng = match random { - Some(name) => RngFile(rand::reader::ReaderRng::new(try!(io::File::open(&Path::new(name))))), - None => RngDefault(rand::task_rng()), + Some(name) => WrappedRng::RngFile(rand::reader::ReaderRng::new(try!(io::File::open(&Path::new(name))))), + None => WrappedRng::RngDefault(rand::task_rng()), }; let mut len = lines.len(); let max = if repeat { count } else { cmp::min(count, len) }; diff --git a/src/sleep/sleep.rs b/src/sleep/sleep.rs index cf18d104a..8ebf037c2 100644 --- a/src/sleep/sleep.rs +++ b/src/sleep/sleep.rs @@ -33,7 +33,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("h", "help", "display this help and exit"), getopts::optflag("V", "version", "output version information and exit") ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => { show_error!("{}", f); @@ -53,7 +53,7 @@ pub fn uumain(args: Vec) -> int { 'm' for minutes, 'h' for hours or 'd' for days. Unlike most implementations that require NUMBER be an integer, here NUMBER may be an arbitrary floating point number. Given two or more arguments, pause for the amount of time -specified by the sum of their values.", opts).as_slice()); +specified by the sum of their values.", &opts).as_slice()); } else if matches.opt_present("version") { println!("sleep 1.0.0"); } else if matches.free.is_empty() { diff --git a/src/sort/sort.rs b/src/sort/sort.rs index 0836ce032..490481852 100644 --- a/src/sort/sort.rs +++ b/src/sort/sort.rs @@ -35,7 +35,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => crash!(1, "Invalid options\n{}", f) }; @@ -43,7 +43,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage: {0:s} [OPTION]... [FILE]...", program); println!("Write the sorted concatenation of all FILE(s) to standard output."); println!(""); - print(getopts::usage("Mandatory arguments for long options are mandatory for short options too.", opts).as_slice()); + print(getopts::usage("Mandatory arguments for long options are mandatory for short options too.", &opts).as_slice()); println!(""); println!("With no FILE, or when FILE is -, read standard input."); return 0; diff --git a/src/split/split.rs b/src/split/split.rs index 844ac2ef3..4282b149b 100644 --- a/src/split/split.rs +++ b/src/split/split.rs @@ -15,7 +15,7 @@ extern crate getopts; extern crate libc; use std::io; -use std::num; +use std::num::Int; use std::char; #[path = "../common/util.rs"] @@ -36,7 +36,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => crash!(1, "{}", f) }; @@ -47,7 +47,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {0:s} [OPTION]... [INPUT [PREFIX]]", NAME); println!(""); - io::print(getopts::usage("Output fixed-size pieces of INPUT to PREFIXaa, PREFIX ab, ...; default size is 1000, and default PREFIX is 'x'. With no INPUT, or when INPUT is -, read standard input." , opts).as_slice()); + io::print(getopts::usage("Output fixed-size pieces of INPUT to PREFIXaa, PREFIX ab, ...; default size is 1000, and default PREFIX is 'x'. With no INPUT, or when INPUT is -, read standard input." , &opts).as_slice()); return 0; } @@ -193,7 +193,7 @@ fn str_prefix(i: uint, width: uint) -> String { let mut w = width; while w > 0 { w -= 1; - let div = num::pow(26 as uint, w); + let div = Int::pow(26 as uint, w); let r = n / div; n -= r * div; c.push(char::from_u32((r as u32) + 97).unwrap()); @@ -208,7 +208,7 @@ fn num_prefix(i: uint, width: uint) -> String { let mut w = width; while w > 0 { w -= 1; - let div = num::pow(10 as uint, w); + let div = Int::pow(10 as uint, w); let r = n / div; n -= r * div; c.push(char::from_digit(r, 10).unwrap()); diff --git a/src/sum/sum.rs b/src/sum/sum.rs index 49025565a..9a6533fa5 100644 --- a/src/sum/sum.rs +++ b/src/sum/sum.rs @@ -27,7 +27,7 @@ fn bsd_sum(mut reader: Box) -> (uint, u16) { let mut blocks_read = 0; let mut checksum: u16 = 0; loop { - match reader.read(buf) { + match reader.read(&mut buf) { Ok(n) if n != 0 => { blocks_read += 1; for &byte in buf.slice_to(n).iter() { @@ -48,7 +48,7 @@ fn sysv_sum(mut reader: Box) -> (uint, u16) { let mut ret = 0; loop { - match reader.read(buf) { + match reader.read(&mut buf) { Ok(n) if n != 0 => { blocks_read += 1; for &byte in buf.slice_to(n).iter() { @@ -84,7 +84,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("v", "version", "print the version and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => crash!(1, "Invalid options\n{}", f) }; @@ -95,7 +95,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {0:s} [OPTION]... [FILE]...", program); println!(""); - print(getopts::usage("checksum and count the blocks in a file", opts).as_slice()); + print(getopts::usage("checksum and count the blocks in a file", &opts).as_slice()); println!(""); println!("With no FILE, or when FILE is -, read standard input."); return 0; diff --git a/src/sync/sync.rs b/src/sync/sync.rs index e79873f1e..adef9c97a 100644 --- a/src/sync/sync.rs +++ b/src/sync/sync.rs @@ -148,13 +148,13 @@ pub fn uumain(args: Vec) -> int { optflag("V", "version", "output version information and exit") ]; - let matches = match getopts(args.tail(), options) { + let matches = match getopts(args.tail(), &options) { Ok(m) => { m } - _ => { help(program.as_slice(), options); return 1 } + _ => { help(program.as_slice(), &options); return 1 } }; if matches.opt_present("h") { - help(program.as_slice(), options); + help(program.as_slice(), &options); return 0 } diff --git a/src/tac/tac.rs b/src/tac/tac.rs index d2972682a..d2e1a0ad4 100644 --- a/src/tac/tac.rs +++ b/src/tac/tac.rs @@ -32,7 +32,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("h", "help", "display this help and exit"), getopts::optflag("V", "version", "output version information and exit") ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => crash!(1, "{}", f) }; @@ -42,7 +42,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {0:s} [OPTION]... [FILE]...", program); println!(""); - print!("{}", getopts::usage("Write each file to standard output, last line first.", opts)); + print!("{}", getopts::usage("Write each file to standard output, last line first.", &opts)); } else if matches.opt_present("version") { println!("tac {}", VERSION); } else { diff --git a/src/tail/tail.rs b/src/tail/tail.rs index 943c1da6a..beabc5cc8 100644 --- a/src/tail/tail.rs +++ b/src/tail/tail.rs @@ -54,16 +54,16 @@ pub fn uumain(args: Vec) -> int { optflag("V", "version", "version"), ]; - let given_options = match getopts(args.as_slice(), possible_options) { + let given_options = match getopts(args.as_slice(), &possible_options) { Ok (m) => { m } Err(_) => { - println!("{:s}", usage(NAME, possible_options)); + println!("{:s}", usage(NAME, &possible_options)); return 1; } }; if given_options.opt_present("h") { - println!("{:s}", usage(NAME, possible_options)); + println!("{:s}", usage(NAME, &possible_options)); return 0; } if given_options.opt_present("V") { version(); return 0 } diff --git a/src/tee/tee.rs b/src/tee/tee.rs index 9aa8873d0..40634d567 100644 --- a/src/tee/tee.rs +++ b/src/tee/tee.rs @@ -50,14 +50,14 @@ fn options(args: &[String]) -> Result { let args: Vec = args.iter().map(|x| x.to_string()).collect(); - getopts(args.tail(), opts).map_err(|e| format!("{}", e)).and_then(|m| { + getopts(args.tail(), &opts).map_err(|e| format!("{}", e)).and_then(|m| { let version = format!("{} {}", NAME, VERSION); let program = args[0].as_slice(); let arguments = "[OPTION]... [FILE]..."; let brief = "Copy standard input to each FILE, and also to standard output."; let comment = "If a FILE is -, copy again to standard output."; let help = format!("{}\n\nUsage:\n {} {}\n\n{}\n{}", - version, program, arguments, usage(brief, opts), + version, program, arguments, usage(brief, &opts), comment); let mut names = m.free.clone().into_iter().collect::>(); names.push("-".to_string()); diff --git a/src/test/test.rs b/src/test/test.rs index f342b3311..97bb9bcf9 100644 --- a/src/test/test.rs +++ b/src/test/test.rs @@ -53,23 +53,23 @@ fn one(args: &[&[u8]]) -> bool { fn two(args: &[&[u8]], error: &mut bool) -> bool { match args[0] { b"!" => !one(args.slice_from(1)), - b"-b" => path(args[1], BlockSpecial), - b"-c" => path(args[1], CharacterSpecial), - b"-d" => path(args[1], Directory), - b"-e" => path(args[1], Exists), - b"-f" => path(args[1], Regular), - b"-g" => path(args[1], GroupIDFlag), - b"-h" => path(args[1], SymLink), - b"-L" => path(args[1], SymLink), + b"-b" => path(args[1], PathCondition::BlockSpecial), + b"-c" => path(args[1], PathCondition::CharacterSpecial), + b"-d" => path(args[1], PathCondition::Directory), + b"-e" => path(args[1], PathCondition::Exists), + b"-f" => path(args[1], PathCondition::Regular), + b"-g" => path(args[1], PathCondition::GroupIDFlag), + b"-h" => path(args[1], PathCondition::SymLink), + b"-L" => path(args[1], PathCondition::SymLink), b"-n" => one(args.slice_from(1)), - b"-p" => path(args[1], FIFO), - b"-r" => path(args[1], Readable), - b"-S" => path(args[1], Socket), - b"-s" => path(args[1], NonEmpty), + b"-p" => path(args[1], PathCondition::FIFO), + b"-r" => path(args[1], PathCondition::Readable), + b"-S" => path(args[1], PathCondition::Socket), + b"-s" => path(args[1], PathCondition::NonEmpty), b"-t" => isatty(args[1]), - b"-u" => path(args[1], UserIDFlag), - b"-w" => path(args[1], Writable), - b"-x" => path(args[1], Executable), + b"-u" => path(args[1], PathCondition::UserIDFlag), + b"-w" => path(args[1], PathCondition::Writable), + b"-x" => path(args[1], PathCondition::Executable), b"-z" => !one(args.slice_from(1)), _ => { *error = true; @@ -82,12 +82,12 @@ fn three(args: &[&[u8]], error: &mut bool) -> bool { match args[1] { b"=" => args[0] == args[2], b"!=" => args[0] != args[2], - b"-eq" => integers(args[0], args[2], Equal), - b"-ne" => integers(args[0], args[2], Unequal), - b"-gt" => integers(args[0], args[2], Greater), - b"-ge" => integers(args[0], args[2], GreaterEqual), - b"-lt" => integers(args[0], args[2], Less), - b"-le" => integers(args[0], args[2], LessEqual), + b"-eq" => integers(args[0], args[2], IntegerCondition::Equal), + b"-ne" => integers(args[0], args[2], IntegerCondition::Unequal), + b"-gt" => integers(args[0], args[2], IntegerCondition::Greater), + b"-ge" => integers(args[0], args[2], IntegerCondition::GreaterEqual), + b"-lt" => integers(args[0], args[2], IntegerCondition::Less), + b"-le" => integers(args[0], args[2], IntegerCondition::LessEqual), _ => match args[0] { b"!" => !two(args.slice_from(1), error), _ => { @@ -129,12 +129,12 @@ fn integers(a: &[u8], b: &[u8], cond: IntegerCondition) -> bool { _ => return false, }; match cond { - Equal => a == b, - Unequal => a != b, - Greater => a > b, - GreaterEqual => a >= b, - Less => a < b, - LessEqual => a <= b, + IntegerCondition::Equal => a == b, + IntegerCondition::Unequal => a != b, + IntegerCondition::Greater => a > b, + IntegerCondition::GreaterEqual => a >= b, + IntegerCondition::Less => a < b, + IntegerCondition::LessEqual => a <= b, } } @@ -207,7 +207,7 @@ fn parse_expr(mut args: &[&[u8]], error: &mut bool) -> bool { let lhs = dispatch(&mut args, error); if args.len() > 0 { - parse_expr_helper(&hashmap, &mut args, lhs, Unknown, error) + parse_expr_helper(&hashmap, &mut args, lhs, Precedence::Unknown, error) } else { lhs } @@ -238,14 +238,14 @@ fn parse_expr_helper<'a>(hashmap: &HashMap<&'a [u8], Precedence>, rhs = parse_expr_helper(hashmap, args, rhs, subprec, error); } lhs = match prec { - UnOp | BUnOp => { + Precedence::UnOp | Precedence::BUnOp => { *error = true; false } - And => lhs && rhs, - Or => lhs || rhs, - BinOp => three(&[if lhs { b" " } else { b"" }, op, if rhs { b" " } else { b"" }], error), - Paren => unimplemented!(), // TODO: implement parentheses + Precedence::And => lhs && rhs, + Precedence::Or => lhs || rhs, + Precedence::BinOp => three(&[if lhs { b" " } else { b"" }, op, if rhs { b" " } else { b"" }], error), + Precedence::Paren => unimplemented!(), // TODO: implement parentheses _ => unreachable!() }; if args.len() > 0 { @@ -262,41 +262,41 @@ fn parse_expr_helper<'a>(hashmap: &HashMap<&'a [u8], Precedence>, fn setup_hashmap<'a>() -> HashMap<&'a [u8], Precedence> { let mut hashmap = HashMap::<&'a [u8], Precedence>::new(); - hashmap.insert(b"-b", UnOp); - hashmap.insert(b"-c", UnOp); - hashmap.insert(b"-d", UnOp); - hashmap.insert(b"-e", UnOp); - hashmap.insert(b"-f", UnOp); - hashmap.insert(b"-g", UnOp); - hashmap.insert(b"-h", UnOp); - hashmap.insert(b"-L", UnOp); - hashmap.insert(b"-n", UnOp); - hashmap.insert(b"-p", UnOp); - hashmap.insert(b"-r", UnOp); - hashmap.insert(b"-S", UnOp); - hashmap.insert(b"-s", UnOp); - hashmap.insert(b"-t", UnOp); - hashmap.insert(b"-u", UnOp); - hashmap.insert(b"-w", UnOp); - hashmap.insert(b"-x", UnOp); - hashmap.insert(b"-z", UnOp); + hashmap.insert(b"-b", Precedence::UnOp); + hashmap.insert(b"-c", Precedence::UnOp); + hashmap.insert(b"-d", Precedence::UnOp); + hashmap.insert(b"-e", Precedence::UnOp); + hashmap.insert(b"-f", Precedence::UnOp); + hashmap.insert(b"-g", Precedence::UnOp); + hashmap.insert(b"-h", Precedence::UnOp); + hashmap.insert(b"-L", Precedence::UnOp); + hashmap.insert(b"-n", Precedence::UnOp); + hashmap.insert(b"-p", Precedence::UnOp); + hashmap.insert(b"-r", Precedence::UnOp); + hashmap.insert(b"-S", Precedence::UnOp); + hashmap.insert(b"-s", Precedence::UnOp); + hashmap.insert(b"-t", Precedence::UnOp); + hashmap.insert(b"-u", Precedence::UnOp); + hashmap.insert(b"-w", Precedence::UnOp); + hashmap.insert(b"-x", Precedence::UnOp); + hashmap.insert(b"-z", Precedence::UnOp); - hashmap.insert(b"=", BinOp); - hashmap.insert(b"!=", BinOp); - hashmap.insert(b"-eq", BinOp); - hashmap.insert(b"-ne", BinOp); - hashmap.insert(b"-gt", BinOp); - hashmap.insert(b"-ge", BinOp); - hashmap.insert(b"-lt", BinOp); - hashmap.insert(b"-le", BinOp); + hashmap.insert(b"=", Precedence::BinOp); + hashmap.insert(b"!=", Precedence::BinOp); + hashmap.insert(b"-eq", Precedence::BinOp); + hashmap.insert(b"-ne", Precedence::BinOp); + hashmap.insert(b"-gt", Precedence::BinOp); + hashmap.insert(b"-ge", Precedence::BinOp); + hashmap.insert(b"-lt", Precedence::BinOp); + hashmap.insert(b"-le", Precedence::BinOp); - hashmap.insert(b"!", BUnOp); + hashmap.insert(b"!", Precedence::BUnOp); - hashmap.insert(b"-a", And); - hashmap.insert(b"-o", Or); + hashmap.insert(b"-a", Precedence::And); + hashmap.insert(b"-o", Precedence::Or); - hashmap.insert(b"(", Paren); - hashmap.insert(b")", Paren); + hashmap.insert(b"(", Precedence::Paren); + hashmap.insert(b")", Precedence::Paren); hashmap } @@ -346,7 +346,7 @@ fn path(path: &[u8], cond: PathCondition) -> bool { let path = unsafe { path.to_c_str_unchecked() }; let mut stat = unsafe { std::mem::zeroed() }; - if cond == SymLink { + if cond == PathCondition::SymLink { if unsafe { lstat(path.as_ptr(), &mut stat) } == 0 { if stat.st_mode & S_IFMT == S_IFLNK { return true; @@ -359,20 +359,20 @@ fn path(path: &[u8], cond: PathCondition) -> bool { } let file_type = stat.st_mode & S_IFMT; match cond { - BlockSpecial => file_type == S_IFBLK, - CharacterSpecial => file_type == S_IFCHR, - Directory => file_type == S_IFDIR, - Exists => true, - Regular => file_type == S_IFREG, - GroupIDFlag => stat.st_mode & S_ISGID != 0, - SymLink => true, - FIFO => file_type == S_IFIFO, - Readable => perm(stat, Read), - Socket => file_type == S_IFSOCK, - NonEmpty => stat.st_size > 0, - UserIDFlag => stat.st_mode & S_ISUID != 0, - Writable => perm(stat, Write), - Executable => perm(stat, Execute), + PathCondition::BlockSpecial => file_type == S_IFBLK, + PathCondition::CharacterSpecial => file_type == S_IFCHR, + PathCondition::Directory => file_type == S_IFDIR, + PathCondition::Exists => true, + PathCondition::Regular => file_type == S_IFREG, + PathCondition::GroupIDFlag => stat.st_mode & S_ISGID != 0, + PathCondition::SymLink => true, + PathCondition::FIFO => file_type == S_IFIFO, + PathCondition::Readable => perm(stat, Permission::Read), + PathCondition::Socket => file_type == S_IFSOCK, + PathCondition::NonEmpty => stat.st_size > 0, + PathCondition::UserIDFlag => stat.st_mode & S_ISUID != 0, + PathCondition::Writable => perm(stat, Permission::Write), + PathCondition::Executable => perm(stat, Permission::Execute), } } diff --git a/src/timeout/timeout.rs b/src/timeout/timeout.rs index eab5a464b..349ba26fa 100644 --- a/src/timeout/timeout.rs +++ b/src/timeout/timeout.rs @@ -46,7 +46,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("h", "help", "display this help and exit"), getopts::optflag("V", "version", "output version information and exit") ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => { crash!(ERR_EXIT_STATUS, "{}", f) @@ -58,7 +58,7 @@ pub fn uumain(args: Vec) -> int { Usage: {} [OPTION] DURATION COMMAND [ARG]... -{}", NAME, VERSION, program, getopts::usage("Start COMMAND, and kill it if still running after DURATION.", opts)); +{}", NAME, VERSION, program, getopts::usage("Start COMMAND, and kill it if still running after DURATION.", &opts)); } else if matches.opt_present("version") { println!("{} v{}", NAME, VERSION); } else if matches.free.len() < 2 { diff --git a/src/touch/touch.rs b/src/touch/touch.rs index 9752200e9..4de7bacb2 100644 --- a/src/touch/touch.rs +++ b/src/touch/touch.rs @@ -39,7 +39,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(e) => panic!("Invalid options\n{}", e) }; @@ -55,16 +55,16 @@ pub fn uumain(args: Vec) -> int { println!("Usage: {:s} [OPTION]... FILE...", NAME); println!(""); println!("{:s}", getopts::usage("Update the access and modification times of \ - each FILE to the current time.", opts)); + each FILE to the current time.", &opts)); if matches.free.is_empty() { return 1; } return 0; } - if matches.opt_present("date") && matches.opts_present(["reference".to_string(), "t".to_string()]) || - matches.opt_present("reference") && matches.opts_present(["date".to_string(), "t".to_string()]) || - matches.opt_present("t") && matches.opts_present(["date".to_string(), "reference".to_string()]) { + if matches.opt_present("date") && matches.opts_present(&["reference".to_string(), "t".to_string()]) || + matches.opt_present("reference") && matches.opts_present(&["date".to_string(), "t".to_string()]) || + matches.opt_present("t") && matches.opts_present(&["date".to_string(), "reference".to_string()]) { panic!("Invalid options: cannot specify reference time from more than one source"); } @@ -73,7 +73,7 @@ pub fn uumain(args: Vec) -> int { let path = Path::new(matches.opt_str("reference").unwrap().to_string()); let stat = stat(&path, !matches.opt_present("no-dereference")); (stat.accessed, stat.modified) - } else if matches.opts_present(["date".to_string(), "t".to_string()]) { + } else if matches.opts_present(&["date".to_string(), "t".to_string()]) { let timestamp = if matches.opt_present("date") { parse_date(matches.opt_str("date").unwrap().as_slice()) } else { @@ -91,7 +91,7 @@ pub fn uumain(args: Vec) -> int { if !path.exists() { // no-dereference included here for compatibility - if matches.opts_present(["no-create".to_string(), "no-dereference".to_string()]) { + if matches.opts_present(&["no-create".to_string(), "no-dereference".to_string()]) { continue; } @@ -101,14 +101,14 @@ pub fn uumain(args: Vec) -> int { }; // Minor optimization: if no reference time was specified, we're done. - if !matches.opts_present(["date".to_string(), "reference".to_string(), "t".to_string()]) { + if !matches.opts_present(&["date".to_string(), "reference".to_string(), "t".to_string()]) { continue; } } // If changing "only" atime or mtime, grab the existing value of the other. // Note that "-a" and "-m" may be passed together; this is not an xor. - if matches.opts_present(["a".to_string(), "m".to_string(), "time".to_string()]) { + if matches.opts_present(&["a".to_string(), "m".to_string(), "time".to_string()]) { let stat = stat(&path, !matches.opt_present("no-dereference")); let time = matches.opt_strs("time"); diff --git a/src/tr/tr.rs b/src/tr/tr.rs index 7036b2ca4..e03b5d7e6 100644 --- a/src/tr/tr.rs +++ b/src/tr/tr.rs @@ -154,7 +154,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(err) => { show_error!("{}", err); @@ -163,7 +163,7 @@ pub fn uumain(args: Vec) -> int { }; if matches.opt_present("help") { - usage(opts); + usage(&opts); return 0; } @@ -173,12 +173,12 @@ pub fn uumain(args: Vec) -> int { } if matches.free.len() == 0 { - usage(opts); + usage(&opts); return 1; } let dflag = matches.opt_present("d"); - let cflag = matches.opts_present(["c".to_string(), "C".to_string()]); + let cflag = matches.opts_present(&["c".to_string(), "C".to_string()]); let sets = matches.free; if cflag && !dflag { diff --git a/src/truncate/truncate.rs b/src/truncate/truncate.rs index e1002fb49..e52bd61d5 100644 --- a/src/truncate/truncate.rs +++ b/src/truncate/truncate.rs @@ -44,7 +44,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("h", "help", "display this help and exit"), getopts::optflag("V", "version", "output version information and exit") ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => { crash!(1, "{}", f) @@ -57,7 +57,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {0:s} [OPTION]... FILE...", program); println!(""); - print!("{}", getopts::usage("Shrink or extend the size of each file to the specified size.", opts)); + print!("{}", getopts::usage("Shrink or extend the size of each file to the specified size.", &opts)); print!(" SIZE is an integer with an optional prefix and optional unit. The available units (K, M, G, T, P, E, Z, and Y) use the following format: @@ -109,7 +109,7 @@ fn truncate(no_create: bool, _: bool, reference: Option, size: Option (stat.size, Reference), + Ok(stat) => (stat.size, TruncateMode::Reference), Err(f) => { show_error!("{}", f.to_string()); return Err(1); @@ -132,13 +132,13 @@ fn truncate(no_create: bool, _: bool, reference: Option, size: Option refsize, - Extend => fsize + refsize, - Reduce => fsize - refsize, - AtMost => if fsize > refsize { refsize } else { fsize }, - AtLeast => if fsize < refsize { refsize } else { fsize }, - RoundDown => fsize - fsize % refsize, - RoundUp => fsize + fsize % refsize + TruncateMode::Reference => refsize, + TruncateMode::Extend => fsize + refsize, + TruncateMode::Reduce => fsize - refsize, + TruncateMode::AtMost => if fsize > refsize { refsize } else { fsize }, + TruncateMode::AtLeast => if fsize < refsize { refsize } else { fsize }, + TruncateMode::RoundDown => fsize - fsize % refsize, + TruncateMode::RoundUp => fsize + fsize % refsize }; match file.truncate(tsize as i64) { Ok(_) => {} @@ -160,17 +160,17 @@ fn truncate(no_create: bool, _: bool, reference: Option, size: Option (u64, TruncateMode) { let mode = match size.char_at(0) { - '+' => Extend, - '-' => Reduce, - '<' => AtMost, - '>' => AtLeast, - '/' => RoundDown, - '*' => RoundUp, - _ => Reference /* assume that the size is just a number */ + '+' => TruncateMode::Extend, + '-' => TruncateMode::Reduce, + '<' => TruncateMode::AtMost, + '>' => TruncateMode::AtLeast, + '/' => TruncateMode::RoundDown, + '*' => TruncateMode::RoundUp, + _ => TruncateMode::Reference /* assume that the size is just a number */ }; let bytes = { let mut slice = - if mode == Reference { + if mode == TruncateMode::Reference { let size: &str = size; size } else { diff --git a/src/tsort/tsort.rs b/src/tsort/tsort.rs index 0f320c259..c4dd9659c 100644 --- a/src/tsort/tsort.rs +++ b/src/tsort/tsort.rs @@ -30,7 +30,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => crash!(1, "{}", f) }; @@ -41,7 +41,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {} [OPTIONS] FILE", NAME); println!(""); - io::print(getopts::usage("Topological sort the strings in FILE. Strings are defined as any sequence of tokens separated by whitespace (tab, space, or newline). If FILE is not passed in, stdin is used instead.", opts).as_slice()); + io::print(getopts::usage("Topological sort the strings in FILE. Strings are defined as any sequence of tokens separated by whitespace (tab, space, or newline). If FILE is not passed in, stdin is used instead.", &opts).as_slice()); return 0; } diff --git a/src/tty/tty.rs b/src/tty/tty.rs index 238ef911d..03103b554 100644 --- a/src/tty/tty.rs +++ b/src/tty/tty.rs @@ -39,7 +39,7 @@ pub fn uumain(args: Vec) -> int { optflag("s", "silent", "print nothing, only return an exit status") ]; - let silent = match getopts(args.tail(), options) { + let silent = match getopts(args.tail(), &options) { Ok(m) => { m.opt_present("s") }, diff --git a/src/uname/uname.rs b/src/uname/uname.rs index aa8c99747..6d765a8c2 100644 --- a/src/uname/uname.rs +++ b/src/uname/uname.rs @@ -64,7 +64,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("s", "sysname", "print the operating system name."), getopts::optflag("v", "version", "print the operating system version."), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => crash!(1, "{}", f), }; @@ -74,13 +74,13 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {:s}", program); println!(""); - print(getopts::usage("The uname utility writes symbols representing one or more system characteristics to the standard output.", opts).as_slice()); + print(getopts::usage("The uname utility writes symbols representing one or more system characteristics to the standard output.", &opts).as_slice()); return 0; } let uname = unsafe { getuname() }; let mut output = String::new(); if matches.opt_present("sysname") || matches.opt_present("all") - || !matches.opts_present(["nodename".to_string(), "release".to_string(), "version".to_string(), "machine".to_string()]) { + || !matches.opts_present(&["nodename".to_string(), "release".to_string(), "version".to_string(), "machine".to_string()]) { output.push_str(uname.sysname.as_slice()); output.push_str(" "); } diff --git a/src/unexpand/unexpand.rs b/src/unexpand/unexpand.rs index f37ccf2b6..12ffd573f 100644 --- a/src/unexpand/unexpand.rs +++ b/src/unexpand/unexpand.rs @@ -84,7 +84,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => crash!(1, "{}", f) }; @@ -93,7 +93,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage: {:s} [OPTION]... [FILE]...", NAME); io::print(getopts::usage( "Convert blanks in each FILE to tabs, writing to standard output.\n\ - With no FILE, or when FILE is -, read standard input.", opts).as_slice()); + With no FILE, or when FILE is -, read standard input.", &opts).as_slice()); return 0; } diff --git a/src/uniq/uniq.rs b/src/uniq/uniq.rs index c029d606b..1a6aa5427 100644 --- a/src/uniq/uniq.rs +++ b/src/uniq/uniq.rs @@ -138,7 +138,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("h", "help", "display this help and exit"), getopts::optflag("V", "version", "output version information and exit") ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => crash!(1, "{}", f) }; @@ -150,7 +150,7 @@ pub fn uumain(args: Vec) -> int { println!(" {0:s} [OPTION]... [FILE]...", program); println!(""); print!("{}", getopts::usage("Filter adjacent matching lines from INPUT (or standard input),\n\ - writing to OUTPUT (or standard output).", opts)); + writing to OUTPUT (or standard output).", &opts)); println!(""); println!("Note: '{0}' does not detect repeated lines unless they are adjacent.\n\ You may want to sort the input first, or use 'sort -u' without '{0}'.\n", program); diff --git a/src/unlink/unlink.rs b/src/unlink/unlink.rs index 6b81f4793..773be53a6 100644 --- a/src/unlink/unlink.rs +++ b/src/unlink/unlink.rs @@ -32,7 +32,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => { crash!(1, "invalid options\n{}", f) @@ -45,7 +45,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {0:s} [FILE]... [OPTION]...", program); println!(""); - print(getopts::usage("Unlink the file at [FILE].", opts).as_slice()); + print(getopts::usage("Unlink the file at [FILE].", &opts).as_slice()); return 0; } diff --git a/src/uptime/uptime.rs b/src/uptime/uptime.rs index 593dbad25..be4b1dbe2 100644 --- a/src/uptime/uptime.rs +++ b/src/uptime/uptime.rs @@ -58,7 +58,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("v", "version", "output version information and exit"), getopts::optflag("h", "help", "display this help and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => crash!(1, "Invalid options\n{}", f) }; @@ -72,7 +72,7 @@ pub fn uumain(args: Vec) -> int { println!(""); print(getopts::usage("Print the current time, the length of time the system has been up,\n\ the number of users on the system, and the average number of jobs\n\ - in the run queue over the last 1, 5 and 15 minutes.", opts).as_slice()); + in the run queue over the last 1, 5 and 15 minutes.", &opts).as_slice()); return 0; } diff --git a/src/users/users.rs b/src/users/users.rs index ba9914b14..f97aa9628 100644 --- a/src/users/users.rs +++ b/src/users/users.rs @@ -59,7 +59,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => panic!("{}", f), }; @@ -70,7 +70,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {:s} [OPTION]... [FILE]", program); println!(""); - print(getopts::usage("Output who is currently logged in according to FILE.", opts).as_slice()); + print(getopts::usage("Output who is currently logged in according to FILE.", &opts).as_slice()); return 0; } diff --git a/src/wc/wc.rs b/src/wc/wc.rs index d5f616cff..1b2b59a55 100644 --- a/src/wc/wc.rs +++ b/src/wc/wc.rs @@ -47,7 +47,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => { crash!(1, "Invalid options\n{}", f) @@ -58,7 +58,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {0:s} [OPTION]... [FILE]...", program); println!(""); - print(getopts::usage("Print newline, word and byte counts for each FILE", opts).as_slice()); + print(getopts::usage("Print newline, word and byte counts for each FILE", &opts).as_slice()); println!(""); println!("With no FILE, or when FILE is -, read standard input."); return 0; diff --git a/src/whoami/whoami.rs b/src/whoami/whoami.rs index 9e2a6f36b..e19e585fa 100644 --- a/src/whoami/whoami.rs +++ b/src/whoami/whoami.rs @@ -72,7 +72,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("h", "help", "display this help and exit"), getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => crash!(1, "{}", f), }; @@ -82,7 +82,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {:s}", program); println!(""); - print(getopts::usage("print effective userid", opts).as_slice()); + print(getopts::usage("print effective userid", &opts).as_slice()); return 0; } if matches.opt_present("version") { diff --git a/src/yes/yes.rs b/src/yes/yes.rs index cd51e745c..275ea7241 100644 --- a/src/yes/yes.rs +++ b/src/yes/yes.rs @@ -29,7 +29,7 @@ pub fn uumain(args: Vec) -> int { getopts::optflag("h", "help", "display this help and exit"), getopts::optflag("V", "version", "output version information and exit"), ]; - let matches = match getopts::getopts(args.tail(), opts) { + let matches = match getopts::getopts(args.tail(), &opts) { Ok(m) => m, Err(f) => { crash!(1, "invalid options\n{}", f) @@ -41,7 +41,7 @@ pub fn uumain(args: Vec) -> int { println!("Usage:"); println!(" {0:s} [STRING]... [OPTION]...", program); println!(""); - print(getopts::usage("Repeatedly output a line with all specified STRING(s), or 'y'.", opts).as_slice()); + print(getopts::usage("Repeatedly output a line with all specified STRING(s), or 'y'.", &opts).as_slice()); return 0; } if matches.opt_present("version") {