From 145136a95a8755528aa012a4ce0ed50d1ec39e24 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 30 Jan 2020 11:35:46 -0800 Subject: C: use skip_prefix() to avoid hardcoded string length We often skip an optional prefix in a string with a hardcoded constant, e.g. if (starts_with(string, "prefix")) string += 6; which is less error prone when written skip_prefix(string, "prefix", &string); Note that this changes a few error messages from "git reflog expire --expire=nonsense.timestamp", which used to complain by saying '--expire=nonsense.timestamp' is not a valid timestamp but with this change, we say 'nonsense.timestamp' is not a valid timestamp which is more technically correct (the string with --expire= as a prefix obviously cannot be a valid timestamp, but the error is about the part of the input without that prefix). Helped-by: Jeff King Signed-off-by: Junio C Hamano --- parse-options.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'parse-options.c') diff --git a/parse-options.c b/parse-options.c index 60fae3ad21..e8c04109ba 100644 --- a/parse-options.c +++ b/parse-options.c @@ -357,8 +357,7 @@ static enum parse_opt_result parse_long_opt( } /* negated? */ if (!starts_with(arg, "no-")) { - if (starts_with(long_name, "no-")) { - long_name += 3; + if (skip_prefix(long_name, "no-", &long_name)) { opt_flags |= OPT_UNSET; goto again; } -- cgit 1.2.3-korg