Add object id lookup

This commit is contained in:
Carlos Martín Nieto
2013-03-02 03:27:40 +01:00
parent d62511515d
commit 9b2a053848
7 changed files with 48 additions and 4 deletions

View File

@@ -98,6 +98,7 @@ static ErlNifFunc geef_funcs[] =
{"oid_fmt", 1, geef_oid_fmt},
{"oid_parse", 1, geef_oid_parse},
{"object_lookup", 2, geef_object_lookup},
{"object_id", 1, geef_object_id},
{"commit_tree", 1, geef_commit_tree},
{"commit_tree_id", 1, geef_commit_tree_id},
{"tree_bypath", 2, geef_tree_bypath},

View File

@@ -63,3 +63,21 @@ geef_object_lookup(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[])
return enif_make_tuple3(env, atoms.ok, geef_object_type2atom(git_object_type(obj->obj)), term_obj);
}
ERL_NIF_TERM
geef_object_id(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[])
{
ErlNifBinary bin;
const git_oid *id;
geef_object *obj;
if (!enif_get_resource(env, argv[0], geef_object_type, (void **) &obj))
return enif_make_badarg(env);
id = git_object_id(obj->obj);
if (geef_oid_bin(&bin, id) < 0)
return atoms.error;
return enif_make_tuple2(env, atoms.ok, enif_make_binary(env, &bin));
}

View File

@@ -13,6 +13,7 @@ typedef struct {
} geef_object;
ERL_NIF_TERM geef_object_lookup(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]);
ERL_NIF_TERM geef_object_id(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]);
ERL_NIF_TERM geef_object_type2atom(const git_otype type);