summaryrefslogtreecommitdiff
path: root/settings/settings.go
diff options
context:
space:
mode:
authorJesse Ezell <[email protected]>2014-04-04 00:26:22 -0700
committerJesse Ezell <[email protected]>2014-04-04 00:26:22 -0700
commit8319a792f3184714d8f2bfa562523d1a91a9392c (patch)
treec3914d4a38355f9145884c3a278b81fbb428ce46 /settings/settings.go
parent5590078e6ff04be425b4a833adb44a0845c0b52f (diff)
parent9cd1d129bcd567ef65137783a603f8d898d8d933 (diff)
Merge remote-tracking branch 'libgit/master' into branch-iterator
Diffstat (limited to 'settings/settings.go')
-rw-r--r--settings/settings.go109
1 files changed, 109 insertions, 0 deletions
diff --git a/settings/settings.go b/settings/settings.go
new file mode 100644
index 0000000..6661c5d
--- /dev/null
+++ b/settings/settings.go
@@ -0,0 +1,109 @@
+package settings
+
+/*
+#cgo pkg-config: libgit2
+#include <git2.h>
+
+int _go_git_opts_get_search_path(int level, git_buf *buf)
+{
+ return git_libgit2_opts(GIT_OPT_GET_SEARCH_PATH, level, buf);
+}
+
+int _go_git_opts_set_search_path(int level, const char *path)
+{
+ return git_libgit2_opts(GIT_OPT_SET_SEARCH_PATH, level, path);
+}
+
+int _go_git_opts_set_size_t(int opt, size_t val)
+{
+ return git_libgit2_opts(opt, val);
+}
+
+int _go_git_opts_get_size_t(int opt, size_t *val)
+{
+ return git_libgit2_opts(opt, val);
+}
+
+*/
+import "C"
+import (
+ "runtime"
+ "unsafe"
+ "github.com/libgit2/git2go"
+)
+
+func MakeGitError(err C.int) error {
+ return git.MakeGitError2(int(err))
+}
+
+func SearchPath(level git.ConfigLevel) (string, error) {
+ var buf C.git_buf
+ defer C.git_buf_free(&buf)
+
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ err := C._go_git_opts_get_search_path(C.int(level), &buf)
+ if err < 0 {
+ return "", MakeGitError(err)
+ }
+
+ return C.GoString(buf.ptr), nil
+}
+
+func SetSearchPath(level git.ConfigLevel, path string) error {
+ cpath := C.CString(path)
+ defer C.free(unsafe.Pointer(cpath))
+
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ err := C._go_git_opts_set_search_path(C.int(level), cpath)
+ if err < 0 {
+ return MakeGitError(err)
+ }
+
+ return nil
+}
+
+func getSizet(opt C.int) (int, error) {
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ var val C.size_t
+ err := C._go_git_opts_get_size_t(opt, &val);
+ if err < 0 {
+ return 0, MakeGitError(err)
+ }
+
+ return int(val), nil
+}
+
+func setSizet(opt C.int, val int) error {
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ cval := C.size_t(val)
+ err := C._go_git_opts_set_size_t(opt, cval);
+ if err < 0 {
+ return MakeGitError(err)
+ }
+
+ return nil
+}
+
+func MwindowSize() (int, error) {
+ return getSizet(C.GIT_OPT_GET_MWINDOW_SIZE)
+}
+
+func SetMwindowSize(size int) error {
+ return setSizet(C.GIT_OPT_SET_MWINDOW_SIZE, size)
+}
+
+func MwindowMappedLimit() (int, error) {
+ return getSizet(C.GIT_OPT_GET_MWINDOW_MAPPED_LIMIT)
+}
+
+func SetMwindowMappedLimit(size int) error {
+ return setSizet(C.GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size)
+}