summaryrefslogtreecommitdiff
path: root/sha1-name.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2020-01-30 19:35:46 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-01-31 21:03:45 (GMT)
commit145136a95a8755528aa012a4ce0ed50d1ec39e24 (patch)
treecdb54dc3d1730adf84bff93e743f55414ea8ea0e /sha1-name.c
parentd0654dc308b0ba76dd8ed7bbb33c8d8f7aacd783 (diff)
downloadgit-145136a95a8755528aa012a4ce0ed50d1ec39e24.zip
git-145136a95a8755528aa012a4ce0ed50d1ec39e24.tar.gz
git-145136a95a8755528aa012a4ce0ed50d1ec39e24.tar.bz2
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.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/sha1-name.c b/sha1-name.c
index 200eb37..75d1c32 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)) {