terminal: cleanup determining width

This commit is contained in:
Michael Eischer
2025-09-07 14:26:42 +02:00
parent 0b0dd07f15
commit 43b5166de8
4 changed files with 10 additions and 8 deletions

View File

@@ -210,7 +210,7 @@ func clearLine(w int) string {
// ANSI sequences are not supported on Windows cmd shell.
if w <= 0 {
if w = terminal.StdoutTerminalWidth(); w <= 0 {
if w = terminal.StdoutWidth(); w <= 0 {
return ""
}
}

View File

@@ -71,7 +71,7 @@ func printProgress(status string, final bool) {
canUpdateStatus := terminal.StdoutCanUpdateStatus()
w := terminal.StdoutTerminalWidth()
w := terminal.StdoutWidth()
if w > 0 {
if w < 3 {
status = termstatus.Truncate(status, w)

View File

@@ -20,8 +20,12 @@ func StdoutCanUpdateStatus() bool {
return CanUpdateStatus(os.Stdout.Fd())
}
func StdoutTerminalWidth() int {
w, _, err := term.GetSize(int(os.Stdout.Fd()))
func StdoutWidth() int {
return Width(os.Stdout.Fd())
}
func Width(fd uintptr) int {
w, _, err := term.GetSize(int(fd))
if err != nil {
return 0
}

View File

@@ -10,7 +10,6 @@ import (
"strings"
"unicode"
"golang.org/x/term"
"golang.org/x/text/width"
"github.com/restic/restic/internal/terminal"
@@ -321,9 +320,8 @@ func (t *Terminal) SetStatus(lines []string) {
// only truncate interactive status output
var width int
if t.canUpdateStatus {
var err error
width, _, err = term.GetSize(int(t.fd))
if err != nil || width <= 0 {
width = terminal.Width(t.fd)
if width <= 0 {
// use 80 columns by default
width = 80
}