mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 11:37:44 +00:00
od: improve/extend --help text
This commit is contained in:
parent
2f12b06ba1
commit
d705dc46ce
3 changed files with 45 additions and 10 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -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",
|
||||
]
|
||||
|
||||
|
|
|
@ -10,7 +10,6 @@ path = "od.rs"
|
|||
[dependencies]
|
||||
getopts = "*"
|
||||
libc = "*"
|
||||
unindent = "*"
|
||||
byteorder = "*"
|
||||
uucore = { path="../uucore" }
|
||||
|
||||
|
|
53
src/od/od.rs
53
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<String>) -> i32 {
|
||||
let mut opts = getopts::Options::new();
|
||||
|
||||
|
@ -106,12 +148,7 @@ pub fn uumain(args: Vec<String>) -> 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") {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue