summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--remote.go32
-rw-r--r--wrapper.c3
2 files changed, 27 insertions, 8 deletions
diff --git a/remote.go b/remote.go
index eb5d7a7..74ebe27 100644
--- a/remote.go
+++ b/remote.go
@@ -38,14 +38,14 @@ const (
RemoteCompletionError = C.GIT_REMOTE_COMPLETION_ERROR
)
-type ProgressCallback func(str string) int
+type TransportMessageCallback func(str string) int
type CompletionCallback func(RemoteCompletion) int
type CredentialsCallback func(url string, username_from_url string, allowed_types CredType) (int, *Cred)
type TransferProgressCallback func(stats TransferProgress) int
type UpdateTipsCallback func(refname string, a *Oid, b *Oid) int
type RemoteCallbacks struct {
- ProgressCallback
+ SidebandProgressCallback TransportMessageCallback
CompletionCallback
CredentialsCallback
TransferProgressCallback
@@ -65,14 +65,14 @@ func populateRemoteCallbacks(ptr *C.git_remote_callbacks, callbacks *RemoteCallb
ptr.payload = unsafe.Pointer(callbacks)
}
-//export progressCallback
-func progressCallback(_str *C.char, _len C.int, data unsafe.Pointer) int {
+//export sidebandProgressCallback
+func sidebandProgressCallback(_str *C.char, _len C.int, data unsafe.Pointer) int {
callbacks := (*RemoteCallbacks)(data)
- if callbacks.ProgressCallback == nil {
+ if callbacks.SidebandProgressCallback == nil {
return 0
}
str := C.GoStringN(_str, _len)
- return callbacks.ProgressCallback(str)
+ return callbacks.SidebandProgressCallback(str)
}
//export completionCallback
@@ -127,6 +127,26 @@ func RemoteIsValidName(name string) bool {
return false
}
+func (r *Remote) SetCheckCert(check bool) {
+ C.git_remote_check_cert(r.ptr, cbool(check))
+}
+
+func (r *Remote) SetCallbacks(callbacks *RemoteCallbacks) error {
+ var ccallbacks C.git_remote_callbacks
+
+ populateRemoteCallbacks(&ccallbacks, callbacks)
+
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ ecode := C.git_remote_set_callbacks(r.ptr, &ccallbacks)
+ if ecode < 0 {
+ return MakeGitError(ecode)
+ }
+
+ return nil
+}
+
func (r *Remote) Free() {
runtime.SetFinalizer(r, nil)
C.git_remote_free(r.ptr)
diff --git a/wrapper.c b/wrapper.c
index 0fa6c48..aab5c0e 100644
--- a/wrapper.c
+++ b/wrapper.c
@@ -26,12 +26,11 @@ int _go_git_odb_foreach(git_odb *db, void *payload)
}
void _go_git_setup_callbacks(git_remote_callbacks *callbacks) {
- typedef int (*progress_cb)(const char *str, int len, void *data);
typedef int (*completion_cb)(git_remote_completion_type type, void *data);
typedef int (*credentials_cb)(git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *data);
typedef int (*transfer_progress_cb)(const git_transfer_progress *stats, void *data);
typedef int (*update_tips_cb)(const char *refname, const git_oid *a, const git_oid *b, void *data);
- callbacks->progress = (progress_cb)progressCallback;
+ callbacks->sideband_progress = (git_transport_message_cb)sidebandProgressCallback;
callbacks->completion = (completion_cb)completionCallback;
callbacks->credentials = (credentials_cb)credentialsCallback;
callbacks->transfer_progress = (transfer_progress_cb)transferProgressCallback;