bf9395e022
CI / results (push) Blocked by required conditions
CI / license-header (push) Has been skipped
CI / e2e-dry-run (push) Has been skipped
CI / e2e-live (push) Waiting to run
CI / fast-gate (push) Failing after 0s
Test PR Label Logic / test-pr-labels (push) Failing after 1s
Skill Format Check / check-format (push) Failing after 2s
CI / security (push) Failing after 5s
CI / unit-test (push) Has been skipped
CI / lint (push) Has been skipped
CI / script-test (push) Has been skipped
CI / deterministic-gate (push) Has been skipped
CI / coverage (push) Has been skipped
CI / deadcode (push) Waiting to run
41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
// Copyright (c) 2026 Lark Technologies Pte. Ltd.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package fileio
|
|
|
|
import "errors"
|
|
|
|
// ErrPathValidation indicates the path failed security validation
|
|
// (traversal, absolute, control chars, symlink escape, etc.).
|
|
var ErrPathValidation = errors.New("path validation failed")
|
|
|
|
// PathValidationError wraps a path validation error.
|
|
// errors.Is(err, ErrPathValidation) returns true.
|
|
// errors.Is(err, <original OS error>) also works via the chain.
|
|
type PathValidationError struct {
|
|
Err error // original error
|
|
}
|
|
|
|
func (e *PathValidationError) Error() string { return e.Err.Error() }
|
|
func (e *PathValidationError) Unwrap() []error {
|
|
return []error{ErrPathValidation, e.Err}
|
|
}
|
|
|
|
// MkdirError indicates parent directory creation failed.
|
|
// Use errors.As(err, &fileio.MkdirError{}) to match.
|
|
type MkdirError struct {
|
|
Err error
|
|
}
|
|
|
|
func (e *MkdirError) Error() string { return e.Err.Error() }
|
|
func (e *MkdirError) Unwrap() error { return e.Err }
|
|
|
|
// WriteError indicates file write failed.
|
|
// Use errors.As(err, &fileio.WriteError{}) to match.
|
|
type WriteError struct {
|
|
Err error
|
|
}
|
|
|
|
func (e *WriteError) Error() string { return e.Err.Error() }
|
|
func (e *WriteError) Unwrap() error { return e.Err }
|