stty/error.go
Foil-hat-guy 46d854d0e9
Fix again
2025-05-08 12:43:48 +03:00

84 lines
1.6 KiB
Go

package stty
import(
"fmt"
)
type unwraperr interface {
Unwrap() error
}
type unwraperrs interface {
Unwrap() []error
}
func isUnwrapable(err error) bool {
_, ok1 := err.(unwraperr)
_, ok2 := err.(unwraperrs)
return ok1 || ok2
}
func enshureUnwrapable(err error) error {
if isUnwrapable(err) {
return fmt.Errorf(err.Error())
}
return err
}
func filterNilErrors(errs []error) (notNilErrs []error) {
for _, err := range errs {
if err != nil {
notNilErrs = append(notNilErrs, err)
}
}
return notNilErrs
}
func Join(errs ...error) (result error) {
errs = filterNilErrors(errs)
if len(errs) == 0 {
return nil
}
for index, err := range errs {
fmt.Println(isUnwrapable(err), err.Error())
err = enshureUnwrapable(err)
fmt.Println(isUnwrapable(err), err.Error())
if index == 0 {
result = err
} else {
result = fmt.Errorf("%w: %w", result, fmt.Errorf("foo"))
fmt.Println("1: ",result)
fmt.Println("2: ",err)
}
}
return result
}
func ERR_NOT_TTY() error {
return fmt.Errorf("File is not a tty")
}
func ERR_CANNOT_OPEN_FILE() error {
return fmt.Errorf("Can not open file")
}
func ERR_NO_WRITE_ACCESS() error {
return fmt.Errorf("No write access")
}
func ERR_STTY_MISSING() error {
return fmt.Errorf("Stty is missing")
}
func ERR_BAUDRATE_NOT_SUPPORTED() error {
return fmt.Errorf("Selected baudrate is not supported")
}
func ERR_SET_BAUDRATE_FAILED() error {
return fmt.Errorf("Failed to set baudrate using stty")
}
func ERR_CHECK_BAUDRATE_FAILED() error {
return fmt.Errorf("Failed to check baudrate using stty")
}