@@ -25,6 +25,7 @@ import (
2525 "github.com/wavetermdev/waveterm/pkg/panichandler"
2626 "github.com/wavetermdev/waveterm/pkg/remote/conncontroller"
2727 "github.com/wavetermdev/waveterm/pkg/util/pamparse"
28+ "github.com/wavetermdev/waveterm/pkg/util/ptyutil"
2829 "github.com/wavetermdev/waveterm/pkg/util/shellutil"
2930 "github.com/wavetermdev/waveterm/pkg/wavebase"
3031 "github.com/wavetermdev/waveterm/pkg/waveobj"
@@ -54,27 +55,6 @@ type ShellProc struct {
5455 WaitErr error // WaitErr is synchronized by DoneCh (written before DoneCh is closed) and CloseOnce
5556}
5657
57- const maxUint16 = int (^ uint16 (0 ))
58-
59- func toWinsizeDimension (v int ) uint16 {
60- if v <= 0 {
61- return 0
62- }
63- if v > maxUint16 {
64- return uint16 (maxUint16 )
65- }
66- return uint16 (v )
67- }
68-
69- func winsizeFromTermSize (termSize waveobj.TermSize ) * pty.Winsize {
70- return & pty.Winsize {
71- Rows : toWinsizeDimension (termSize .Rows ),
72- Cols : toWinsizeDimension (termSize .Cols ),
73- X : toWinsizeDimension (termSize .XPixel ),
74- Y : toWinsizeDimension (termSize .YPixel ),
75- }
76- }
77-
7858func (sp * ShellProc ) Close () {
7959 sp .Cmd .KillGraceful (DefaultGracefulKillWait )
8060 go func () {
@@ -186,7 +166,7 @@ func StartWslShellProcNoWsh(ctx context.Context, termSize waveobj.TermSize, cmdS
186166 if termSize .Rows <= 0 || termSize .Cols <= 0 {
187167 return nil , fmt .Errorf ("invalid term size: %v" , termSize )
188168 }
189- cmdPty , err := pty .StartWithSize (ecmd , winsizeFromTermSize (termSize ))
169+ cmdPty , err := pty .StartWithSize (ecmd , ptyutil . WinsizeFromTermSize (termSize ))
190170 if err != nil {
191171 return nil , err
192172 }
@@ -304,7 +284,7 @@ func StartWslShellProc(ctx context.Context, termSize waveobj.TermSize, cmdStr st
304284 return nil , fmt .Errorf ("invalid term size: %v" , termSize )
305285 }
306286 shellutil .AddTokenSwapEntry (cmdOpts .SwapToken )
307- cmdPty , err := pty .StartWithSize (ecmd , winsizeFromTermSize (termSize ))
287+ cmdPty , err := pty .StartWithSize (ecmd , ptyutil . WinsizeFromTermSize (termSize ))
308288 if err != nil {
309289 return nil , err
310290 }
@@ -705,7 +685,7 @@ func StartLocalShellProc(logCtx context.Context, termSize waveobj.TermSize, cmdS
705685 return nil , fmt .Errorf ("invalid term size: %v" , termSize )
706686 }
707687 shellutil .AddTokenSwapEntry (cmdOpts .SwapToken )
708- cmdPty , err := pty .StartWithSize (ecmd , winsizeFromTermSize (termSize ))
688+ cmdPty , err := pty .StartWithSize (ecmd , ptyutil . WinsizeFromTermSize (termSize ))
709689 if err != nil {
710690 return nil , err
711691 }
@@ -723,7 +703,7 @@ func RunSimpleCmdInPty(ecmd *exec.Cmd, termSize waveobj.TermSize) ([]byte, error
723703 if termSize .Rows <= 0 || termSize .Cols <= 0 {
724704 return nil , fmt .Errorf ("invalid term size: %v" , termSize )
725705 }
726- cmdPty , err := pty .StartWithSize (ecmd , winsizeFromTermSize (termSize ))
706+ cmdPty , err := pty .StartWithSize (ecmd , ptyutil . WinsizeFromTermSize (termSize ))
727707 if err != nil {
728708 cmdPty .Close ()
729709 return nil , err
0 commit comments