From 38c62a14d92c5ec4aa72b0e7395821473f6ca46e Mon Sep 17 00:00:00 2001 From: Arcterus Date: Sun, 15 Jun 2014 00:17:20 -0700 Subject: [PATCH] groups: fix argument parsing --- groups/groups.rs | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/groups/groups.rs b/groups/groups.rs index abb770972..2bd8ea8c1 100644 --- a/groups/groups.rs +++ b/groups/groups.rs @@ -24,24 +24,37 @@ use c_types::{get_pw_from_args, group}; #[path = "../common/c_types.rs"] mod c_types; static NAME: &'static str = "groups"; +static VERSION: &'static str = "1.0.0"; #[allow(dead_code)] fn main () { os::set_exit_status(uumain(os::args())); } pub fn uumain(args: Vec) -> int { + let program = args.get(0).clone(); + let options = [ - optflag("h", "", "Help") - ]; + optflag("h", "help", "display this help menu and exit"), + optflag("V", "version", "display version information and exit") + ]; let matches = match getopts(args.tail(), options) { Ok(m) => { m }, - Err(_) => { - show_error!("{}", usage(NAME, options)); + Err(f) => { + show_error!("{}", f.to_err_msg()); return 1; } }; - group(get_pw_from_args(&matches.free), true); + if matches.opt_present("version") { + println!("{} v{}", NAME, VERSION); + } else if matches.opt_present("help") { + 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)); + } else { + group(get_pw_from_args(&matches.free), true); + } 0 }