diff options
| author | Vicent Marti <[email protected]> | 2013-03-05 20:53:04 +0100 |
|---|---|---|
| committer | Vicent Marti <[email protected]> | 2013-03-05 20:53:04 +0100 |
| commit | b1d50b70ea8c4be9c19fe91768d6653736660c4c (patch) | |
| tree | 56670245aa3f3379bc2cfd9baec097c9f8231b94 /config.go | |
Initial commit
Diffstat (limited to 'config.go')
| -rw-r--r-- | config.go | 69 |
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 +} |
