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