@@ -85,8 +85,9 @@ func setupLogFile(filename string) (*os.File, error) {
85
85
86
86
type Pty struct {
87
87
Cmd * exec.Cmd
88
- File * os. File
88
+ File pty. Pty
89
89
Ch chan os.Signal
90
+ wch chan bool
90
91
Rows uint16 // ws_row: Number of rows (in cells).
91
92
Cols uint16 //
92
93
}
@@ -117,7 +118,7 @@ func RunNoStdin(Args []string) *Pty {
117
118
if err != nil {
118
119
log .Fatal (err )
119
120
}
120
- ret := & Pty {Cmd : c , File : f , Ch : make (chan os.Signal , 1 )}
121
+ ret := & Pty {Cmd : c , File : f , Ch : make (chan os.Signal , 1 ), wch : make ( chan bool , 1 ) }
121
122
122
123
return ret
123
124
}
@@ -142,14 +143,25 @@ func RunCommand(Args []string) *Pty {
142
143
}
143
144
io .Copy (stdin2 , os .Stdin )
144
145
}()
145
- ret := & Pty {File : f , Ch : make (chan os.Signal , 1 )}
146
+ ret := & Pty {File : f , Ch : make (chan os.Signal , 1 ), wch : make ( chan bool , 1 ), }
146
147
ret .Notify ()
147
148
go func () {
148
- for range ret .Ch {
149
- // if err := pty.InheritSize(os.Stdin, ret.File); err != nil {
150
- // }
151
- if err := pty .Setsize (ret .File , & pty.Winsize {Rows : ret .Rows , Cols : ret .Cols }); err != nil {
152
- log .Printf ("error resizing pty: %s" , err )
149
+ for {
150
+ select {
151
+ case <- ret .wch :
152
+ {
153
+ if err := pty .Setsize (ret .File , & pty.Winsize {Rows : ret .Rows , Cols : ret .Cols }); err != nil {
154
+ debug .DebugLogf ("pty" ,"error resizing pty: %s" , err )
155
+ }
156
+ }
157
+ case <- ret .Ch :
158
+ {
159
+ // if err := pty.InheritSize(os.Stdin, ret.File); err != nil {
160
+ // }
161
+ if err := pty .Setsize (ret .File , & pty.Winsize {Rows : ret .Rows , Cols : ret .Cols }); err != nil {
162
+ log .Printf ("error resizing pty: %s" , err )
163
+ }
164
+ }
153
165
}
154
166
}
155
167
}()
0 commit comments