// DecodeNextEntry4 unmarshals a v0.4 log entry from a reader. Returns the // number of bytes read and any error that occurs. func DecodeNextEntry4(r io.Reader) (*etcd4pb.LogEntry, int, error) { var length int _, err := fmt.Fscanf(r, "%8x\n", &length) if err != nil { return nil, -1, err } data := make([]byte, length) if _, err = io.ReadFull(r, data); err != nil { return nil, -1, err } ent4 := new(etcd4pb.LogEntry) if err = ent4.Unmarshal(data); err != nil { return nil, -1, err } // add width of scanner token to length length = length + 8 + 1 return ent4, length, nil }