index: grab all of the fields from C-land
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user