func populateCIndexEntry(source *IndexEntry, dest *C.git_index_entry) { dest.ctime.seconds = C.git_time_t(source.Ctime.Unix()) dest.ctime.nanoseconds = C.uint(source.Ctime.UnixNano()) dest.mtime.seconds = C.git_time_t(source.Mtime.Unix()) dest.mtime.nanoseconds = C.uint(source.Mtime.UnixNano()) dest.mode = C.uint(source.Mode) dest.uid = C.uint(source.Uid) dest.gid = C.uint(source.Gid) dest.file_size = C.git_off_t(source.Size) dest.id = *source.Id.toC() dest.path = C.CString(source.Path) }
func NewSignature(name, email string, when time.Time) (*Signature, error) { sig := new(Signature) cname := C.CString(name) defer C.free(unsafe.Pointer(cname)) cemail := C.CString(email) defer C.free(unsafe.Pointer(cemail)) ctime := C.git_time_t(when.Unix()) _, offset := when.Zone() coffset := C.int(offset / 60) ecode := C.git_signature_new(&sig.git_signature, cname, cemail, ctime, coffset) if ecode != git_SUCCESS { return nil, gitError() } return sig, nil }
func (sig *Signature) toC() *C.git_signature { var out *C.git_signature name := C.CString(sig.Name) defer C.free(unsafe.Pointer(name)) email := C.CString(sig.Email) defer C.free(unsafe.Pointer(email)) ret := C.git_signature_new(&out, name, email, C.git_time_t(sig.When.Unix()), C.int(sig.Offset())) if ret < 0 { return nil } return out }
func (sig *Signature) toC() (*C.git_signature, error) { if sig == nil { return nil, nil } var out *C.git_signature runtime.LockOSThread() defer runtime.UnlockOSThread() name := C.CString(sig.Name) defer C.free(unsafe.Pointer(name)) email := C.CString(sig.Email) defer C.free(unsafe.Pointer(email)) ret := C.git_signature_new(&out, name, email, C.git_time_t(sig.When.Unix()), C.int(sig.Offset())) if ret < 0 { return nil, MakeGitError(ret) } return out, nil }