diff options
Diffstat (limited to 'container/check/absolute.go')
| -rw-r--r-- | container/check/absolute.go | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/container/check/absolute.go b/container/check/absolute.go index 26f0def6..d17d5e1a 100644 --- a/container/check/absolute.go +++ b/container/check/absolute.go @@ -13,15 +13,18 @@ import ( ) // AbsoluteError is returned by [NewAbs] and holds the invalid pathname. -type AbsoluteError struct{ Pathname string } +type AbsoluteError string -func (e *AbsoluteError) Error() string { return fmt.Sprintf("path %q is not absolute", e.Pathname) } -func (e *AbsoluteError) Is(target error) bool { - var ce *AbsoluteError +func (e AbsoluteError) Error() string { + return fmt.Sprintf("path %q is not absolute", string(e)) +} + +func (e AbsoluteError) Is(target error) bool { + var ce AbsoluteError if !errors.As(target, &ce) { return errors.Is(target, syscall.EINVAL) } - return *e == *ce + return e == ce } // Absolute holds a pathname checked to be absolute. @@ -59,7 +62,7 @@ func (a *Absolute) Is(v *Absolute) bool { // NewAbs checks pathname and returns a new [Absolute] if pathname is absolute. func NewAbs(pathname string) (*Absolute, error) { if !path.IsAbs(pathname) { - return nil, &AbsoluteError{pathname} + return nil, AbsoluteError(pathname) } return unsafeAbs(pathname), nil } @@ -90,7 +93,7 @@ func (a *Absolute) GobEncode() ([]byte, error) { func (a *Absolute) GobDecode(data []byte) error { pathname := string(data) if !path.IsAbs(pathname) { - return &AbsoluteError{pathname} + return AbsoluteError(pathname) } a.pathname = unique.Make(pathname) return nil @@ -108,7 +111,7 @@ func (a *Absolute) UnmarshalJSON(data []byte) error { return err } if !path.IsAbs(pathname) { - return &AbsoluteError{pathname} + return AbsoluteError(pathname) } a.pathname = unique.Make(pathname) return nil |
