- 提升 go.mod 基线到 Go 1.20,并补齐对应测试 - 修正 Passwd / PasswdResponseSignal 语义,Ctrl+C 默认退出当前流程 - 优化 raw terminal redraw、Restore 与 StopUntil 的边界行为 - 新增 StarPipe、FrameReader/FrameWriter、ReadFullContext/WriteFullContext/CopyContext、IsTerminal/ReadPasswordContext - 收口 StarQueue / StarBuffer 语义,删除 EndWrite,统一 Close / Abort 行为 - 补齐 signal、timeout、queue、terminal、pipe、buffer 的回归测试与 race 覆盖
45 lines
766 B
Go
45 lines
766 B
Go
package stario
|
|
|
|
import "errors"
|
|
|
|
var (
|
|
ErrSignalInterrupt = errors.New("interrupt")
|
|
ErrSignalStop = errors.New("stop")
|
|
ErrSignalQuit = errors.New("quit")
|
|
)
|
|
|
|
type inputSignalError struct {
|
|
msg string
|
|
cause error
|
|
}
|
|
|
|
func (e *inputSignalError) Error() string {
|
|
return e.msg
|
|
}
|
|
|
|
func (e *inputSignalError) Unwrap() error {
|
|
return e.cause
|
|
}
|
|
|
|
func signalErrorForType(sigtype rune) error {
|
|
switch sigtype {
|
|
case 0x03:
|
|
return &inputSignalError{
|
|
msg: "SIGNAL SIGINT RECIVED",
|
|
cause: ErrSignalInterrupt,
|
|
}
|
|
case 0x1a:
|
|
return &inputSignalError{
|
|
msg: "SIGNAL SIGSTOP RECIVED",
|
|
cause: ErrSignalStop,
|
|
}
|
|
case 0x1c:
|
|
return &inputSignalError{
|
|
msg: "SIGNAL SIGQUIT RECIVED",
|
|
cause: ErrSignalQuit,
|
|
}
|
|
default:
|
|
return nil
|
|
}
|
|
}
|