@@ -133,13 +133,24 @@ TClientCommand::TOptsParseOneLevelResult::TOptsParseOneLevelResult(TConfig& conf
133
133
optName = optName.substr (0 , eqPos);
134
134
if (optName.StartsWith (" --" )) {
135
135
opt = config.Opts ->FindLongOption (optName.substr (2 ));
136
- } else {
137
- opt = config.Opts ->FindCharOption (optName[1 ]);
138
- }
139
- if (opt != nullptr && opt->GetHasArg () != NLastGetopt::NO_ARGUMENT) {
140
- if (eqPos == TStringBuf::npos) {
136
+ if (opt != nullptr && opt->GetHasArg () != NLastGetopt::NO_ARGUMENT && eqPos == TStringBuf::npos) {
141
137
++_argc;
142
138
}
139
+ } else {
140
+ if (optName.length () > 2 ) {
141
+ // Char option list
142
+ if (eqPos != TStringBuf::npos) {
143
+ throw yexception () << " Char option list " << optName << " can not be followed by \" =\" sign" ;
144
+ }
145
+ } else if (optName.length () == 2 ) {
146
+ // Single char option
147
+ opt = config.Opts ->FindCharOption (optName[1 ]);
148
+ if (opt != nullptr && opt->GetHasArg () != NLastGetopt::NO_ARGUMENT && eqPos == TStringBuf::npos) {
149
+ ++_argc;
150
+ }
151
+ } else {
152
+ throw yexception () << " Wrong CLI argument \" " << optName << " \" " ;
153
+ }
143
154
}
144
155
} else {
145
156
--levels;
@@ -160,7 +171,17 @@ void TClientCommand::CheckForExecutableOptions(TConfig& config) {
160
171
if (optName.StartsWith (" --" )) {
161
172
opt = config.Opts ->FindLongOption (optName.substr (2 ));
162
173
} else {
163
- opt = config.Opts ->FindCharOption (optName[1 ]);
174
+ if (optName.length () > 2 ) {
175
+ // Char option list
176
+ if (eqPos != TStringBuf::npos) {
177
+ throw yexception () << " Char option list " << optName << " can not be followed by \" =\" sign" ;
178
+ }
179
+ } else if (optName.length () == 2 ) {
180
+ // Single char option
181
+ opt = config.Opts ->FindCharOption (optName[1 ]);
182
+ } else {
183
+ throw yexception () << " Wrong CLI argument \" " << optName << " \" " ;
184
+ }
164
185
}
165
186
if (config.ExecutableOptions .find (optName) != config.ExecutableOptions .end ()) {
166
187
config.HasExecutableOptions = true ;
0 commit comments