aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf')
-rw-r--r--tools/perf/util/parse-options.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/tools/perf/util/parse-options.c b/tools/perf/util/parse-options.c
index 31f404a032a9..b6b39ff14fbb 100644
--- a/tools/perf/util/parse-options.c
+++ b/tools/perf/util/parse-options.c
@@ -224,6 +224,24 @@ static int parse_long_opt(struct parse_opt_ctx_t *p, const char *arg,
224 return 0; 224 return 0;
225 } 225 }
226 if (!rest) { 226 if (!rest) {
227 if (!prefixcmp(options->long_name, "no-")) {
228 /*
229 * The long name itself starts with "no-", so
230 * accept the option without "no-" so that users
231 * do not have to enter "no-no-" to get the
232 * negation.
233 */
234 rest = skip_prefix(arg, options->long_name + 3);
235 if (rest) {
236 flags |= OPT_UNSET;
237 goto match;
238 }
239 /* Abbreviated case */
240 if (!prefixcmp(options->long_name + 3, arg)) {
241 flags |= OPT_UNSET;
242 goto is_abbreviated;
243 }
244 }
227 /* abbreviated? */ 245 /* abbreviated? */
228 if (!strncmp(options->long_name, arg, arg_end - arg)) { 246 if (!strncmp(options->long_name, arg, arg_end - arg)) {
229is_abbreviated: 247is_abbreviated:
@@ -259,6 +277,7 @@ is_abbreviated:
259 if (!rest) 277 if (!rest)
260 continue; 278 continue;
261 } 279 }
280match:
262 if (*rest) { 281 if (*rest) {
263 if (*rest != '=') 282 if (*rest != '=')
264 continue; 283 continue;