diff options
author | Junio C Hamano <gitster@pobox.com> | 2020-01-30 22:35:46 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-02-01 00:03:45 +0300 |
commit | 145136a95a8755528aa012a4ce0ed50d1ec39e24 (patch) | |
tree | cdb54dc3d1730adf84bff93e743f55414ea8ea0e /sha1-name.c | |
parent | d0654dc308b0ba76dd8ed7bbb33c8d8f7aacd783 (diff) |
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 <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'sha1-name.c')
-rw-r--r-- | sha1-name.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/sha1-name.c b/sha1-name.c index 200eb373ad..75d1c32606 100644 --- a/sha1-name.c +++ b/sha1-name.c @@ -908,14 +908,9 @@ static int get_oid_basic(struct repository *r, const char *str, int len, real_ref, flags, at_time, nth, oid, NULL, &co_time, &co_tz, &co_cnt)) { if (!len) { - if (starts_with(real_ref, "refs/heads/")) { - str = real_ref + 11; - len = strlen(real_ref + 11); - } else { - /* detached HEAD */ + if (!skip_prefix(real_ref, "refs/heads/", &str)) str = "HEAD"; - len = 4; - } + len = strlen(str); } if (at_time) { if (!(flags & GET_OID_QUIETLY)) { |