Commit 1f107478 by Vicent Martí

Merge pull request #1428 from xavier-l/nul-terminated-oid

Nul terminated oid
parents c2ea65ee b3c17483
......@@ -47,6 +47,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
*
* If N is odd, N-1 characters will be parsed instead.
......
......@@ -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, strlen(str));
}
int git_oid_fromstr(git_oid *out, const char *str)
{
return git_oid_fromstrn(out, str, GIT_OID_HEXSZ);
......
#include "clar_libgit2.h"
static git_oid id;
static git_oid idp;
static git_oid idm;
const char *str_oid = "ae90f12eea699729ed24555e40b9fd669da12a12";
const char *str_oid_p = "ae90f12eea699729ed";
const char *str_oid_m = "ae90f12eea699729ed24555e40b9fd669da12a12THIS IS EXTRA TEXT THAT SHOULD GET IGNORED";
void test_core_oid__initialize(void)
{
cl_git_pass(git_oid_fromstr(&id, str_oid));
cl_git_pass(git_oid_fromstrp(&idp, str_oid_p));
cl_git_pass(git_oid_fromstrp(&idm, str_oid_m));
}
void test_core_oid__streq(void)
......@@ -15,4 +21,12 @@ void test_core_oid__streq(void)
cl_assert(git_oid_streq(&id, "deadbeef") == -1);
cl_assert(git_oid_streq(&id, "I'm not an oid.... :)") == -1);
cl_assert(git_oid_streq(&idp, "ae90f12eea699729ed0000000000000000000000") == 0);
cl_assert(git_oid_streq(&idp, "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef") == -1);
cl_assert(git_oid_streq(&idp, "deadbeef") == -1);
cl_assert(git_oid_streq(&idp, "I'm not an oid.... :)") == -1);
cl_assert(git_oid_cmp(&id, &idm) == 0);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment