func gogpgme_readfunc(handle, buffer unsafe.Pointer, size C.size_t) C.ssize_t {
	d := callbackLookup(uintptr(handle)).(*Data)
	if len(d.buf) < int(size) {
		d.buf = make([]byte, size)
	}
	n, err := d.r.Read(d.buf[:size])
	if err != nil && err != io.EOF {
		C.gpgme_err_set_errno(C.EIO)
		return -1
	}
	C.memcpy(buffer, unsafe.Pointer(&d.buf[0]), C.size_t(n))
	return C.ssize_t(n)
}
func gogpgme_readfunc(handle, buffer unsafe.Pointer, size C.size_t) C.ssize_t {
	d := callbackLookup(uintptr(handle)).(*Data)
	if len(d.buf) < int(size) {
		d.buf = make([]byte, size)
	}
	n, err := d.r.Read(d.buf[:size])
	if err != nil && err != io.EOF {
		C.gpgme_err_set_errno(C.EIO)
		return -1
	}
	C.memcpy(buffer, unsafe.Pointer(&d.buf[0]), C.size_t(n))
	return C.ssize_t(n)
}
func gogpgme_readfunc ( handle , buffer unsafe . Pointer , size C . size_t ) C . ssize_t { d := callbackLookup ( uintptr ( handle ) ) . ( * Data ) if len ( d . buf ) < int ( size ) { d . buf = make ( [ ] byte , size ) } n , err := d . r . Read ( d . buf [ : size ] ) if err != nil && err != io . EOF { C . gpgme_err_set_errno ( C . EIO ) return - 1 } C . memcpy ( buffer , unsafe . Pointer ( & d . buf [ 0 ] ) , C . size_t ( n ) ) return C . ssize_t ( n ) }
//export gogpgme_readfunc
export gogpgme_readfunc