From 9d9783ef0378493cf6ae8ed2ec7e53a4c9e160f0 Mon Sep 17 00:00:00 2001 From: "Robert G. Jakabosky" Date: Thu, 7 Jun 2012 19:14:05 -0700 Subject: Support libgit2 v0.17.0 --- git2.nobj.lua | 53 ++++++++++++++++++++---------------------------- src/config.nobj.lua | 16 +++++++-------- src/error.nobj.lua | 33 ++++++++++++++++++++++++++---- src/odb_backend.nobj.lua | 16 +++++++-------- src/reference.nobj.lua | 10 ++++----- src/tree_entry.nobj.lua | 2 +- 6 files changed, 73 insertions(+), 57 deletions(-) diff --git a/git2.nobj.lua b/git2.nobj.lua index 0cd9ee3..c17b457 100644 --- a/git2.nobj.lua +++ b/git2.nobj.lua @@ -10,40 +10,15 @@ include "git2.h", -- Error codes export_definitions { -SUCCESS = "GIT_SUCCESS", +OK = "GIT_OK", ERROR = "GIT_ERROR", -ENOTOID = "GIT_ENOTOID", ENOTFOUND = "GIT_ENOTFOUND", -ENOMEM = "GIT_ENOMEM", -EOSERR = "GIT_EOSERR", -EOBJTYPE = "GIT_EOBJTYPE", -EOBJCORRUPTED = "GIT_EOBJCORRUPTED", -ENOTAREPO = "GIT_ENOTAREPO", -EINVALIDTYPE = "GIT_EINVALIDTYPE", -EMISSINGOBJDATA = "GIT_EMISSINGOBJDATA", -EPACKCORRUPTED = "GIT_EPACKCORRUPTED", -EFLOCKFAIL = "GIT_EFLOCKFAIL", -EZLIB = "GIT_EZLIB", -EBUSY = "GIT_EBUSY", -EBAREINDEX = "GIT_EBAREINDEX", -EINVALIDREFNAME = "GIT_EINVALIDREFNAME", -EREFCORRUPTED = "GIT_EREFCORRUPTED", -ETOONESTEDSYMREF = "GIT_ETOONESTEDSYMREF", -EPACKEDREFSCORRUPTED = "GIT_EPACKEDREFSCORRUPTED", -EINVALIDPATH = "GIT_EINVALIDPATH", -EREVWALKOVER = "GIT_EREVWALKOVER", -EINVALIDREFSTATE = "GIT_EINVALIDREFSTATE", -ENOTIMPLEMENTED = "GIT_ENOTIMPLEMENTED", EEXISTS = "GIT_EEXISTS", -EOVERFLOW = "GIT_EOVERFLOW", -ENOTNUM = "GIT_ENOTNUM", -ESTREAM = "GIT_ESTREAM", -EINVALIDARGS = "GIT_EINVALIDARGS", -EOBJCORRUPTED = "GIT_EOBJCORRUPTED", -EAMBIGUOUSOIDPREFIX = "GIT_EAMBIGUOUSOIDPREFIX", -EPASSTHROUGH = "GIT_EPASSTHROUGH", -ENOMATCH = "GIT_ENOMATCH", -ESHORTBUFFER = "GIT_ESHORTBUFFER", +EAMBIGUOUS = "GIT_EAMBIGUOUS", +EBUFS = "GIT_EBUFS", + +PASSTHROUGH = "GIT_PASSTHROUGH", +REVWALKOVER = "GIT_REVWALKOVER", }, -- reference types @@ -56,6 +31,22 @@ REF_HAS_PEEL = 8, REF_LISTALL = 0x07, -- GIT_REF_OID|GIT_REF_SYMBOLIC|GIT_REF_PACKED, }, +c_function "version" { + var_out{ "", "ver" }, + c_source[[ + int major, minor, patch; + git_libgit2_version(&(major), &(minor), &(patch)); + + /* return version as a table: { major, minor, patch } */ + lua_createtable(L, 3, 0); + lua_pushinteger(L, major); + lua_rawseti(L, -2, 1); + lua_pushinteger(L, minor); + lua_rawseti(L, -2, 2); + lua_pushinteger(L, patch); + lua_rawseti(L, -2, 3); +]], +}, subfiles { "src/strarray.nobj.lua", "src/error.nobj.lua", diff --git a/src/config.nobj.lua b/src/config.nobj.lua index aa5086e..641a8d8 100644 --- a/src/config.nobj.lua +++ b/src/config.nobj.lua @@ -37,16 +37,16 @@ typedef git_config Config; { "const char *", "path", "int", "priority" }, }, method "get_int32" { - c_method_call { "GitError", "err"} "git_config_get_int32" - { "const char *", "name", "int32_t>1", "&out" }, + c_call { "GitError", "err"} "git_config_get_int32" + { "int32_t>1", "&out", "Config *", "this", "const char *", "name", }, }, method "set_int32" { c_method_call { "GitError", "err"} "git_config_set_int32" { "const char *", "name", "int32_t", "value" }, }, method "get_int64" { - c_method_call { "GitError", "err"} "git_config_get_int64" - { "const char *", "name", "int64_t>1", "&out" }, + c_call { "GitError", "err"} "git_config_get_int64" + { "int64_t>1", "&out", "Config *", "this", "const char *", "name", }, }, method "set_int64" { c_method_call { "GitError", "err"} "git_config_set_int64" @@ -54,8 +54,8 @@ typedef git_config Config; }, method "get_bool" { var_out{"bool", "out"}, - c_method_call { "GitError", "err"} "git_config_get_bool" - { "const char *", "name", "int", "(&out_int)" }, + c_call { "GitError", "err"} "git_config_get_bool" + { "int", "(&out_int)", "Config *", "this", "const char *", "name", }, c_source[[ ${out} = ${out_int}; ]], @@ -69,8 +69,8 @@ typedef git_config Config; { "const char *", "name", "int", "(value_int)" }, }, method "get_string" { - c_method_call { "GitError", "err"} "git_config_get_string" - { "const char *", "name", "const char *>1", "&out" }, + c_call { "GitError", "err"} "git_config_get_string" + { "const char *>1", "&out", "Config *", "this", "const char *", "name", }, }, method "set_string" { c_method_call { "GitError", "err"} "git_config_set_string" diff --git a/src/error.nobj.lua b/src/error.nobj.lua index 110de70..3338b5d 100644 --- a/src/error.nobj.lua +++ b/src/error.nobj.lua @@ -20,11 +20,36 @@ -- Convert Git Error codes into strings. error_code "GitError" "int" { - is_error_check = function(rec) return "(GIT_SUCCESS != ${" .. rec.name .. "})" end, - default = "GIT_SUCCESS", + is_error_check = function(rec) return "(GIT_OK != ${" .. rec.name .. "})" end, + default = "GIT_OK", c_source [[ - if(err != GIT_SUCCESS) { - err_str = git_strerror(err); + const git_error *giterr; + switch(err) { + case GIT_ERROR: + giterr = giterr_last(); + err_str = giterr->message; + break; + case GIT_ENOTFOUND: + err_str = "ENOTFOUND"; + break; + case GIT_EEXISTS: + err_str = "EEXISTS"; + break; + case GIT_EAMBIGUOUS: + err_str = "EAMBIGUOUS"; + break; + case GIT_EBUFS: + err_str = "EBUFS"; + break; + case GIT_PASSTHROUGH: + err_str = "PASSTHROUGH"; + break; + case GIT_REVWALKOVER: + err_str = "REVWALKOVER"; + break; + case GIT_OK: + default: + break; } ]], } diff --git a/src/odb_backend.nobj.lua b/src/odb_backend.nobj.lua index 57b6912..edc3c45 100644 --- a/src/odb_backend.nobj.lua +++ b/src/odb_backend.nobj.lua @@ -81,11 +81,11 @@ static int odb_backend_read_cb(void **data_p, size_t *len_p, git_otype *type_p, data = malloc(len); *data_p = data; if(data == NULL) { - return GIT_ENOMEM; + return GIT_EBUFS; //GIT_ENOMEM; } /* copy data. */ memcpy(data, ldata, len); - err = GIT_SUCCESS; + err = GIT_OK; } else if(lua_isnil(L, -2)) { *data_p = NULL; /* backend returned an error. */ @@ -93,7 +93,7 @@ static int odb_backend_read_cb(void **data_p, size_t *len_p, git_otype *type_p, } else { *data_p = NULL; /* bad return value from lua backend. */ - err = GIT_EOBJTYPE; + err = GIT_EAMBIGUOUS; //GIT_EOBJTYPE; } return err; @@ -104,12 +104,12 @@ static int odb_backend_read_prefix_cb(git_oid *out_oid, void **data_p, size_t *l *data_p = NULL; if(len >= GIT_OID_HEXSZ) { int rc = odb_backend_read_cb(data_p, len_p, type_p, backend, short_oid); - if(rc == GIT_SUCCESS) { + if(rc == GIT_OK) { git_oid_cpy(out_oid, short_oid); } return rc; } - return GIT_ENOTIMPLEMENTED; + return GIT_EAMBIGUOUS; //GIT_ENOTIMPLEMENTED; } static int odb_backend_read_header_cb(size_t *len_p, git_otype *type_p, git_odb_backend *backend, const git_oid *oid) @@ -137,13 +137,13 @@ static int odb_backend_read_header_cb(size_t *len_p, git_otype *type_p, git_odb_ } else if(arg_type == LUA_TSTRING) { *type_p = git_object_string2type(lua_tostring(L, -1)); } - err = GIT_SUCCESS; + err = GIT_OK; } else if(arg_type == LUA_TNIL) { /* backend returned an error. */ err = lua_tointeger(L, -1); } else { /* bad return value from lua backend. */ - err = GIT_EOBJTYPE; + err = GIT_EAMBIGUOUS; //GIT_EOBJTYPE; } return err; @@ -167,7 +167,7 @@ static int odb_backend_write_cb(git_oid *oid, git_odb_backend *backend, const vo lua_call(L, 2, 2); if(!lua_isnil(L, -2)) { *oid = obj_type_OID_check(L,-2); - err = GIT_SUCCESS; + err = GIT_OK; } else { err = lua_tointeger(L, -1); } diff --git a/src/reference.nobj.lua b/src/reference.nobj.lua index 1d5136f..45d7cfd 100644 --- a/src/reference.nobj.lua +++ b/src/reference.nobj.lua @@ -19,7 +19,7 @@ -- THE SOFTWARE. object "Reference" { - basetype "git_rtype" "integer", + basetype "git_ref_t" "integer", c_source [[ typedef git_reference Reference; ]], @@ -40,7 +40,7 @@ typedef git_reference Reference; c_method_call "GitError" "git_reference_set_target" { "const char *", "target" } }, method "type" { - c_method_call "git_rtype" "git_reference_type" {} + c_method_call "git_ref_t" "git_reference_type" {} }, method "name" { c_method_call "const char *" "git_reference_name" {} @@ -61,7 +61,7 @@ typedef git_reference Reference; c_function "packall" { c_call "GitError" "git_reference_packall" { "Repository *", "repo" } }, - c_function "listall" { + c_function "list" { var_in{ "Repository *", "repo" }, var_in{ "unsigned int", "list_flags" }, var_out{ "StrArray *", "array" }, @@ -72,8 +72,8 @@ typedef git_reference Reference; c_source[[ /* push this onto stack now, just encase there is a out-of-memory error. */ ${array} = obj_type_StrArray_push(L, &tmp_array); - ${err} = git_reference_listall(${array}, ${repo}, ${list_flags}); - if(${err} == GIT_SUCCESS) { + ${err} = git_reference_list(${array}, ${repo}, ${list_flags}); + if(${err} == GIT_OK) { return 1; /* array is already on the stack. */ } else { /* there is an error remove the temp array from stack. */ diff --git a/src/tree_entry.nobj.lua b/src/tree_entry.nobj.lua index c0aa1c0..22371f7 100644 --- a/src/tree_entry.nobj.lua +++ b/src/tree_entry.nobj.lua @@ -33,7 +33,7 @@ typedef git_tree_entry TreeEntry; c_source "${id} = *(git_tree_entry_id(${this}));" }, method "object" { - c_call "GitError" "git_tree_entry_2object" + c_call "GitError" "git_tree_entry_to_object" { "!Object *", "&obj>1", "Repository *", "repo", "TreeEntry *", "this" } }, } -- cgit v1.2.1