Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 18 additions & 1 deletion c_src/geef.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,27 @@ geef_object_exists(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[])
return enif_make_atom(env, "false");
}

static ERL_NIF_TERM
geef_libgit2_version(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[])
{
int major = 0;
int minor = 0;
int rev = 0;

git_libgit2_version(&major, &minor, &rev);

ERL_NIF_TERM emajor = enif_make_int(env, major);
ERL_NIF_TERM eminor = enif_make_int(env, minor);
ERL_NIF_TERM erev = enif_make_int(env, rev);

return enif_make_list3(env, emajor, eminor, erev);
}

static ErlNifFunc geef_funcs[] =
{
{"hex_to_raw", 1, geef_hex_to_raw},
{"object_exists", 2, geef_object_exists}
{"object_exists", 2, geef_object_exists},
{"libgit2_version", 0, geef_libgit2_version}
};

ERL_NIF_INIT(geef, geef_funcs, NULL, NULL, NULL, NULL)
3 changes: 3 additions & 0 deletions geef
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ main([Command|_Args]) ->
[Object|_None] = _Rest,
Exists = geef:object_exists(Path, Object),
io:format("Exists: ~w~n", [Exists]);
"libgit2_version" ->
Version = geef:libgit2_version(),
io:format("libgit2 version: ~B.~B.~B~n", Version);
_Else ->
usage()
end;
Expand Down
5 changes: 4 additions & 1 deletion src/geef.erl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
-module(geef).
-export([start/0, hex_to_raw/1, object_exists/2]).
-export([start/0, hex_to_raw/1, object_exists/2, libgit2_version/0]).

start() ->
case code:priv_dir(geef) of
Expand All @@ -14,6 +14,9 @@ start() ->
hex_to_raw(_Val) ->
nif_error(?LINE).

libgit2_version() ->
nif_error(?LINE).

object_exists(_Val, _Val2) ->
nif_error(?LINE).

Expand Down