diff options
Diffstat (limited to 'container/errors.go')
| -rw-r--r-- | container/errors.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/container/errors.go b/container/errors.go index e3f4b9d9..884c8a04 100644 --- a/container/errors.go +++ b/container/errors.go @@ -59,6 +59,7 @@ func messagePrefixP[V any, T interface { return zeroString, false } +// MountError wraps errors returned by syscall.Mount. type MountError struct { Source, Target, Fstype string @@ -74,6 +75,7 @@ func (e *MountError) Unwrap() error { return e.Errno } +func (e *MountError) Message() string { return "cannot " + e.Error() } func (e *MountError) Error() string { if e.Flags&syscall.MS_BIND != 0 { if e.Flags&syscall.MS_REMOUNT != 0 { @@ -90,6 +92,15 @@ func (e *MountError) Error() string { return "mount " + e.Target + ": " + e.Errno.Error() } +// optionalErrorUnwrap calls [errors.Unwrap] and returns the resulting value +// if it is not nil, or the original value if it is. +func optionalErrorUnwrap(err error) error { + if underlyingErr := errors.Unwrap(err); underlyingErr != nil { + return underlyingErr + } + return err +} + // errnoFallback returns the concrete errno from an error, or a [os.PathError] fallback. func errnoFallback(op, path string, err error) (syscall.Errno, *os.PathError) { var errno syscall.Errno |
