examples/ssh_client: Check SIGWINCH is defined before using it
since not all POSIX platform support SIGWINCH signal and remove the global variable chan Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com> Reviewed-by: Jakub Jelen <jjelen@redhat.com> Change-Id: I70217020c84b056270ed680008a1871383b5fc7b
Этот коммит содержится в:
родитель
605f7fb2de
Коммит
e909bde2c5
@ -174,22 +174,25 @@ static void do_exit(int i)
|
||||
exit(0);
|
||||
}
|
||||
|
||||
static ssh_channel chan;
|
||||
static int signal_delayed = 0;
|
||||
|
||||
#ifdef SIGWINCH
|
||||
static void sigwindowchanged(int i)
|
||||
{
|
||||
(void) i;
|
||||
signal_delayed = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void setsignal(void)
|
||||
{
|
||||
#ifdef SIGWINCH
|
||||
signal(SIGWINCH, sigwindowchanged);
|
||||
#endif
|
||||
signal_delayed = 0;
|
||||
}
|
||||
|
||||
static void sizechanged(void)
|
||||
static void sizechanged(ssh_channel chan)
|
||||
{
|
||||
struct winsize win = {
|
||||
.ws_row = 0,
|
||||
@ -227,7 +230,7 @@ static void select_loop(ssh_session session,ssh_channel channel)
|
||||
|
||||
while (ssh_channel_is_open(channel)) {
|
||||
if (signal_delayed) {
|
||||
sizechanged();
|
||||
sizechanged(channel);
|
||||
}
|
||||
rc = ssh_event_dopoll(event, 60000);
|
||||
if (rc == SSH_ERROR) {
|
||||
@ -267,10 +270,9 @@ static void shell(ssh_session session)
|
||||
ssh_channel_free(channel);
|
||||
return;
|
||||
}
|
||||
chan = channel;
|
||||
if (interactive) {
|
||||
ssh_channel_request_pty(channel);
|
||||
sizechanged();
|
||||
sizechanged(channel);
|
||||
}
|
||||
|
||||
if (ssh_channel_request_shell(channel)) {
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user