| 137 | } |
| 138 | |
| 139 | func (v *Odb) Write(data []byte, otype ObjectType) (oid *Oid, err error) { |
| 140 | oid = new(Oid) |
| 141 | |
| 142 | runtime.LockOSThread() |
| 143 | defer runtime.UnlockOSThread() |
| 144 | |
| 145 | var size C.size_t |
| 146 | if len(data) > 0 { |
| 147 | size = C.size_t(len(data)) |
| 148 | } else { |
| 149 | data = []byte{0} |
| 150 | size = C.size_t(0) |
| 151 | } |
| 152 | |
| 153 | ret := C.git_odb_write(oid.toC(), v.ptr, unsafe.Pointer(&data[0]), size, C.git_object_t(otype)) |
| 154 | runtime.KeepAlive(v) |
| 155 | if ret < 0 { |
| 156 | return nil, MakeGitError(ret) |
| 157 | } |
| 158 | |
| 159 | return oid, nil |
| 160 | } |
| 161 | |
| 162 | func (v *Odb) Read(oid *Oid) (obj *OdbObject, err error) { |
| 163 | obj = new(OdbObject) |