From 42d0aef29dbc13b935d5c6328a1381bbf6302b7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Thu, 13 Feb 2014 14:51:24 +0100 Subject: [PATCH] Adjust to git_buf and oid->id changes --- c_src/commit.c | 2 +- c_src/index.c | 4 ++-- c_src/repository.c | 21 ++++++++------------- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/c_src/commit.c b/c_src/commit.c index 318f2e5..e9c3c14 100644 --- a/c_src/commit.c +++ b/c_src/commit.c @@ -123,7 +123,7 @@ geef_commit_create(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) i++; } - if (git_commit_create_from_oids(&commit_id, repo->repo, ref, author, committer, encoding, message, + if (git_commit_create_from_ids(&commit_id, repo->repo, ref, author, committer, encoding, message, &tree, parents_len, parents_ids_ptrs) < 0) return geef_error(env); diff --git a/c_src/index.c b/c_src/index.c index 7911443..87d1dad 100644 --- a/c_src/index.c +++ b/c_src/index.c @@ -165,7 +165,7 @@ geef_index_add(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) if (!enif_inspect_binary(env, eentry[9], &id)) return enif_make_badarg(env); - git_oid_fromraw(&entry.oid, id.data); + git_oid_fromraw(&entry.id, id.data); if (git_index_add(index->index, &entry) < 0) return geef_error(env); @@ -189,7 +189,7 @@ ERL_NIF_TERM entry_to_term(ErlNifEnv *env, const git_index_entry *entry) ErlNifBinary id, path; size_t len; - if (geef_oid_bin(&id, &entry->oid) < 0) + if (geef_oid_bin(&id, &entry->id) < 0) return geef_oom(env); len = strlen(entry->path); diff --git a/c_src/repository.c b/c_src/repository.c index ac49563..edd7cb9 100644 --- a/c_src/repository.c +++ b/c_src/repository.c @@ -73,6 +73,7 @@ geef_repository_open(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) ERL_NIF_TERM geef_repository_discover(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) { + git_buf buf = {NULL}; ErlNifBinary bin, path; int error; @@ -82,21 +83,15 @@ geef_repository_discover(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) if (!geef_terminate_binary(&bin)) return geef_oom(env); - if (!enif_alloc_binary(256, &path)) + error = git_repository_discover(&buf, (char *) bin.data, 0, NULL); + enif_release_binary(&bin); + if (error < 0) + return geef_error(env); + + if (!enif_alloc_binary(&path, strlen(buf.ptr))) return geef_oom(env); - while ((error = git_repository_discover((char *) path.data, path.size,(char *) bin.data, 0, NULL)) < 0 && - giterr_last()->klass == GITERR_REPOSITORY) { - if (!enif_realloc_binary(&path, path.size * 2)) - return geef_oom(env); - } - - if (error < 0) { - enif_release_binary(&path); - return geef_error(env); - } - - enif_realloc_binary(&path, strlen((char *) path.data)); + memcpy(path.data, buf.ptr, path.size); return enif_make_tuple2(env, atoms.ok, enif_make_binary(env, &path)); }