mirror of
https://github.com/containers/skopeo.git
synced 2025-09-25 12:16:17 +00:00
vendor github.com/containers/image/v5@v5.5.1
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
This commit is contained in:
13
vendor/github.com/vbauerster/mpb/v5/cwriter/writer.go
generated
vendored
13
vendor/github.com/vbauerster/mpb/v5/cwriter/writer.go
generated
vendored
@@ -7,7 +7,7 @@ import (
|
||||
"io"
|
||||
"os"
|
||||
|
||||
"golang.org/x/crypto/ssh/terminal"
|
||||
"github.com/mattn/go-isatty"
|
||||
)
|
||||
|
||||
// NotATTY not a TeleTYpewriter error.
|
||||
@@ -30,13 +30,14 @@ func New(out io.Writer) *Writer {
|
||||
w := &Writer{out: out}
|
||||
if f, ok := out.(*os.File); ok {
|
||||
w.fd = f.Fd()
|
||||
w.isTerminal = terminal.IsTerminal(int(w.fd))
|
||||
w.isTerminal = isatty.IsTerminal(w.fd)
|
||||
}
|
||||
return w
|
||||
}
|
||||
|
||||
// Flush flushes the underlying buffer.
|
||||
func (w *Writer) Flush(lineCount int) (err error) {
|
||||
// some terminals interpret clear 0 lines as clear 1
|
||||
if w.lineCount > 0 {
|
||||
w.clearLines()
|
||||
}
|
||||
@@ -63,9 +64,9 @@ func (w *Writer) ReadFrom(r io.Reader) (n int64, err error) {
|
||||
|
||||
// GetWidth returns width of underlying terminal.
|
||||
func (w *Writer) GetWidth() (int, error) {
|
||||
if w.isTerminal {
|
||||
tw, _, err := terminal.GetSize(int(w.fd))
|
||||
return tw, err
|
||||
if !w.isTerminal {
|
||||
return -1, NotATTY
|
||||
}
|
||||
return -1, NotATTY
|
||||
tw, _, err := GetSize(w.fd)
|
||||
return tw, err
|
||||
}
|
||||
|
15
vendor/github.com/vbauerster/mpb/v5/cwriter/writer_posix.go
generated
vendored
15
vendor/github.com/vbauerster/mpb/v5/cwriter/writer_posix.go
generated
vendored
@@ -2,8 +2,21 @@
|
||||
|
||||
package cwriter
|
||||
|
||||
import "fmt"
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
func (w *Writer) clearLines() {
|
||||
fmt.Fprintf(w.out, cuuAndEd, w.lineCount)
|
||||
}
|
||||
|
||||
// GetSize returns the dimensions of the given terminal.
|
||||
func GetSize(fd uintptr) (width, height int, err error) {
|
||||
ws, err := unix.IoctlGetWinsize(int(fd), unix.TIOCGWINSZ)
|
||||
if err != nil {
|
||||
return -1, -1, err
|
||||
}
|
||||
return int(ws.Col), int(ws.Row), nil
|
||||
}
|
||||
|
19
vendor/github.com/vbauerster/mpb/v5/cwriter/writer_windows.go
generated
vendored
19
vendor/github.com/vbauerster/mpb/v5/cwriter/writer_windows.go
generated
vendored
@@ -14,7 +14,6 @@ var (
|
||||
procGetConsoleScreenBufferInfo = kernel32.NewProc("GetConsoleScreenBufferInfo")
|
||||
procSetConsoleCursorPosition = kernel32.NewProc("SetConsoleCursorPosition")
|
||||
procFillConsoleOutputCharacter = kernel32.NewProc("FillConsoleOutputCharacterW")
|
||||
procFillConsoleOutputAttribute = kernel32.NewProc("FillConsoleOutputAttribute")
|
||||
)
|
||||
|
||||
type coord struct {
|
||||
@@ -41,8 +40,9 @@ func (w *Writer) clearLines() {
|
||||
if !w.isTerminal {
|
||||
fmt.Fprintf(w.out, cuuAndEd, w.lineCount)
|
||||
}
|
||||
var info consoleScreenBufferInfo
|
||||
procGetConsoleScreenBufferInfo.Call(w.fd, uintptr(unsafe.Pointer(&info)))
|
||||
|
||||
info := new(consoleScreenBufferInfo)
|
||||
procGetConsoleScreenBufferInfo.Call(w.fd, uintptr(unsafe.Pointer(info)))
|
||||
|
||||
info.cursorPosition.y -= int16(w.lineCount)
|
||||
if info.cursorPosition.y < 0 {
|
||||
@@ -51,10 +51,19 @@ func (w *Writer) clearLines() {
|
||||
procSetConsoleCursorPosition.Call(w.fd, uintptr(uint32(uint16(info.cursorPosition.y))<<16|uint32(uint16(info.cursorPosition.x))))
|
||||
|
||||
// clear the lines
|
||||
cursor := coord{
|
||||
cursor := &coord{
|
||||
x: info.window.left,
|
||||
y: info.cursorPosition.y,
|
||||
}
|
||||
count := uint32(info.size.x) * uint32(w.lineCount)
|
||||
procFillConsoleOutputCharacter.Call(w.fd, uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(new(uint32))))
|
||||
procFillConsoleOutputCharacter.Call(w.fd, uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(cursor)), uintptr(unsafe.Pointer(new(uint32))))
|
||||
}
|
||||
|
||||
// GetSize returns the visible dimensions of the given terminal.
|
||||
//
|
||||
// These dimensions don't include any scrollback buffer height.
|
||||
func GetSize(fd uintptr) (width, height int, err error) {
|
||||
info := new(consoleScreenBufferInfo)
|
||||
procGetConsoleScreenBufferInfo.Call(fd, uintptr(unsafe.Pointer(info)))
|
||||
return int(info.window.right - info.window.left), int(info.window.bottom - info.window.top), nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user