From 179b69ce21fd1742c4f51e4ae0f2c1ef6929019e Mon Sep 17 00:00:00 2001 From: Axel Wagner Date: Wed, 22 May 2013 14:41:42 +0200 Subject: Support for index-entries --- index.go | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'index.go') diff --git a/index.go b/index.go index 72b1d5b..90a49de 100644 --- a/index.go +++ b/index.go @@ -7,7 +7,9 @@ package git */ import "C" import ( + "fmt" "runtime" + "time" "unsafe" ) @@ -15,6 +17,18 @@ type Index struct { ptr *C.git_index } +type IndexEntry struct { + ptr *C.git_index_entry + Ctime time.Time + Mtime time.Time + Mode uint + Uid uint + Gid uint + Size uint + Oid *Oid + Path string +} + func newIndexFromC(ptr *C.git_index) *Index { idx := &Index{ptr} runtime.SetFinalizer(idx, (*Index).Free) @@ -47,3 +61,29 @@ func (v *Index) Free() { runtime.SetFinalizer(v, nil) C.git_index_free(v.ptr) } + +func (v *Index) EntryCount() uint { + return uint(C.git_index_entrycount(v.ptr)) +} + +func newIndexEntryFromC(entry *C.git_index_entry) *IndexEntry { + return &IndexEntry{ + entry, + time.Unix(int64(entry.ctime.seconds), int64(entry.ctime.nanoseconds)), + time.Unix(int64(entry.mtime.seconds), int64(entry.mtime.nanoseconds)), + uint(entry.mode), + uint(entry.uid), + uint(entry.gid), + uint(entry.file_size), + newOidFromC(&entry.oid), + C.GoString(entry.path), + } +} + +func (v *Index) EntryByIndex(index uint) (*IndexEntry, error) { + centry := C.git_index_get_byindex(v.ptr, C.size_t(index)) + if centry == nil { + return nil, fmt.Errorf("Index out of Bounds") + } + return newIndexEntryFromC(centry), nil +} -- cgit v1.2.3 From 1e01cae286652885432c3d65d0693363e1b4a05c Mon Sep 17 00:00:00 2001 From: Carlos Martín Nieto Date: Wed, 26 Feb 2014 15:18:47 +0100 Subject: Remove pointer to git_index_entry We have all the data --- index.go | 2 -- 1 file changed, 2 deletions(-) (limited to 'index.go') diff --git a/index.go b/index.go index 90a49de..2bf3d04 100644 --- a/index.go +++ b/index.go @@ -18,7 +18,6 @@ type Index struct { } type IndexEntry struct { - ptr *C.git_index_entry Ctime time.Time Mtime time.Time Mode uint @@ -68,7 +67,6 @@ func (v *Index) EntryCount() uint { func newIndexEntryFromC(entry *C.git_index_entry) *IndexEntry { return &IndexEntry{ - entry, time.Unix(int64(entry.ctime.seconds), int64(entry.ctime.nanoseconds)), time.Unix(int64(entry.mtime.seconds), int64(entry.mtime.nanoseconds)), uint(entry.mode), -- cgit v1.2.3 From 14f902afed482faefc58aa3af005cb8f2a0b050d Mon Sep 17 00:00:00 2001 From: Carlos Martín Nieto Date: Wed, 26 Feb 2014 15:22:48 +0100 Subject: Adjust to oid -> id --- index.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'index.go') diff --git a/index.go b/index.go index 2bf3d04..3ebb605 100644 --- a/index.go +++ b/index.go @@ -24,7 +24,7 @@ type IndexEntry struct { Uid uint Gid uint Size uint - Oid *Oid + Id *Oid Path string } @@ -73,7 +73,7 @@ func newIndexEntryFromC(entry *C.git_index_entry) *IndexEntry { uint(entry.uid), uint(entry.gid), uint(entry.file_size), - newOidFromC(&entry.oid), + newOidFromC(&entry.id), C.GoString(entry.path), } } -- cgit v1.2.3