Skip to content
This repository was archived by the owner on Sep 11, 2020. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 0 additions & 91 deletions formats/idxfile/count.out

This file was deleted.

23 changes: 6 additions & 17 deletions formats/idxfile/decoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ package idxfile

import (
"bytes"
"encoding/binary"
"errors"
"io"

"gopkg.in/src-d/go-git.v4/core"
"gopkg.in/src-d/go-git.v4/utils/binary"
)

var (
Expand Down Expand Up @@ -70,7 +70,7 @@ func validateHeader(r io.Reader) error {
}

func readVersion(idx *Idxfile, r io.Reader) error {
v, err := readInt32(r)
v, err := binary.ReadUint32(r)
if err != nil {
return err
}
Expand All @@ -80,21 +80,19 @@ func readVersion(idx *Idxfile, r io.Reader) error {
}

idx.Version = v

return nil
}

func readFanout(idx *Idxfile, r io.Reader) error {
var err error

for i := 0; i < 255; i++ {
idx.Fanout[i], err = readInt32(r)
idx.Fanout[i], err = binary.ReadUint32(r)
if err != nil {
return err
}
}

idx.ObjectCount, err = readInt32(r)
idx.ObjectCount, err = binary.ReadUint32(r)
return err
}

Expand All @@ -115,7 +113,7 @@ func readObjectNames(idx *Idxfile, r io.Reader) error {
func readCRC32(idx *Idxfile, r io.Reader) error {
c := int(idx.ObjectCount)
for i := 0; i < c; i++ {
if err := binary.Read(r, binary.BigEndian, &idx.Entries[i].CRC32); err != nil {
if err := binary.Read(r, &idx.Entries[i].CRC32); err != nil {
return err
}
}
Expand All @@ -126,7 +124,7 @@ func readCRC32(idx *Idxfile, r io.Reader) error {
func readOffsets(idx *Idxfile, r io.Reader) error {
c := int(idx.ObjectCount)
for i := 0; i < c; i++ {
o, err := readInt32(r)
o, err := binary.ReadUint32(r)
if err != nil {
return err
}
Expand All @@ -148,12 +146,3 @@ func readChecksums(idx *Idxfile, r io.Reader) error {

return nil
}

func readInt32(r io.Reader) (uint32, error) {
var v uint32
if err := binary.Read(r, binary.BigEndian, &v); err != nil {
return 0, err
}

return v, nil
}
24 changes: 5 additions & 19 deletions formats/idxfile/encoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@ package idxfile

import (
"crypto/sha1"
"encoding/binary"
"fmt"
"hash"
"io"
"sort"

"gopkg.in/src-d/go-git.v4/core"
"gopkg.in/src-d/go-git.v4/utils/binary"
)

// An Encoder writes idx files to an output stream.
Expand Down Expand Up @@ -56,13 +54,13 @@ func (e *Encoder) encodeHeader(idx *Idxfile) (int, error) {
return c, err
}

return c + 4, e.writeInt32(idx.Version)
return c + 4, binary.WriteUint32(e, idx.Version)
}

func (e *Encoder) encodeFanout(idx *Idxfile) (int, error) {
fanout := idx.calculateFanout()
for _, c := range fanout {
if err := e.writeInt32(c); err != nil {
if err := binary.WriteUint32(e, c); err != nil {
return 0, err
}
}
Expand All @@ -71,31 +69,23 @@ func (e *Encoder) encodeFanout(idx *Idxfile) (int, error) {
}

func (e *Encoder) encodeHashes(idx *Idxfile) (int, error) {
repet := make(map[core.Hash]int, 0)

sz := 0
for _, ent := range idx.Entries {
i, err := e.Write(ent.Hash[:])
sz += i

repet[ent.Hash]++
if err != nil {
return sz, err
}
}

for h, c := range repet {
if c > 1 {
fmt.Println(h, c)
}
}
return sz, nil
}

func (e *Encoder) encodeCRC32(idx *Idxfile) (int, error) {
sz := 0
for _, ent := range idx.Entries {
err := binary.Write(e, binary.BigEndian, ent.CRC32)
err := binary.Write(e, ent.CRC32)
sz += 4

if err != nil {
Expand All @@ -109,7 +99,7 @@ func (e *Encoder) encodeCRC32(idx *Idxfile) (int, error) {
func (e *Encoder) encodeOffsets(idx *Idxfile) (int, error) {
sz := 0
for _, ent := range idx.Entries {
if err := e.writeInt32(uint32(ent.Offset)); err != nil {
if err := binary.WriteUint32(e, uint32(ent.Offset)); err != nil {
return sz, err
}

Expand All @@ -133,10 +123,6 @@ func (e *Encoder) encodeChecksums(idx *Idxfile) (int, error) {
return 40, nil
}

func (e *Encoder) writeInt32(value uint32) error {
return binary.Write(e, binary.BigEndian, value)
}

type EntryList []Entry

func (p EntryList) Len() int { return len(p) }
Expand Down
Loading