9 func mustWrite(w io.Writer, buf []byte) {
10 if _, err := w.Write(buf); err != nil {
15 func writer(w io.Writer, sink chan Ent) {
16 num := make([]byte, 8)
18 for ent := range sink {
19 name = ent.name[len(ent.name)-1]
20 if len(ent.name) >= 1<<16 {
23 binary.BigEndian.PutUint16(num[:2], uint16(len(name)))
25 mustWrite(w, []byte(name))
26 if len(ent.name) >= 1<<8 {
29 mustWrite(w, []byte{byte(len(ent.name) - 1)})
30 binary.BigEndian.PutUint64(num, uint64(ent.mtime))
32 binary.BigEndian.PutUint64(num, uint64(ent.size))