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 strerror;
 | 
				
			||||||
extern crate sysexits;
 | 
					extern crate sysexits;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use getopt::{ Opt, Parser };
 | 
					use getopt::GetOpt;
 | 
				
			||||||
use strerror::StrError;
 | 
					use strerror::StrError;
 | 
				
			||||||
use sysexits::{ EX_DATAERR, EX_IOERR, EX_UNAVAILABLE, EX_USAGE };
 | 
					use sysexits::{ EX_DATAERR, EX_IOERR, EX_UNAVAILABLE, EX_USAGE };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn main() {
 | 
					fn main() {
 | 
				
			||||||
	let argv = args().collect::<Vec<String>>();
 | 
						let argv = args().collect::<Vec<String>>();
 | 
				
			||||||
	let mut d = '␞';
 | 
						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 {
 | 
							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>>();
 | 
									let arg_char = arg.chars().collect::<Vec<char>>();
 | 
				
			||||||
				if arg_char.len() > 1 {
 | 
									if arg_char.len() > 1 {
 | 
				
			||||||
					eprintln!("{}: {}: Not a character.", argv[0], arg);
 | 
										eprintln!("{}: {}: Not a character.", argv[0], arg);
 | 
				
			||||||
					exit(EX_USAGE);
 | 
										exit(EX_USAGE);
 | 
				
			||||||
				} else { d = arg_char[0]; }
 | 
									} 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 = index_arg as usize + 1;
 | 
				
			||||||
	let command_arg = arg_parser.index() + 1;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	argv.get(command_arg).unwrap_or_else(|| {
 | 
						argv.get(command_arg).unwrap_or_else(|| {
 | 
				
			||||||
		eprintln!("Usage: {} [-d delimiter] index command [args...]", argv[0]);
 | 
							eprintln!("{}", usage);
 | 
				
			||||||
		exit(EX_USAGE);
 | 
							exit(EX_USAGE);
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user