1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-07-28 01:41:48 +03:00

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
This commit is contained in:
Xiang Xiao
2021-05-05 11:33:31 -07:00
committed by Jakub Jelen
parent 605f7fb2de
commit e909bde2c5

View File

@ -174,22 +174,25 @@ static void do_exit(int i)
exit(0); exit(0);
} }
static ssh_channel chan;
static int signal_delayed = 0; static int signal_delayed = 0;
#ifdef SIGWINCH
static void sigwindowchanged(int i) static void sigwindowchanged(int i)
{ {
(void) i; (void) i;
signal_delayed = 1; signal_delayed = 1;
} }
#endif
static void setsignal(void) static void setsignal(void)
{ {
#ifdef SIGWINCH
signal(SIGWINCH, sigwindowchanged); signal(SIGWINCH, sigwindowchanged);
#endif
signal_delayed = 0; signal_delayed = 0;
} }
static void sizechanged(void) static void sizechanged(ssh_channel chan)
{ {
struct winsize win = { struct winsize win = {
.ws_row = 0, .ws_row = 0,
@ -227,7 +230,7 @@ static void select_loop(ssh_session session,ssh_channel channel)
while (ssh_channel_is_open(channel)) { while (ssh_channel_is_open(channel)) {
if (signal_delayed) { if (signal_delayed) {
sizechanged(); sizechanged(channel);
} }
rc = ssh_event_dopoll(event, 60000); rc = ssh_event_dopoll(event, 60000);
if (rc == SSH_ERROR) { if (rc == SSH_ERROR) {
@ -267,10 +270,9 @@ static void shell(ssh_session session)
ssh_channel_free(channel); ssh_channel_free(channel);
return; return;
} }
chan = channel;
if (interactive) { if (interactive) {
ssh_channel_request_pty(channel); ssh_channel_request_pty(channel);
sizechanged(); sizechanged(channel);
} }
if (ssh_channel_request_shell(channel)) { if (ssh_channel_request_shell(channel)) {