summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert G. Jakabosky <bobby@sharedrealm.com>2012-06-07 19:14:05 -0700
committerRobert G. Jakabosky <bobby@sharedrealm.com>2012-06-07 19:14:05 -0700
commit9d9783ef0378493cf6ae8ed2ec7e53a4c9e160f0 (patch)
treebc6cb65204e83d7073fb1026b6404ae4fe378a48
parentdccaacb3ba8ff3cc2cd6f2c58372aa2bf27bf190 (diff)
downloadluagit2-9d9783ef0378493cf6ae8ed2ec7e53a4c9e160f0.tar.gz
Support libgit2 v0.17.0
-rw-r--r--git2.nobj.lua53
-rw-r--r--src/config.nobj.lua16
-rw-r--r--src/error.nobj.lua33
-rw-r--r--src/odb_backend.nobj.lua16
-rw-r--r--src/reference.nobj.lua10
-rw-r--r--src/tree_entry.nobj.lua2
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{ "<any>", "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" }
},
}