aboutsummaryrefslogtreecommitdiff
path: root/util/errors.go
diff options
context:
space:
mode:
Diffstat (limited to 'util/errors.go')
-rw-r--r--util/errors.go15
1 files changed, 15 insertions, 0 deletions
diff --git a/util/errors.go b/util/errors.go
index aafeadd..bd63ac8 100644
--- a/util/errors.go
+++ b/util/errors.go
@@ -22,6 +22,7 @@ package util
import (
"fmt"
"log"
+ "os"
)
// InvalidInputF creates an error that should indicate either bad input from a
@@ -48,3 +49,17 @@ func NeverError(err error) {
log.Panicf("NeverError() check failed: %v", err)
}
}
+
+// UnderlyingError returns the underlying error for known os error types.
+// From: src/os/error.go
+func UnderlyingError(err error) error {
+ switch err := err.(type) {
+ case *os.PathError:
+ return err.Err
+ case *os.LinkError:
+ return err.Err
+ case *os.SyscallError:
+ return err.Err
+ }
+ return err
+}