aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZachary Dremann <dremann@gmail.com>2014-06-15 23:48:44 -0400
committerZachary Dremann <dremann@gmail.com>2014-06-15 23:48:44 -0400
commitf35c37e11c508c7d103fee9d7b756e16e9f2fc2e (patch)
tree14e112eee131d09c02ea49fb14b262942510c1e9
parentf6f56293cd795c74006f164a2e7c9a5ea9979f81 (diff)
downloadrusty-irc-f35c37e11c508c7d103fee9d7b756e16e9f2fc2e.tar.gz
rusty-irc-f35c37e11c508c7d103fee9d7b756e16e9f2fc2e.zip
Make errors easier
-rw-r--r--examples/rusti.rs12
1 files changed, 10 insertions, 2 deletions
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);
}