mirror of
https://github.com/mickael-kerjean/filestash
synced 2025-12-19 23:05:04 +01:00
56 lines
909 B
Go
56 lines
909 B
Go
// Copyright © 2017 VMware, Inc. All Rights Reserved.
|
|
// SPDX-License-Identifier: BSD-2-Clause
|
|
//
|
|
package xdr
|
|
|
|
import (
|
|
"io"
|
|
|
|
xdr "github.com/rasky/go-xdr/xdr2"
|
|
)
|
|
|
|
func Read(r io.Reader, val interface{}) error {
|
|
_, err := xdr.Unmarshal(r, val)
|
|
return err
|
|
}
|
|
|
|
func ReadUint32(r io.Reader) (uint32, error) {
|
|
var n uint32
|
|
if err := Read(r, &n); err != nil {
|
|
return n, err
|
|
}
|
|
|
|
return n, nil
|
|
}
|
|
|
|
func ReadOpaque(r io.Reader) ([]byte, error) {
|
|
length, err := ReadUint32(r)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
buf := make([]byte, length)
|
|
if _, err = r.Read(buf); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return buf, nil
|
|
}
|
|
|
|
func ReadUint32List(r io.Reader) ([]uint32, error) {
|
|
length, err := ReadUint32(r)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
buf := make([]uint32, length)
|
|
|
|
for i := 0; i < int(length); i++ {
|
|
buf[i], err = ReadUint32(r)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
return buf, nil
|
|
}
|