Implement git_repository_discover

This commit is contained in:
Axel Wagner 2013-05-14 21:34:07 +02:00
parent c9adbf05d7
commit e1238b5994
1 changed files with 27 additions and 0 deletions

27
git.go
View File

@ -9,6 +9,7 @@ import "C"
import (
"bytes"
"unsafe"
"strings"
)
const (
@ -122,3 +123,29 @@ func ucbool(b bool) C.uint {
}
return C.uint(0)
}
func Discover(start string, across_fs bool, ceiling_dirs []string) (string, error) {
ceildirs := C.CString(strings.Join(ceiling_dirs, string(C.GIT_PATH_LIST_SEPARATOR)))
defer C.free(unsafe.Pointer(ceildirs))
cstart := C.CString(start)
defer C.free(unsafe.Pointer(cstart))
retpath := (*C.char)(C.malloc(C.GIT_PATH_MAX))
defer C.free(unsafe.Pointer(retpath))
var acrfs C.int
if across_fs {
acrfs = 1
} else {
acrfs = 0
}
r := C.git_repository_discover(retpath, C.GIT_PATH_MAX, cstart, acrfs, ceildirs)
if r == 0 {
return C.GoString(retpath), nil
}
return "", LastError()
}