From f35c37e11c508c7d103fee9d7b756e16e9f2fc2e Mon Sep 17 00:00:00 2001 From: Zachary Dremann Date: Sun, 15 Jun 2014 23:48:44 -0400 Subject: Make errors easier --- examples/rusti.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'examples') diff --git a/examples/rusti.rs b/examples/rusti.rs index 05e7c3b..ba1f4e1 100644 --- a/examples/rusti.rs +++ b/examples/rusti.rs @@ -1,11 +1,18 @@ extern crate irc; extern crate getopts; +extern crate libc; use std::os; use std::io; use getopts::{getopts, opt, optflag, optflagmulti, optmulti, optopt, reqopt, usage}; +fn err(code: i32, err_msg: &str) -> ! { + let mut stderr = io::stderr(); + writeln!(stderr, "{}", err_msg); + unsafe{ libc::exit(code) } +} + fn main() { let opts = [ optmulti("c", "channel", "What channel should be joined", "CHANNEL"), @@ -17,11 +24,12 @@ fn main() { let program = args.get(0); let matches = match getopts(args.tail(), opts) { Ok(m) => { m } - Err(e) => { let _ = writeln!(stderr, "{}", e.to_err_msg()); os::set_exit_status(1); return; } + Err(e) => { err(1, e.to_err_msg().as_slice()); } }; let channels = matches.opt_strs("channel"); let port: u16 = from_str(matches.opt_str("port").unwrap_or("6667".to_string()).as_slice()).expect("Please pass a port number to -p or --port"); let ignore_privmsg = matches.opt_present("ignore-privmsg"); - println!("{}, {}, {}", channels, port, ignore_privmsg); + let server = if matches.free.len() != 1 { err(2, "No server passed") } else { matches.free.move_iter().next().unwrap() }; + println!("server:{}, channels:{}, port:{}, ignore?:{}", server, channels, port, ignore_privmsg); } -- cgit v1.2.3-54-g00ecf