diff options
Diffstat (limited to 'patch.go')
| -rw-r--r-- | patch.go | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/patch.go b/patch.go new file mode 100644 index 0000000..f2016c4 --- /dev/null +++ b/patch.go @@ -0,0 +1,44 @@ +package git + +/* +#include <git2.h> +*/ +import "C" +import ( + "runtime" +) + +type Patch struct { + ptr *C.git_patch +} + +func newPatchFromC(ptr *C.git_patch) *Patch { + if ptr == nil { + return nil + } + + patch := &Patch{ + ptr: ptr, + } + + runtime.SetFinalizer(patch, (*Patch).Free) + return patch +} + +func (patch *Patch) Free() error { + if patch.ptr == nil { + return ErrInvalid + } + runtime.SetFinalizer(patch, nil) + C.git_patch_free(patch.ptr) + return nil +} + +func (patch *Patch) String() (string, error) { + if diff.ptr != nil { + return "", ErrInvalid + } + var cptr *C.char + C.git_patch_to_str(&cptr, patch.ptr) + return C.GoString(cptr), nil +} |
