| Index: source/tools/toolutil/uoptions.c
|
| diff --git a/source/tools/toolutil/uoptions.c b/source/tools/toolutil/uoptions.c
|
| index 05efc170cbdf7513dd57ebf7779b982e97a21d94..291e2fce4e7fb88cebfb0375901bc691c8742a76 100644
|
| --- a/source/tools/toolutil/uoptions.c
|
| +++ b/source/tools/toolutil/uoptions.c
|
| @@ -1,7 +1,7 @@
|
| /*
|
| *******************************************************************************
|
| *
|
| -* Copyright (C) 2000, International Business Machines
|
| +* Copyright (C) 2000-2015, International Business Machines
|
| * Corporation and others. All Rights Reserved.
|
| *
|
| *******************************************************************************
|
| @@ -60,9 +60,16 @@ u_parseArgs(int argc, char* argv[],
|
| option->value=argv[++i];
|
| } else if(option->hasArg==UOPT_REQUIRES_ARG) {
|
| /* there is no argument, but one is required: return with error */
|
| + option->doesOccur=0;
|
| return -i;
|
| }
|
| }
|
| +
|
| + if(option->optionFn!=NULL && option->optionFn(option->context, option)<0) {
|
| + /* the option function was called and returned an error */
|
| + option->doesOccur=0;
|
| + return -i;
|
| + }
|
| }
|
| } else {
|
| /* process one or more short options */
|
| @@ -95,21 +102,23 @@ u_parseArgs(int argc, char* argv[],
|
| break;
|
| } else if(option->hasArg==UOPT_REQUIRES_ARG) {
|
| /* there is no argument, but one is required: return with error */
|
| + option->doesOccur=0;
|
| return -i;
|
| }
|
| }
|
|
|
| + if(option->optionFn!=NULL && option->optionFn(option->context, option)<0) {
|
| + /* the option function was called and returned an error */
|
| + option->doesOccur=0;
|
| + return -i;
|
| + }
|
| +
|
| /* get the next option letter */
|
| option=NULL;
|
| c=*arg++;
|
| } while(c!=0);
|
| }
|
|
|
| - if(option!=0 && option->optionFn!=0 && option->optionFn(option->context, option)<0) {
|
| - /* the option function was called and returned an error */
|
| - return -i;
|
| - }
|
| -
|
| /* go to next argv[] */
|
| ++i;
|
| } else {
|
|
|