예제 #1
0
파일: index.go 프로젝트: jingweno/git2go
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)
}
예제 #2
0
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
}
예제 #3
0
파일: commit.go 프로젝트: bradhe/git2go
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
}
예제 #4
0
파일: signature.go 프로젝트: wid/git2go
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
}