errors.go 940 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package v4l2
  2. import (
  3. "errors"
  4. sys "syscall"
  5. )
  6. var (
  7. ErrorSystem = errors.New("system error")
  8. ErrorBadArgument = errors.New("bad argument error")
  9. ErrorTemporary = errors.New("temporary error")
  10. ErrorTimeout = errors.New("timeout error")
  11. ErrorUnsupported = errors.New("unsupported error")
  12. ErrorUnsupportedFeature = errors.New("feature unsupported error")
  13. ErrorInterrupted = errors.New("interrupted")
  14. )
  15. func parseErrorType(errno sys.Errno) error {
  16. switch errno {
  17. case sys.EBADF, sys.ENOMEM, sys.ENODEV, sys.EIO, sys.ENXIO, sys.EFAULT: // structural, terminal
  18. return ErrorSystem
  19. case sys.EINTR:
  20. return ErrorInterrupted
  21. case sys.EINVAL: // bad argument
  22. return ErrorBadArgument
  23. case sys.ENOTTY: // unsupported
  24. return ErrorUnsupported
  25. default:
  26. if errno.Timeout() {
  27. return ErrorTimeout
  28. }
  29. if errno.Temporary() {
  30. return ErrorTemporary
  31. }
  32. return errno
  33. }
  34. }