diff --git a/include/git2/oid.h b/include/git2/oid.h index 6be02da6e..d2f3f4a14 100644 --- a/include/git2/oid.h +++ b/include/git2/oid.h @@ -46,6 +46,16 @@ typedef struct git_oid { */ GIT_EXTERN(int) git_oid_fromstr(git_oid *out, const char *str); +/** + * Parse a hex formatted null-terminated string into a git_oid. + * + * @param out oid structure the result is written into. + * @param str input hex string; must be at least 4 characters + * long and null-terminated. + * @return 0 or an error code + */ +GIT_EXTERN(int) git_oid_fromstrp(git_oid *out, const char *str); + /** * Parse N characters of a hex formatted object id into a git_oid * diff --git a/src/oid.c b/src/oid.c index 25c6fce22..0a0a814fe 100644 --- a/src/oid.c +++ b/src/oid.c @@ -51,6 +51,11 @@ int git_oid_fromstrn(git_oid *out, const char *str, size_t length) return 0; } +int git_oid_fromstrp(git_oid *out, const char *str) +{ + return git_oid_fromstrn(out, str, min(strlen(str), GIT_OID_HEXSZ)); +} + int git_oid_fromstr(git_oid *out, const char *str) { return git_oid_fromstrn(out, str, GIT_OID_HEXSZ);