Kirill A. Korinsky (2024-06-07 15:34 +0100): > > afaik they're meant to be getting these from golang.org/x/sys/unix > > (where EBADMSG *is* present for all OpenBSD platforms) rather than > > go itself anyway? > > I've already tried it and discovered an issue that x/sys/unix isn't > available on windows that is expected, but syscall.EBADMSG is available on > windows. My approach to replace it in fsutil fails on CI [1]. > > As far as I know go hasn't got condition compiling that allows to inclide or > exclude some block of code inside file and the only way is making dedicated > files which is used at some platforms, that means quite a work to refactor > fsutil to move away from syscall to x/sys. > > Footnotes: > [1] > https://github.com/catap/fsutil/commit/aa976fb00b3a25d23bacb193c5dfcf13d7db7199#diff-d1445ba8bd61e8e9f66950832df5b1d76f222e7f1f38700a30b728c214da04ccL126-L129
Is the following approach feasible in fsutil? Create errors_unix.go: //go:build unix import "golang.org/x/sys/unix" const ( ebadmsg = unix.EBADMSG eexist = unix.EEXIST enotdir = unix.ENOTDIR ) Create errors_windows.go: import "syscall" const ( ebadmsg = syscall.EBADMSG // ... ) Then replace "syscall.EBADMSG" with "ebadmsg" in the other files (and similarly for the other errors).