summaryrefslogtreecommitdiff
path: root/config.go
diff options
context:
space:
mode:
authorVicent Marti <[email protected]>2013-03-05 20:53:04 +0100
committerVicent Marti <[email protected]>2013-03-05 20:53:04 +0100
commitb1d50b70ea8c4be9c19fe91768d6653736660c4c (patch)
tree56670245aa3f3379bc2cfd9baec097c9f8231b94 /config.go
Initial commit
Diffstat (limited to 'config.go')
-rw-r--r--config.go69
1 files changed, 69 insertions, 0 deletions
diff --git a/config.go b/config.go
new file mode 100644
index 0000000..ec8b8d0
--- /dev/null
+++ b/config.go
@@ -0,0 +1,69 @@
+package git
+
+/*
+#cgo pkg-config: libgit2
+#include <git2.h>
+#include <git2/errors.h>
+*/
+import "C"
+import (
+ "unsafe"
+)
+
+type Config struct {
+ ptr *C.git_config
+}
+
+func (c *Config) LookupInt32(name string) (v int32, err error) {
+ var out C.int32_t
+ cname := C.CString(name)
+ defer C.free(unsafe.Pointer(cname))
+
+ ret := C.git_config_get_int32(&out, c.ptr, cname)
+ if ret < 0 {
+ return 0, LastError()
+ }
+
+ return int32(out), nil
+}
+
+func (c *Config) LookupInt64(name string) (v int64, err error) {
+ var out C.int64_t
+ cname := C.CString(name)
+ defer C.free(unsafe.Pointer(cname))
+
+ ret := C.git_config_get_int64(&out, c.ptr, cname)
+ if ret < 0 {
+ return 0, LastError()
+ }
+
+ return int64(out), nil
+}
+
+func (c *Config) LookupString(name string) (v string, err error) {
+ var ptr *C.char
+ cname := C.CString(name)
+ defer C.free(unsafe.Pointer(cname))
+
+ ret := C.git_config_get_string(&ptr, c.ptr, cname)
+ if ret < 0 {
+ return "", LastError()
+ }
+
+ return C.GoString(ptr), nil
+}
+
+func (c *Config) Set(name, value string) (err error) {
+ cname := C.CString(name)
+ defer C.free(unsafe.Pointer(cname))
+
+ cvalue := C.CString(value)
+ defer C.free(unsafe.Pointer(cvalue))
+
+ ret := C.git_config_set_string(c.ptr, cname, cvalue)
+ if ret < 0 {
+ return LastError()
+ }
+
+ return nil
+}