filestash/vendor/github.com/vmware/go-nfs-client/nfs/xdr/decode.go
2022-12-08 09:19:04 +11:00

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
}