check for -1 return value from getopt_long

getopt_long returns -1 when it has finished parsing all args.  A return
value of 0 indicates that a flag was set directly by getopt_long and
parsing should continue.

Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Andrew Gregory 2013-10-24 19:52:59 -04:00 committed by Allan McRae
parent 1c5b94e6bb
commit 08191b13f2
1 changed files with 4 additions and 8 deletions

View File

@ -879,10 +879,8 @@ static int parseargs(int argc, char *argv[])
};
/* parse operation */
while((opt = getopt_long(argc, argv, optstring, opts, &option_index))) {
if(opt < 0) {
break;
} else if(opt == 0) {
while((opt = getopt_long(argc, argv, optstring, opts, &option_index)) != -1) {
if(opt == 0) {
continue;
} else if(opt == '?') {
/* unknown option, getopt printed an error */
@ -906,10 +904,8 @@ static int parseargs(int argc, char *argv[])
/* parse all other options */
optind = 1;
while((opt = getopt_long(argc, argv, optstring, opts, &option_index))) {
if(opt < 0) {
break;
} else if(opt == 0) {
while((opt = getopt_long(argc, argv, optstring, opts, &option_index)) != -1) {
if(opt == 0) {
continue;
} else if(opt == '?') {
/* this should have failed during first pass already */