forked from bonsai/harakit
		
	fop(1): switch to getopt.rs(3)
This commit is contained in:
		
							parent
							
								
									bb2c63bfaf
								
							
						
					
					
						commit
						ad92fe27d4
					
				
							
								
								
									
										26
									
								
								src/fop.rs
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								src/fop.rs
									
									
									
									
									
								
							| @ -26,33 +26,43 @@ extern crate getopt; | ||||
| extern crate strerror; | ||||
| extern crate sysexits; | ||||
| 
 | ||||
| use getopt::{ Opt, Parser }; | ||||
| use getopt::GetOpt; | ||||
| use strerror::StrError; | ||||
| use sysexits::{ EX_DATAERR, EX_IOERR, EX_UNAVAILABLE, EX_USAGE }; | ||||
| 
 | ||||
| fn main() { | ||||
| 	let argv = args().collect::<Vec<String>>(); | ||||
| 	let mut d = '␞'; | ||||
| 	let mut arg_parser = Parser::new(&argv, "d:"); | ||||
| 	let usage = format!( | ||||
| 		"Usage: {} [-d delimiter] index command [args...]", | ||||
| 		argv[0], | ||||
| 	); | ||||
| 	let mut index_arg = 0; | ||||
| 
 | ||||
| 	while let Some(opt) = arg_parser.next() { | ||||
| 	while let Some(opt) = argv.getopt("d:") { | ||||
| 		match opt { | ||||
| 			Ok(Opt('d', Some(arg))) => { | ||||
| 			Ok(o) => { | ||||
| 				/* unwrap because Err(OptError::MissingArg) will be returned if
 | ||||
| 				 * o.arg is None */ | ||||
| 				let arg = o.arg.unwrap(); | ||||
| 				let arg_char = arg.chars().collect::<Vec<char>>(); | ||||
| 				if arg_char.len() > 1 { | ||||
| 					eprintln!("{}: {}: Not a character.", argv[0], arg); | ||||
| 					exit(EX_USAGE); | ||||
| 				} else { d = arg_char[0]; } | ||||
| 				index_arg = o.ind as usize; | ||||
| 			}, | ||||
| 			_ => {}, | ||||
| 			Err(_) => { | ||||
| 				eprintln!("{}", usage); | ||||
| 				exit(EX_USAGE); | ||||
| 			} | ||||
| 		}; | ||||
| 	} | ||||
| 
 | ||||
| 	let index_arg = arg_parser.index(); | ||||
| 	let command_arg = arg_parser.index() + 1; | ||||
| 	let command_arg = index_arg as usize + 1; | ||||
| 
 | ||||
| 	argv.get(command_arg).unwrap_or_else(|| { | ||||
| 		eprintln!("Usage: {} [-d delimiter] index command [args...]", argv[0]); | ||||
| 		eprintln!("{}", usage); | ||||
| 		exit(EX_USAGE); | ||||
| 	}); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user