From 2334f98c6e4d4575e59fb3148eae8918ec42669d Mon Sep 17 00:00:00 2001 From: Jason Crawford Date: Wed, 23 Dec 2020 15:04:25 -0800 Subject: [PATCH] Fix for windows-specific syscall --- music/tracked/mod/util.go | 4 +--- music/tracked/mod/util_linux.go | 8 ++++++++ music/tracked/mod/util_win.go | 10 ++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 music/tracked/mod/util_linux.go create mode 100644 music/tracked/mod/util_win.go diff --git a/music/tracked/mod/util.go b/music/tracked/mod/util.go index 7604317..dbfd4b2 100644 --- a/music/tracked/mod/util.go +++ b/music/tracked/mod/util.go @@ -1,12 +1,10 @@ package mod -import "syscall" - // WordLength is a count of WORD (uint16) sized values, stored in BigEndian format type WordLength uint16 // Value returns the actual length described by this WordLength func (m WordLength) Value() int { - v := syscall.Ntohs(uint16(m)) + v := BE16ToLE16(uint16(m)) return int(v) << 1 } diff --git a/music/tracked/mod/util_linux.go b/music/tracked/mod/util_linux.go new file mode 100644 index 0000000..40a353d --- /dev/null +++ b/music/tracked/mod/util_linux.go @@ -0,0 +1,8 @@ +// +build linux + +package mod + +// BE16ToLE16 converts a big-endian uint16 to a little-endian uint16 +func BE16ToLE16(be uint16) uint16 { + return uint16(be>>8) | (be << 8) +} diff --git a/music/tracked/mod/util_win.go b/music/tracked/mod/util_win.go new file mode 100644 index 0000000..338789a --- /dev/null +++ b/music/tracked/mod/util_win.go @@ -0,0 +1,10 @@ +// +build windows + +package mod + +import "syscall" + +// BE16ToLE16 converts a big-endian uint16 to a little-endian uint16 +func BE16ToLE16(be uint16) uint16 { + return syscall.Ntohs(be) +}