diff --git a/Cargo.lock b/Cargo.lock index ebe84879a..0a8b0fe86 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -666,7 +666,6 @@ dependencies = [ "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "unindent 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "uucore 0.0.1", ] diff --git a/src/od/Cargo.toml b/src/od/Cargo.toml index 0b44a8633..c6b86e354 100644 --- a/src/od/Cargo.toml +++ b/src/od/Cargo.toml @@ -10,7 +10,6 @@ path = "od.rs" [dependencies] getopts = "*" libc = "*" -unindent = "*" byteorder = "*" uucore = { path="../uucore" } diff --git a/src/od/od.rs b/src/od/od.rs index c8cb5a30b..7cbd8a101 100644 --- a/src/od/od.rs +++ b/src/od/od.rs @@ -10,7 +10,6 @@ */ extern crate getopts; -extern crate unindent; extern crate byteorder; #[macro_use] @@ -32,7 +31,6 @@ mod mockstream; use std::cmp; use std::io::Write; -use unindent::*; use byteorder_io::*; use multifilereader::*; use partialreader::*; @@ -50,6 +48,50 @@ const PEEK_BUFFER_SIZE: usize = 4; // utf-8 can be 4 bytes #[derive(Copy, Clone, Debug, Eq, PartialEq)] enum Radix { Decimal, Hexadecimal, Octal, NoPrefix } +static USAGE: &'static str = +r#"Usage: + od [OPTION]... [--] [FILENAME]... + od [-abcdDefFhHiIlLoOsxX] [FILENAME] [[+][0x]OFFSET[.][b]] + od --traditional [OPTION]... [FILENAME] [[+][0x]OFFSET[.][b] [[+][0x]LABEL[.][b]]] + +Displays data in various human-readable formats. If multiple formats are +specified, the output will contain all formats in the order they appear on the +commandline. Each format will be printed on a new line. Only the line +containing the first format will be prefixed with the offset. + +If no filename is specified, or it is "-", stdin will be used. After a "--", no +more options will be recognised. This allows for filenames starting with a "-". + +If a filename is a valid number which can be used as an offset in the second +form, you can force it to be recognised as a filename if you include an option +like "-j0", which is only valid in the first form. + +RADIX is one of o,d,x,n for octal, decimal, hexadecimal or none. + +BYTES is decimal by default, octal if prefixed with a "0", or hexadecimal if +prefixed with "0x". The suffixes b, KB, K, MB, M, GB, G, will multiply the +number with 512, 1000, 1024, 1000^2, 1024^2, 1000^3, 1024^3, 1000^2, 1024^2. + +OFFSET and LABEL are octal by default, hexadecimal if prefixed with "0x" or +decimal if a "." suffix is added. The "b" suffix will multiply with 512. + +TYPE contains one or more format specifications consisting of: + a for printable 7-bits ASCII + c for utf-8 characters or octal for undefined characters + d[SIZE] for signed decimal + f[SIZE] for floating point + o[SIZE] for octal + u[SIZE] for unsigned decimal + x[SIZE] for hexadecimal +SIZE is the number of bytes which can be the number 1, 2, 4, 8 or 16, + or C, I, S, L for 1, 2, 4, 8 bytes for integer types, + or F, D, L for 4, 8, 16 bytes for floating point. +Any type specification can have a "z" suffic, which will add a ASCII dump at + the end of the line. + +If an error occurred, a diagnostic message will be printed to stderr, and the +exitcode will be non-zero."#; + pub fn uumain(args: Vec) -> i32 { let mut opts = getopts::Options::new(); @@ -106,12 +148,7 @@ pub fn uumain(args: Vec) -> i32 { }; if matches.opt_present("h") { - let msg = unindent(&format!(" - Usage: - {0} [OPTION]... [FILENAME]... - - Displays data in various human-readable formats.", executable!())); - println!("{}", opts.usage(&msg)); + println!("{}", opts.usage(&USAGE)); return 0; } if matches.opt_present("version") {