1
1

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
Этот коммит содержится в:
Xiang Xiao 2021-05-05 11:33:31 -07:00 коммит произвёл Jakub Jelen
родитель 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)) {