diff --git a/vendor.mod b/vendor.mod index 83dd8f1916..a4404e1119 100644 --- a/vendor.mod +++ b/vendor.mod @@ -70,7 +70,7 @@ require ( ) require ( - github.com/Azure/go-ansiterm v0.0.0-20261006220739-8c912ac31dd4 // indirect + github.com/Azure/go-ansiterm v0.0.0-20261013165250-51075c6ea6bc // indirect github.com/Microsoft/go-winio v0.6.3 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect diff --git a/vendor.sum b/vendor.sum index 282ebed198..eaeec67c81 100644 --- a/vendor.sum +++ b/vendor.sum @@ -2,8 +2,8 @@ dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= -github.com/Azure/go-ansiterm v0.0.0-20261006220739-8c912ac31dd4 h1:m2xcjRABtG288vnlV3U/PKh/HnPURxZp50RKNUwBxM8= -github.com/Azure/go-ansiterm v0.0.0-20261006220739-8c912ac31dd4/go.mod h1:MTUE7ZuZO89FAtAwozGg6AWD83pcdefnEq5gF82MB8s= +github.com/Azure/go-ansiterm v0.0.0-20261013165250-51075c6ea6bc h1:58s5YzGPNAP7+e1uemaL0ax/NPSeJOHdRpRIowd+JDk= +github.com/Azure/go-ansiterm v0.0.0-20261013165250-51075c6ea6bc/go.mod h1:DMNF6Kxv+EcuUvVuNkvC3f+BjEEmc/Fn9aU+qiD8zpU= github.com/Microsoft/go-winio v0.6.3 h1:M/52tsoyTfwaxajLnXZm7PqkbMGRH8iSWP+8fcg9MQ4= github.com/Microsoft/go-winio v0.6.3/go.mod h1:ma0QpxizD4fyyzJ1C7MIblymTD2Nxz5Mho/3CepwIZg= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= diff --git a/vendor/github.com/Azure/go-ansiterm/csi_entry_state.go b/vendor/github.com/Azure/go-ansiterm/csi_entry_state.go index 01c9519c3d..eac93a8f2b 100644 --- a/vendor/github.com/Azure/go-ansiterm/csi_entry_state.go +++ b/vendor/github.com/Azure/go-ansiterm/csi_entry_state.go @@ -1,5 +1,7 @@ package ansiterm +import "slices" + type csiEntryState struct { baseState } @@ -13,11 +15,11 @@ func (csiState csiEntryState) Handle(b byte) (s state, e error) { } switch { - case sliceContains(alphabetics, b): + case slices.Contains(alphabetics, b): return csiState.parser.ground, nil - case sliceContains(csiCollectables, b): + case slices.Contains(csiCollectables, b): return csiState.parser.csiParam, nil - case sliceContains(executors, b): + case slices.Contains(executors, b): return csiState, csiState.parser.execute() } @@ -33,9 +35,9 @@ func (csiState csiEntryState) Transition(s state) error { return csiState.parser.csiDispatch() case csiState.parser.csiParam: switch { - case sliceContains(csiParams, csiState.parser.context.currentChar): + case slices.Contains(csiParams, csiState.parser.context.currentChar): _ = csiState.parser.collectParam() - case sliceContains(intermeds, csiState.parser.context.currentChar): + case slices.Contains(intermeds, csiState.parser.context.currentChar): _ = csiState.parser.collectInter() } } diff --git a/vendor/github.com/Azure/go-ansiterm/csi_param_state.go b/vendor/github.com/Azure/go-ansiterm/csi_param_state.go index 88146e6fe5..0bd0d52c3e 100644 --- a/vendor/github.com/Azure/go-ansiterm/csi_param_state.go +++ b/vendor/github.com/Azure/go-ansiterm/csi_param_state.go @@ -1,5 +1,7 @@ package ansiterm +import "slices" + type csiParamState struct { baseState } @@ -13,11 +15,11 @@ func (csiState csiParamState) Handle(b byte) (s state, e error) { } switch { - case sliceContains(alphabetics, b): + case slices.Contains(alphabetics, b): return csiState.parser.ground, nil - case sliceContains(csiCollectables, b): + case slices.Contains(csiCollectables, b): return csiState, csiState.parser.collectParam() - case sliceContains(executors, b): + case slices.Contains(executors, b): return csiState, csiState.parser.execute() } diff --git a/vendor/github.com/Azure/go-ansiterm/escape_intermediate_state.go b/vendor/github.com/Azure/go-ansiterm/escape_intermediate_state.go index 88429690f9..f34febf1cb 100644 --- a/vendor/github.com/Azure/go-ansiterm/escape_intermediate_state.go +++ b/vendor/github.com/Azure/go-ansiterm/escape_intermediate_state.go @@ -1,5 +1,7 @@ package ansiterm +import "slices" + type escapeIntermediateState struct { baseState } @@ -12,11 +14,11 @@ func (escState escapeIntermediateState) Handle(b byte) (s state, e error) { } switch { - case sliceContains(intermeds, b): + case slices.Contains(intermeds, b): return escState, escState.parser.collectInter() - case sliceContains(executors, b): + case slices.Contains(executors, b): return escState, escState.parser.execute() - case sliceContains(escapeIntermediateToGroundBytes, b): + case slices.Contains(escapeIntermediateToGroundBytes, b): return escState.parser.ground, nil } diff --git a/vendor/github.com/Azure/go-ansiterm/escape_state.go b/vendor/github.com/Azure/go-ansiterm/escape_state.go index 854e3812a9..3609993466 100644 --- a/vendor/github.com/Azure/go-ansiterm/escape_state.go +++ b/vendor/github.com/Azure/go-ansiterm/escape_state.go @@ -1,5 +1,7 @@ package ansiterm +import "slices" + type escapeState struct { baseState } @@ -16,11 +18,11 @@ func (escState escapeState) Handle(b byte) (s state, e error) { return escState.parser.csiEntry, nil case b == ANSI_OSC_STRING_ENTRY: return escState.parser.oscString, nil - case sliceContains(executors, b): + case slices.Contains(executors, b): return escState, escState.parser.execute() - case sliceContains(escapeToGroundBytes, b): + case slices.Contains(escapeToGroundBytes, b): return escState.parser.ground, nil - case sliceContains(intermeds, b): + case slices.Contains(intermeds, b): return escState.parser.escapeIntermediate, nil } diff --git a/vendor/github.com/Azure/go-ansiterm/ground_state.go b/vendor/github.com/Azure/go-ansiterm/ground_state.go index 52451e9469..a6197ec090 100644 --- a/vendor/github.com/Azure/go-ansiterm/ground_state.go +++ b/vendor/github.com/Azure/go-ansiterm/ground_state.go @@ -1,5 +1,7 @@ package ansiterm +import "slices" + type groundState struct { baseState } @@ -13,10 +15,10 @@ func (gs groundState) Handle(b byte) (s state, e error) { } switch { - case sliceContains(printables, b): + case slices.Contains(printables, b): return gs, gs.parser.print() - case sliceContains(executors, b): + case slices.Contains(executors, b): return gs, gs.parser.execute() } diff --git a/vendor/github.com/Azure/go-ansiterm/parser.go b/vendor/github.com/Azure/go-ansiterm/parser.go index 2e8ef80fb7..e7736726ac 100644 --- a/vendor/github.com/Azure/go-ansiterm/parser.go +++ b/vendor/github.com/Azure/go-ansiterm/parser.go @@ -20,12 +20,12 @@ type AnsiParser struct { oscString state stateMap []state - logf func(string, ...interface{}) + logf func(string, ...any) } type Option func(*AnsiParser) -func WithLogf(f func(string, ...interface{})) Option { +func WithLogf(f func(string, ...any)) Option { return func(ap *AnsiParser) { ap.logf = f } @@ -45,7 +45,7 @@ func CreateParser(initialState string, evtHandler AnsiEventHandler, opts ...Opti logger := log.New(logFile, "", log.LstdFlags) if ap.logf != nil { l := ap.logf - ap.logf = func(s string, v ...interface{}) { + ap.logf = func(s string, v ...any) { l(s, v...) logger.Printf(s, v...) } @@ -55,7 +55,7 @@ func CreateParser(initialState string, evtHandler AnsiEventHandler, opts ...Opti } if ap.logf == nil { - ap.logf = func(string, ...interface{}) {} + ap.logf = func(string, ...any) {} } ap.csiEntry = csiEntryState{baseState{name: "CsiEntry", parser: ap}} diff --git a/vendor/github.com/Azure/go-ansiterm/parser_action_helpers.go b/vendor/github.com/Azure/go-ansiterm/parser_action_helpers.go index dc001532a6..166bbc2ba9 100644 --- a/vendor/github.com/Azure/go-ansiterm/parser_action_helpers.go +++ b/vendor/github.com/Azure/go-ansiterm/parser_action_helpers.go @@ -49,7 +49,7 @@ func getInts(params []string, minCount int, dflt int) []int { if len(ints) < minCount { remaining := minCount - len(ints) - for i := 0; i < remaining; i++ { + for range remaining { ints = append(ints, dflt) } } diff --git a/vendor/github.com/Azure/go-ansiterm/states.go b/vendor/github.com/Azure/go-ansiterm/states.go index cf72692261..9ce94ce591 100644 --- a/vendor/github.com/Azure/go-ansiterm/states.go +++ b/vendor/github.com/Azure/go-ansiterm/states.go @@ -1,5 +1,7 @@ package ansiterm +import "slices" + type state interface { Enter() error Exit() error @@ -32,7 +34,7 @@ func (base baseState) Handle(b byte) (s state, e error) { return base.parser.escape, nil case b == OSC_STRING: return base.parser.oscString, nil - case sliceContains(toGroundBytes, b): + case slices.Contains(toGroundBytes, b): return base.parser.ground, nil } @@ -52,7 +54,7 @@ func (base baseState) Transition(s state) error { execBytes = append(execBytes, 0x99) execBytes = append(execBytes, 0x9A) - if sliceContains(execBytes, base.parser.context.currentChar) { + if slices.Contains(execBytes, base.parser.context.currentChar) { return base.parser.execute() } } diff --git a/vendor/github.com/Azure/go-ansiterm/utilities.go b/vendor/github.com/Azure/go-ansiterm/utilities.go deleted file mode 100644 index d94dd3a347..0000000000 --- a/vendor/github.com/Azure/go-ansiterm/utilities.go +++ /dev/null @@ -1,11 +0,0 @@ -package ansiterm - -func sliceContains(bytes []byte, b byte) bool { - for _, v := range bytes { - if v == b { - return true - } - } - - return false -} diff --git a/vendor/github.com/Azure/go-ansiterm/winterm/ansi.go b/vendor/github.com/Azure/go-ansiterm/winterm/ansi.go index c6cc027a78..d0000716cb 100644 --- a/vendor/github.com/Azure/go-ansiterm/winterm/ansi.go +++ b/vendor/github.com/Azure/go-ansiterm/winterm/ansi.go @@ -1,4 +1,4 @@ -// +build windows +//go:build windows package winterm diff --git a/vendor/github.com/Azure/go-ansiterm/winterm/api.go b/vendor/github.com/Azure/go-ansiterm/winterm/api.go index 6055e33b91..bc33cb634b 100644 --- a/vendor/github.com/Azure/go-ansiterm/winterm/api.go +++ b/vendor/github.com/Azure/go-ansiterm/winterm/api.go @@ -1,14 +1,17 @@ -// +build windows +//go:build windows package winterm import ( "fmt" + "runtime" "syscall" "unsafe" + + "golang.org/x/sys/windows" ) -//=========================================================================================================== +// =========================================================================================================== // IMPORTANT NOTE: // // The methods below make extensive use of the "unsafe" package to obtain the required pointers. @@ -26,51 +29,50 @@ import ( // -- The value is not referenced by the method after passing the pointer to Windows // // See http://golang.org/doc/go1.3. -//=========================================================================================================== +// =========================================================================================================== var ( - kernel32DLL = syscall.NewLazyDLL("kernel32.dll") + kernel32DLL = windows.NewLazyDLL("kernel32.dll") getConsoleCursorInfoProc = kernel32DLL.NewProc("GetConsoleCursorInfo") setConsoleCursorInfoProc = kernel32DLL.NewProc("SetConsoleCursorInfo") - setConsoleCursorPositionProc = kernel32DLL.NewProc("SetConsoleCursorPosition") - setConsoleModeProc = kernel32DLL.NewProc("SetConsoleMode") - getConsoleScreenBufferInfoProc = kernel32DLL.NewProc("GetConsoleScreenBufferInfo") setConsoleScreenBufferSizeProc = kernel32DLL.NewProc("SetConsoleScreenBufferSize") scrollConsoleScreenBufferProc = kernel32DLL.NewProc("ScrollConsoleScreenBufferA") setConsoleTextAttributeProc = kernel32DLL.NewProc("SetConsoleTextAttribute") setConsoleWindowInfoProc = kernel32DLL.NewProc("SetConsoleWindowInfo") writeConsoleOutputProc = kernel32DLL.NewProc("WriteConsoleOutputW") readConsoleInputProc = kernel32DLL.NewProc("ReadConsoleInputW") - waitForSingleObjectProc = kernel32DLL.NewProc("WaitForSingleObject") ) -// Windows Console constants +// Console modes +// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms686033(v=vs.85).aspx. const ( - // Console modes - // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms686033(v=vs.85).aspx. - ENABLE_PROCESSED_INPUT = 0x0001 - ENABLE_LINE_INPUT = 0x0002 - ENABLE_ECHO_INPUT = 0x0004 - ENABLE_WINDOW_INPUT = 0x0008 - ENABLE_MOUSE_INPUT = 0x0010 - ENABLE_INSERT_MODE = 0x0020 - ENABLE_QUICK_EDIT_MODE = 0x0040 - ENABLE_EXTENDED_FLAGS = 0x0080 - ENABLE_AUTO_POSITION = 0x0100 - ENABLE_VIRTUAL_TERMINAL_INPUT = 0x0200 + ENABLE_PROCESSED_INPUT = windows.ENABLE_PROCESSED_INPUT + ENABLE_LINE_INPUT = windows.ENABLE_LINE_INPUT + ENABLE_ECHO_INPUT = windows.ENABLE_ECHO_INPUT + ENABLE_WINDOW_INPUT = windows.ENABLE_WINDOW_INPUT + ENABLE_MOUSE_INPUT = windows.ENABLE_MOUSE_INPUT + ENABLE_INSERT_MODE = windows.ENABLE_INSERT_MODE + ENABLE_QUICK_EDIT_MODE = windows.ENABLE_QUICK_EDIT_MODE + ENABLE_EXTENDED_FLAGS = windows.ENABLE_EXTENDED_FLAGS + ENABLE_AUTO_POSITION = windows.ENABLE_AUTO_POSITION + ENABLE_VIRTUAL_TERMINAL_INPUT = windows.ENABLE_VIRTUAL_TERMINAL_INPUT - ENABLE_PROCESSED_OUTPUT = 0x0001 - ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002 - ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004 - DISABLE_NEWLINE_AUTO_RETURN = 0x0008 - ENABLE_LVB_GRID_WORLDWIDE = 0x0010 + ENABLE_PROCESSED_OUTPUT = windows.ENABLE_PROCESSED_OUTPUT + ENABLE_WRAP_AT_EOL_OUTPUT = windows.ENABLE_WRAP_AT_EOL_OUTPUT + ENABLE_VIRTUAL_TERMINAL_PROCESSING = windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING + DISABLE_NEWLINE_AUTO_RETURN = windows.DISABLE_NEWLINE_AUTO_RETURN + ENABLE_LVB_GRID_WORLDWIDE = windows.ENABLE_LVB_GRID_WORLDWIDE +) - // Character attributes - // Note: - // -- The attributes are combined to produce various colors (e.g., Blue + Green will create Cyan). - // Clearing all foreground or background colors results in black; setting all creates white. - // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms682088(v=vs.85).aspx#_win32_character_attributes. +// Character attributes +// +// Foreground and background attributes can be combined to produce colors. +// Clearing all foreground or background color bits produces black; setting +// all color bits produces white. +// +// See https://learn.microsoft.com/windows/console/char-info-str. +const ( FOREGROUND_BLUE uint16 = 0x0001 FOREGROUND_GREEN uint16 = 0x0002 FOREGROUND_RED uint16 = 0x0004 @@ -86,23 +88,29 @@ const ( COMMON_LVB_MASK uint16 = 0xFF00 COMMON_LVB_REVERSE_VIDEO uint16 = 0x4000 COMMON_LVB_UNDERSCORE uint16 = 0x8000 +) - // Input event types - // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms683499(v=vs.85).aspx. - KEY_EVENT = 0x0001 - MOUSE_EVENT = 0x0002 - WINDOW_BUFFER_SIZE_EVENT = 0x0004 - MENU_EVENT = 0x0008 - FOCUS_EVENT = 0x0010 +// Input event types +// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms683499(v=vs.85).aspx. +const ( + KEY_EVENT = windows.KEY_EVENT + MOUSE_EVENT = windows.MOUSE_EVENT + WINDOW_BUFFER_SIZE_EVENT = windows.WINDOW_BUFFER_SIZE_EVENT + MENU_EVENT = windows.MENU_EVENT + FOCUS_EVENT = windows.FOCUS_EVENT +) - // WaitForSingleObject return codes - WAIT_ABANDONED = 0x00000080 - WAIT_FAILED = 0xFFFFFFFF - WAIT_SIGNALED = 0x0000000 - WAIT_TIMEOUT = 0x00000102 +// WaitForSingleObject return codes. +const ( + WAIT_ABANDONED = windows.WAIT_ABANDONED + WAIT_FAILED = windows.WAIT_FAILED + WAIT_SIGNALED = windows.WAIT_OBJECT_0 + WAIT_TIMEOUT = 0x00000102 // Keep as untyped int for backward compat; windows.WAIT_TIMEOUT is typed as syscall.Errno. +) - // WaitForSingleObject wait duration - WAIT_INFINITE = 0xFFFFFFFF +// WaitForSingleObject wait durations. +const ( + WAIT_INFINITE = windows.INFINITE WAIT_ONE_SECOND = 1000 WAIT_HALF_SECOND = 500 WAIT_QUARTER_SECOND = 250 @@ -122,6 +130,8 @@ type ( Visible int32 } + // CONSOLE_SCREEN_BUFFER_INFO is identical to [windows.ConsoleScreenBufferInfo] + // but implements [fmt.Stringer]. CONSOLE_SCREEN_BUFFER_INFO struct { Size COORD CursorPosition COORD @@ -130,17 +140,11 @@ type ( MaximumWindowSize COORD } - COORD struct { - X int16 - Y int16 - } + // COORD is identical to [windows.Coord] but implements [fmt.Stringer]. + COORD windows.Coord - SMALL_RECT struct { - Left int16 - Top int16 - Right int16 - Bottom int16 - } + // SMALL_RECT is identical to [windows.SmallRect] but implements [fmt.Stringer]. + SMALL_RECT windows.SmallRect // INPUT_RECORD is a C/C++ union of which KEY_EVENT_RECORD is one case, it is also the largest // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms683499(v=vs.85).aspx. @@ -189,43 +193,45 @@ func SetConsoleCursorInfo(handle uintptr, cursorInfo *CONSOLE_CURSOR_INFO) error // SetConsoleCursorPosition location of the console cursor. // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms686025(v=vs.85).aspx. func SetConsoleCursorPosition(handle uintptr, coord COORD) error { - r1, r2, err := setConsoleCursorPositionProc.Call(handle, coordToPointer(coord)) - use(coord) - return checkError(r1, r2, err) + return windows.SetConsoleCursorPosition(windows.Handle(handle), windows.Coord(coord)) } -// GetConsoleMode gets the console mode for given file descriptor +// GetConsoleMode gets the console mode for the given handle. // See http://msdn.microsoft.com/en-us/library/windows/desktop/ms683167(v=vs.85).aspx. func GetConsoleMode(handle uintptr) (mode uint32, err error) { - err = syscall.GetConsoleMode(syscall.Handle(handle), &mode) + err = windows.GetConsoleMode(windows.Handle(handle), &mode) return mode, err } -// SetConsoleMode sets the console mode for given file descriptor +// SetConsoleMode sets the console mode for the given handle. // See http://msdn.microsoft.com/en-us/library/windows/desktop/ms686033(v=vs.85).aspx. func SetConsoleMode(handle uintptr, mode uint32) error { - r1, r2, err := setConsoleModeProc.Call(handle, uintptr(mode), 0) - use(mode) - return checkError(r1, r2, err) + return windows.SetConsoleMode(windows.Handle(handle), mode) } // GetConsoleScreenBufferInfo retrieves information about the specified console screen buffer. // See http://msdn.microsoft.com/en-us/library/windows/desktop/ms683171(v=vs.85).aspx. func GetConsoleScreenBufferInfo(handle uintptr) (*CONSOLE_SCREEN_BUFFER_INFO, error) { - info := CONSOLE_SCREEN_BUFFER_INFO{} - err := checkError(getConsoleScreenBufferInfoProc.Call(handle, uintptr(unsafe.Pointer(&info)), 0)) - if err != nil { + var info windows.ConsoleScreenBufferInfo + if err := windows.GetConsoleScreenBufferInfo(windows.Handle(handle), &info); err != nil { return nil, err } - return &info, nil + + return &CONSOLE_SCREEN_BUFFER_INFO{ + Size: COORD(info.Size), + CursorPosition: COORD(info.CursorPosition), + Attributes: info.Attributes, + Window: SMALL_RECT(info.Window), + MaximumWindowSize: COORD(info.MaximumWindowSize), + }, nil } func ScrollConsoleScreenBuffer(handle uintptr, scrollRect SMALL_RECT, clipRect SMALL_RECT, destOrigin COORD, char CHAR_INFO) error { r1, r2, err := scrollConsoleScreenBufferProc.Call(handle, uintptr(unsafe.Pointer(&scrollRect)), uintptr(unsafe.Pointer(&clipRect)), coordToPointer(destOrigin), uintptr(unsafe.Pointer(&char))) - use(scrollRect) - use(clipRect) - use(destOrigin) - use(char) + runtime.KeepAlive(scrollRect) + runtime.KeepAlive(clipRect) + runtime.KeepAlive(destOrigin) + runtime.KeepAlive(char) return checkError(r1, r2, err) } @@ -233,7 +239,7 @@ func ScrollConsoleScreenBuffer(handle uintptr, scrollRect SMALL_RECT, clipRect S // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms686044(v=vs.85).aspx. func SetConsoleScreenBufferSize(handle uintptr, coord COORD) error { r1, r2, err := setConsoleScreenBufferSizeProc.Call(handle, coordToPointer(coord)) - use(coord) + runtime.KeepAlive(coord) return checkError(r1, r2, err) } @@ -242,7 +248,7 @@ func SetConsoleScreenBufferSize(handle uintptr, coord COORD) error { // See http://msdn.microsoft.com/en-us/library/windows/desktop/ms686047(v=vs.85).aspx. func SetConsoleTextAttribute(handle uintptr, attribute uint16) error { r1, r2, err := setConsoleTextAttributeProc.Call(handle, uintptr(attribute), 0) - use(attribute) + runtime.KeepAlive(attribute) return checkError(r1, r2, err) } @@ -251,8 +257,8 @@ func SetConsoleTextAttribute(handle uintptr, attribute uint16) error { // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms686125(v=vs.85).aspx. func SetConsoleWindowInfo(handle uintptr, isAbsolute bool, rect SMALL_RECT) error { r1, r2, err := setConsoleWindowInfoProc.Call(handle, uintptr(boolToBOOL(isAbsolute)), uintptr(unsafe.Pointer(&rect))) - use(isAbsolute) - use(rect) + runtime.KeepAlive(isAbsolute) + runtime.KeepAlive(rect) return checkError(r1, r2, err) } @@ -260,9 +266,9 @@ func SetConsoleWindowInfo(handle uintptr, isAbsolute bool, rect SMALL_RECT) erro // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms687404(v=vs.85).aspx. func WriteConsoleOutput(handle uintptr, buffer []CHAR_INFO, bufferSize COORD, bufferCoord COORD, writeRegion *SMALL_RECT) error { r1, r2, err := writeConsoleOutputProc.Call(handle, uintptr(unsafe.Pointer(&buffer[0])), coordToPointer(bufferSize), coordToPointer(bufferCoord), uintptr(unsafe.Pointer(writeRegion))) - use(buffer) - use(bufferSize) - use(bufferCoord) + runtime.KeepAlive(buffer) + runtime.KeepAlive(bufferSize) + runtime.KeepAlive(bufferCoord) return checkError(r1, r2, err) } @@ -270,7 +276,7 @@ func WriteConsoleOutput(handle uintptr, buffer []CHAR_INFO, bufferSize COORD, bu // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms684961(v=vs.85).aspx. func ReadConsoleInput(handle uintptr, buffer []INPUT_RECORD, count *uint32) error { r1, r2, err := readConsoleInputProc.Call(handle, uintptr(unsafe.Pointer(&buffer[0])), uintptr(len(buffer)), uintptr(unsafe.Pointer(count))) - use(buffer) + runtime.KeepAlive(buffer) return checkError(r1, r2, err) } @@ -278,15 +284,19 @@ func ReadConsoleInput(handle uintptr, buffer []INPUT_RECORD, count *uint32) erro // It returns true if the handle was signaled; false otherwise. // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms687032(v=vs.85).aspx. func WaitForSingleObject(handle uintptr, msWait uint32) (bool, error) { - r1, _, err := waitForSingleObjectProc.Call(handle, uintptr(uint32(msWait))) - switch r1 { - case WAIT_ABANDONED, WAIT_TIMEOUT: + event, err := windows.WaitForSingleObject(windows.Handle(handle), msWait) + if err != nil { + return false, err + } + + switch event { + case windows.WAIT_ABANDONED, uint32(windows.WAIT_TIMEOUT): return false, nil - case WAIT_SIGNALED: + case windows.WAIT_OBJECT_0: return true, nil + default: + return false, nil } - use(msWait) - return false, err } // String helpers @@ -321,7 +331,3 @@ func coordToPointer(c COORD) uintptr { // Note: This code assumes the two SHORTs are correctly laid out; the "cast" to uint32 is just to get a pointer to pass. return uintptr(*((*uint32)(unsafe.Pointer(&c)))) } - -// use is a no-op, but the compiler cannot see that it is. -// Calling use(p) ensures that p is kept live until that point. -func use(p interface{}) {} diff --git a/vendor/github.com/Azure/go-ansiterm/winterm/attr_translation.go b/vendor/github.com/Azure/go-ansiterm/winterm/attr_translation.go index cbec8f728f..76ea11fa00 100644 --- a/vendor/github.com/Azure/go-ansiterm/winterm/attr_translation.go +++ b/vendor/github.com/Azure/go-ansiterm/winterm/attr_translation.go @@ -1,4 +1,4 @@ -// +build windows +//go:build windows package winterm diff --git a/vendor/github.com/Azure/go-ansiterm/winterm/cursor_helpers.go b/vendor/github.com/Azure/go-ansiterm/winterm/cursor_helpers.go index 3ee06ea728..82818c9c06 100644 --- a/vendor/github.com/Azure/go-ansiterm/winterm/cursor_helpers.go +++ b/vendor/github.com/Azure/go-ansiterm/winterm/cursor_helpers.go @@ -1,10 +1,12 @@ -// +build windows +//go:build windows package winterm const ( horizontal = iota vertical + line + column ) func (h *windowsAnsiEventHandler) getCursorWindow(info *CONSOLE_SCREEN_BUFFER_INFO) SMALL_RECT { @@ -58,44 +60,20 @@ func (h *windowsAnsiEventHandler) moveCursor(moveMode int, param int) error { position.X += int16(param) case vertical: position.Y += int16(param) + case line: + position.X = 0 + position.Y += int16(param) + case column: + position.X = int16(param) - 1 } - if err = h.setCursorPosition(position, h.getCursorWindow(info)); err != nil { - return err - } - - return nil + return h.setCursorPosition(position, h.getCursorWindow(info)) } func (h *windowsAnsiEventHandler) moveCursorLine(param int) error { - info, err := GetConsoleScreenBufferInfo(h.fd) - if err != nil { - return err - } - - position := info.CursorPosition - position.X = 0 - position.Y += int16(param) - - if err = h.setCursorPosition(position, h.getCursorWindow(info)); err != nil { - return err - } - - return nil + return h.moveCursor(line, param) } func (h *windowsAnsiEventHandler) moveCursorColumn(param int) error { - info, err := GetConsoleScreenBufferInfo(h.fd) - if err != nil { - return err - } - - position := info.CursorPosition - position.X = int16(param) - 1 - - if err = h.setCursorPosition(position, h.getCursorWindow(info)); err != nil { - return err - } - - return nil + return h.moveCursor(column, param) } diff --git a/vendor/github.com/Azure/go-ansiterm/winterm/erase_helpers.go b/vendor/github.com/Azure/go-ansiterm/winterm/erase_helpers.go index 244b5fa25e..0951085bdf 100644 --- a/vendor/github.com/Azure/go-ansiterm/winterm/erase_helpers.go +++ b/vendor/github.com/Azure/go-ansiterm/winterm/erase_helpers.go @@ -1,4 +1,4 @@ -// +build windows +//go:build windows package winterm @@ -50,12 +50,7 @@ func (h *windowsAnsiEventHandler) clearRange(attributes uint16, fromCoord COORD, coordStart.X, coordStart.Y = xCurrent, yCurrent coordEnd.X, coordEnd.Y = xEnd, yEnd - err = h.clearRect(attributes, coordStart, coordEnd) - if err != nil { - return err - } - - return nil + return h.clearRect(attributes, coordStart, coordEnd) } func (h *windowsAnsiEventHandler) clearRect(attributes uint16, fromCoord COORD, toCoord COORD) error { @@ -75,10 +70,5 @@ func (h *windowsAnsiEventHandler) clearRect(attributes uint16, fromCoord COORD, buffer[i] = char } - err := WriteConsoleOutput(h.fd, buffer, COORD{X: width, Y: height}, COORD{X: 0, Y: 0}, ®ion) - if err != nil { - return err - } - - return nil + return WriteConsoleOutput(h.fd, buffer, COORD{X: width, Y: height}, COORD{X: 0, Y: 0}, ®ion) } diff --git a/vendor/github.com/Azure/go-ansiterm/winterm/scroll_helper.go b/vendor/github.com/Azure/go-ansiterm/winterm/scroll_helper.go index 2d27fa1d02..ad421ea10b 100644 --- a/vendor/github.com/Azure/go-ansiterm/winterm/scroll_helper.go +++ b/vendor/github.com/Azure/go-ansiterm/winterm/scroll_helper.go @@ -1,4 +1,4 @@ -// +build windows +//go:build windows package winterm @@ -39,9 +39,8 @@ func (h *windowsAnsiEventHandler) deleteLines(param int) error { if start >= sr.top && start <= sr.bottom { sr.top = start return h.scroll(param, sr, info) - } else { - return nil } + return nil } func (h *windowsAnsiEventHandler) insertLines(param int) error { @@ -72,10 +71,7 @@ func (h *windowsAnsiEventHandler) scroll(param int, sr scrollRegion, info *CONSO Attributes: h.attributes, } - if err := ScrollConsoleScreenBuffer(h.fd, scrollRect, scrollRect, destOrigin, char); err != nil { - return err - } - return nil + return ScrollConsoleScreenBuffer(h.fd, scrollRect, scrollRect, destOrigin, char) } func (h *windowsAnsiEventHandler) deleteCharacters(param int) error { @@ -111,8 +107,5 @@ func (h *windowsAnsiEventHandler) scrollLine(columns int, position COORD, info * Attributes: h.attributes, } - if err := ScrollConsoleScreenBuffer(h.fd, scrollRect, scrollRect, destOrigin, char); err != nil { - return err - } - return nil + return ScrollConsoleScreenBuffer(h.fd, scrollRect, scrollRect, destOrigin, char) } diff --git a/vendor/github.com/Azure/go-ansiterm/winterm/utilities.go b/vendor/github.com/Azure/go-ansiterm/winterm/utilities.go index afa7635d77..3ee15af2c7 100644 --- a/vendor/github.com/Azure/go-ansiterm/winterm/utilities.go +++ b/vendor/github.com/Azure/go-ansiterm/winterm/utilities.go @@ -1,4 +1,4 @@ -// +build windows +//go:build windows package winterm diff --git a/vendor/github.com/Azure/go-ansiterm/winterm/win_event_handler.go b/vendor/github.com/Azure/go-ansiterm/winterm/win_event_handler.go index 2d40fb75ad..9b872f0b1c 100644 --- a/vendor/github.com/Azure/go-ansiterm/winterm/win_event_handler.go +++ b/vendor/github.com/Azure/go-ansiterm/winterm/win_event_handler.go @@ -1,4 +1,4 @@ -// +build windows +//go:build windows package winterm @@ -169,9 +169,7 @@ func (h *windowsAnsiEventHandler) executeLF() error { return err } h.logf("Resetting cursor position for LF without CR") - if err := SetConsoleCursorPosition(h.fd, pos); err != nil { - return err - } + return SetConsoleCursorPosition(h.fd, pos) } } return nil @@ -373,7 +371,7 @@ func (h *windowsAnsiEventHandler) CUP(row int, col int) error { } window := h.getCursorWindow(info) - position := COORD{window.Left + int16(col) - 1, window.Top + int16(row) - 1} + position := COORD{X: window.Left + int16(col) - 1, Y: window.Top + int16(row) - 1} return h.setCursorPosition(position, window) } @@ -423,7 +421,7 @@ func (h *windowsAnsiEventHandler) DECCOLM(use132 bool) error { targetWidth = 132 } if info.Size.X < targetWidth { - if err := SetConsoleScreenBufferSize(h.fd, COORD{targetWidth, info.Size.Y}); err != nil { + if err := SetConsoleScreenBufferSize(h.fd, COORD{X: targetWidth, Y: info.Size.Y}); err != nil { h.logf("set buffer failed: %v", err) return err } @@ -436,12 +434,12 @@ func (h *windowsAnsiEventHandler) DECCOLM(use132 bool) error { return err } if info.Size.X > targetWidth { - if err := SetConsoleScreenBufferSize(h.fd, COORD{targetWidth, info.Size.Y}); err != nil { + if err := SetConsoleScreenBufferSize(h.fd, COORD{X: targetWidth, Y: info.Size.Y}); err != nil { h.logf("set buffer failed: %v", err) return err } } - return SetConsoleCursorPosition(h.fd, COORD{0, 0}) + return SetConsoleCursorPosition(h.fd, COORD{X: 0, Y: 0}) } func (h *windowsAnsiEventHandler) ED(param int) error { @@ -468,15 +466,15 @@ func (h *windowsAnsiEventHandler) ED(param int) error { switch param { case 0: start = info.CursorPosition - end = COORD{info.Size.X - 1, info.Size.Y - 1} + end = COORD{X: info.Size.X - 1, Y: info.Size.Y - 1} case 1: - start = COORD{0, 0} + start = COORD{X: 0, Y: 0} end = info.CursorPosition case 2: - start = COORD{0, 0} - end = COORD{info.Size.X - 1, info.Size.Y - 1} + start = COORD{X: 0, Y: 0} + end = COORD{X: info.Size.X - 1, Y: info.Size.Y - 1} } err = h.clearRange(h.attributes, start, end) @@ -495,9 +493,7 @@ func (h *windowsAnsiEventHandler) ED(param int) error { if err := SetConsoleCursorPosition(h.fd, pos); err != nil { return err } - if err := SetConsoleWindowInfo(h.fd, true, window); err != nil { - return err - } + return SetConsoleWindowInfo(h.fd, true, window) } return nil @@ -525,23 +521,18 @@ func (h *windowsAnsiEventHandler) EL(param int) error { switch param { case 0: start = info.CursorPosition - end = COORD{info.Size.X, info.CursorPosition.Y} + end = COORD{X: info.Size.X, Y: info.CursorPosition.Y} case 1: - start = COORD{0, info.CursorPosition.Y} + start = COORD{X: 0, Y: info.CursorPosition.Y} end = info.CursorPosition case 2: - start = COORD{0, info.CursorPosition.Y} - end = COORD{info.Size.X, info.CursorPosition.Y} + start = COORD{X: 0, Y: info.CursorPosition.Y} + end = COORD{X: info.Size.X, Y: info.CursorPosition.Y} } - err = h.clearRange(h.attributes, start, end) - if err != nil { - return err - } - - return nil + return h.clearRange(h.attributes, start, end) } func (h *windowsAnsiEventHandler) IL(param int) error { @@ -611,12 +602,7 @@ func (h *windowsAnsiEventHandler) SGR(params []int) error { if h.inverted { attributes = invertAttributes(attributes) } - err := SetConsoleTextAttribute(h.fd, attributes) - if err != nil { - return err - } - - return nil + return SetConsoleTextAttribute(h.fd, attributes) } func (h *windowsAnsiEventHandler) SU(param int) error { @@ -702,8 +688,8 @@ func (h *windowsAnsiEventHandler) Flush() error { } charInfo := []CHAR_INFO{{UnicodeChar: uint16(h.marginByte), Attributes: info.Attributes}} - size := COORD{1, 1} - position := COORD{0, 0} + size := COORD{X: 1, Y: 1} + position := COORD{X: 0, Y: 0} region := SMALL_RECT{Left: info.CursorPosition.X, Top: info.CursorPosition.Y, Right: info.CursorPosition.X, Bottom: info.CursorPosition.Y} if err := WriteConsoleOutput(h.fd, charInfo, size, position, ®ion); err != nil { return err diff --git a/vendor/modules.txt b/vendor/modules.txt index e5fe8d7163..bdafb2dea6 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,8 +1,8 @@ # dario.cat/mergo v1.0.2 ## explicit; go 1.13 dario.cat/mergo -# github.com/Azure/go-ansiterm v0.0.0-20261006220739-8c912ac31dd4 -## explicit; go 1.17 +# github.com/Azure/go-ansiterm v0.0.0-20261013165250-51075c6ea6bc +## explicit; go 1.25.0 github.com/Azure/go-ansiterm github.com/Azure/go-ansiterm/winterm # github.com/Microsoft/go-winio v0.6.3