From 79fe156d307a9c7b294aa92c741dc0c2759a1894 Mon Sep 17 00:00:00 2001 From: Vadzim Ramanenka Date: Mon, 17 Jul 2017 13:12:43 +0300 Subject: Add binding for `git_index_add_frombuffer` --- index.go | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'index.go') diff --git a/index.go b/index.go index 5106516..d7a1e5f 100644 --- a/index.go +++ b/index.go @@ -90,7 +90,9 @@ func populateCIndexEntry(source *IndexEntry, dest *C.git_index_entry) { dest.uid = C.uint32_t(source.Uid) dest.gid = C.uint32_t(source.Gid) dest.file_size = C.uint32_t(source.Size) - dest.id = *source.Id.toC() + if source.Id != nil { + dest.id = *source.Id.toC() + } dest.path = C.CString(source.Path) } @@ -181,6 +183,28 @@ func (v *Index) AddByPath(path string) error { return nil } +// AddFromBuffer adds or replaces an index entry from a buffer in memory +func (v *Index) AddFromBuffer(entry *IndexEntry, buffer []byte) error { + var centry C.git_index_entry + + populateCIndexEntry(entry, ¢ry) + defer freeCIndexEntry(¢ry) + + var cbuffer unsafe.Pointer + if len(buffer) > 0 { + cbuffer = unsafe.Pointer(&buffer[0]) + } + + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + if err := C.git_index_add_frombuffer(v.ptr, ¢ry, cbuffer, C.size_t(len(buffer))); err < 0 { + return MakeGitError(err) + } + + return nil +} + func (v *Index) AddAll(pathspecs []string, flags IndexAddOpts, callback IndexMatchedPathCallback) error { cpathspecs := C.git_strarray{} cpathspecs.count = C.size_t(len(pathspecs)) -- cgit v1.2.3 From 00374b39aad728f34eeadbb575ac607acbfa205a Mon Sep 17 00:00:00 2001 From: lhchavez Date: Sun, 23 Feb 2020 14:38:10 +0000 Subject: Update the method name --- index.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'index.go') diff --git a/index.go b/index.go index 32acd14..50538bd 100644 --- a/index.go +++ b/index.go @@ -212,7 +212,7 @@ func (v *Index) AddFromBuffer(entry *IndexEntry, buffer []byte) error { runtime.LockOSThread() defer runtime.UnlockOSThread() - if err := C.git_index_add_frombuffer(v.ptr, ¢ry, cbuffer, C.size_t(len(buffer))); err < 0 { + if err := C.git_index_add_from_buffer(v.ptr, ¢ry, cbuffer, C.size_t(len(buffer))); err < 0 { return MakeGitError(err) } -- cgit v1.2.3