move towards using uint for all sizes (#59)

* move towards using uint for all sizes
* dsf: support larger files
This commit is contained in:
David Howden
2019-11-22 22:50:59 +11:00
committed by GitHub
parent 73beae5008
commit 7e5c04fecc
7 changed files with 54 additions and 44 deletions
+15 -15
View File
@@ -48,12 +48,12 @@ type id3v2Header struct {
Unsynchronisation bool
ExtendedHeader bool
Experimental bool
Size int
Size uint
}
// readID3v2Header reads the ID3v2 header from the given io.Reader.
// offset it number of bytes of header that was read
func readID3v2Header(r io.Reader) (h *id3v2Header, offset int, err error) {
func readID3v2Header(r io.Reader) (h *id3v2Header, offset uint, err error) {
offset = 10
b, err := readBytes(r, offset)
if err != nil {
@@ -85,7 +85,7 @@ func readID3v2Header(r io.Reader) (h *id3v2Header, offset int, err error) {
Unsynchronisation: getBit(b[2], 7),
ExtendedHeader: getBit(b[2], 6),
Experimental: getBit(b[2], 5),
Size: get7BitChunkedInt(b[3:7]),
Size: uint(get7BitChunkedInt(b[3:7])),
}
if h.ExtendedHeader {
@@ -96,7 +96,7 @@ func readID3v2Header(r io.Reader) (h *id3v2Header, offset int, err error) {
return nil, 0, fmt.Errorf("expected to read 4 bytes (ID3v23 extended header len): %v", err)
}
// skip header, size is excluding len bytes
extendedHeaderSize := getInt(b)
extendedHeaderSize := uint(getInt(b))
_, err = readBytes(r, extendedHeaderSize)
if err != nil {
return nil, 0, fmt.Errorf("expected to read %d bytes (ID3v23 skip extended header): %v", extendedHeaderSize, err)
@@ -108,7 +108,7 @@ func readID3v2Header(r io.Reader) (h *id3v2Header, offset int, err error) {
return nil, 0, fmt.Errorf("expected to read 4 bytes (ID3v24 extended header len): %v", err)
}
// skip header, size is synchsafe int including len bytes
extendedHeaderSize := get7BitChunkedInt(b) - 4
extendedHeaderSize := uint(get7BitChunkedInt(b)) - 4
_, err = readBytes(r, extendedHeaderSize)
if err != nil {
return nil, 0, fmt.Errorf("expected to read %d bytes (ID3v24 skip extended header): %v", extendedHeaderSize, err)
@@ -179,12 +179,12 @@ func readID3v24FrameFlags(r io.Reader) (*id3v2FrameFlags, error) {
}
func readID3v2_2FrameHeader(r io.Reader) (name string, size int, headerSize int, err error) {
func readID3v2_2FrameHeader(r io.Reader) (name string, size uint, headerSize uint, err error) {
name, err = readString(r, 3)
if err != nil {
return
}
size, err = readInt(r, 3)
size, err = readUint(r, 3)
if err != nil {
return
}
@@ -192,12 +192,12 @@ func readID3v2_2FrameHeader(r io.Reader) (name string, size int, headerSize int,
return
}
func readID3v2_3FrameHeader(r io.Reader) (name string, size int, headerSize int, err error) {
func readID3v2_3FrameHeader(r io.Reader) (name string, size uint, headerSize uint, err error) {
name, err = readString(r, 4)
if err != nil {
return
}
size, err = readInt(r, 4)
size, err = readUint(r, 4)
if err != nil {
return
}
@@ -205,12 +205,12 @@ func readID3v2_3FrameHeader(r io.Reader) (name string, size int, headerSize int,
return
}
func readID3v2_4FrameHeader(r io.Reader) (name string, size int, headerSize int, err error) {
func readID3v2_4FrameHeader(r io.Reader) (name string, size uint, headerSize uint, err error) {
name, err = readString(r, 4)
if err != nil {
return
}
size, err = read7BitChunkedInt(r, 4)
size, err = read7BitChunkedUint(r, 4)
if err != nil {
return
}
@@ -219,13 +219,13 @@ func readID3v2_4FrameHeader(r io.Reader) (name string, size int, headerSize int,
}
// readID3v2Frames reads ID3v2 frames from the given reader using the ID3v2Header.
func readID3v2Frames(r io.Reader, offset int, h *id3v2Header) (map[string]interface{}, error) {
func readID3v2Frames(r io.Reader, offset uint, h *id3v2Header) (map[string]interface{}, error) {
result := make(map[string]interface{})
for offset < h.Size {
var err error
var name string
var size, headerSize int
var size, headerSize uint
var flags *id3v2FrameFlags
switch h.Version {
@@ -269,7 +269,7 @@ func readID3v2Frames(r io.Reader, offset int, h *id3v2Header) (map[string]interf
if flags != nil {
if flags.Compression {
_, err = read7BitChunkedInt(r, 4) // read 4
_, err = read7BitChunkedUint(r, 4) // read 4
if err != nil {
return nil, err
}
@@ -281,7 +281,7 @@ func readID3v2Frames(r io.Reader, offset int, h *id3v2Header) (map[string]interf
if err != nil {
return nil, err
}
size -= 1
size--
}
}