Files
llgo/runtime/internal/clite/syscall/dirent.go
2025-04-11 16:28:44 +08:00

48 lines
1.0 KiB
Go

package syscall
import (
"github.com/goplus/llgo/runtime/internal/clite/byteorder"
"github.com/goplus/llgo/runtime/internal/clite/goarch"
)
// readInt returns the size-bytes unsigned integer in native byte order at offset off.
func readInt(b []byte, off, size uintptr) (u uint64, ok bool) {
if len(b) < int(off+size) {
return 0, false
}
if goarch.BigEndian {
return readIntBE(b[off:], size), true
}
return readIntLE(b[off:], size), true
}
func readIntBE(b []byte, size uintptr) uint64 {
switch size {
case 1:
return uint64(b[0])
case 2:
return uint64(byteorder.BEUint16(b))
case 4:
return uint64(byteorder.BEUint32(b))
case 8:
return uint64(byteorder.BEUint64(b))
default:
panic("syscall: readInt with unsupported size")
}
}
func readIntLE(b []byte, size uintptr) uint64 {
switch size {
case 1:
return uint64(b[0])
case 2:
return uint64(byteorder.LEUint16(b))
case 4:
return uint64(byteorder.LEUint32(b))
case 8:
return uint64(byteorder.LEUint64(b))
default:
panic("syscall: readInt with unsupported size")
}
}