external_cmd_unix_test.go 652 B

1234567891011121314151617
  1. //go:build !windows && !plan9 && !js
  2. package eval_test
  3. import (
  4. "syscall"
  5. )
  6. func exitWaitStatus(exit uint32) syscall.WaitStatus {
  7. // There doesn't seem to be a portable way to construct a WaitStatus, but
  8. // all Unix platforms Elvish supports have 0 in the lower 8 bits for normal
  9. // exits, and put exit codes in the higher bits.
  10. //
  11. // https://cs.opensource.google/go/go/+/refs/tags/go1.19.3:src/syscall/syscall_linux.go;l=404-411;drc=946b4baaf6521d521928500b2b57429c149854e7
  12. // https://cs.opensource.google/go/go/+/master:src/syscall/syscall_bsd.go;l=89-93;drc=51297dd6df713b988b5c587e448b27d18ca1bd8a
  13. return syscall.WaitStatus(exit << 8)
  14. }