From 179f424bb5998aff904dafa1141b4fa0ddd1659a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Wed, 16 Oct 2013 14:23:38 +0200 Subject: [PATCH] index: grab all of the fields from C-land --- c_src/index.c | 19 +++++++++++++------ src/geef_index.erl | 5 +++-- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/c_src/index.c b/c_src/index.c index 62cfa4b..ce270b7 100644 --- a/c_src/index.c +++ b/c_src/index.c @@ -148,7 +148,6 @@ geef_index_count(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) ERL_NIF_TERM entry_to_term(ErlNifEnv *env, const git_index_entry *entry) { ErlNifBinary id, path; - ERL_NIF_TERM mode, file_size; size_t len; if (geef_oid_bin(&id, &entry->oid) < 0) @@ -161,11 +160,19 @@ ERL_NIF_TERM entry_to_term(ErlNifEnv *env, const git_index_entry *entry) } memcpy(path.data, entry->path, len); - mode = enif_make_uint(env, entry->mode); - file_size = enif_make_int64(env, entry->file_size); - - return enif_make_tuple5(env, atoms.ok, enif_make_binary(env, &path), enif_make_binary(env, &id), - mode, file_size); + return enif_make_tuple(env, 13, atoms.ok, + enif_make_int64(env, entry->ctime.seconds), + enif_make_int64(env, entry->mtime.seconds), + enif_make_uint(env, entry->dev), + enif_make_uint(env, entry->ino), + enif_make_uint(env, entry->mode), + enif_make_uint(env, entry->uid), + enif_make_uint(env, entry->gid), + enif_make_int64(env, entry->file_size), + enif_make_binary(env, &id), + enif_make_uint(env, entry->flags), + enif_make_uint(env, entry->flags_extended), + enif_make_binary(env, &path)); } ERL_NIF_TERM diff --git a/src/geef_index.erl b/src/geef_index.erl index bc48a3b..9480c9d 100644 --- a/src/geef_index.erl +++ b/src/geef_index.erl @@ -74,8 +74,9 @@ get(Pid, Path, Stage) -> nth(Pid, Nth) -> maybe_entry(gen_server:call(Pid, {nth, Nth})). -maybe_entry({ok, Path, Id, Mode, Size}) -> - {ok, #geef_index_entry{path=Path, id=Id, mode=Mode, size=Size}}; +maybe_entry({ok, Ctime, Mtime, Dev, Ino, Mode, Uid, Gid, Size, Id, Flags, FlagsExtended, Path}) -> + {ok, #geef_index_entry{ctime=Ctime, mtime=Mtime, dev=Dev, ino=Ino, mode=Mode, uid=Uid, gid=Gid, + size=Size, id=Id, flags=Flags, flags_extended=FlagsExtended, path=Path}}; maybe_entry(Error = {error, _}) -> Error.