aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiang Xiao <xiaoxiang@xiaomi.com>2021-05-05 11:33:31 -0700
committerJakub Jelen <jjelen@redhat.com>2021-05-12 16:01:18 +0200
commite909bde2c5692b5bef3957405ef5fffc44638cf1 (patch)
treef86dfbc8689c1bdccd88b4ae69630a7068d63421
parent605f7fb2de9d70aeac77d1b396af7b2c2d6645d9 (diff)
downloadlibssh-e909bde2c5692b5bef3957405ef5fffc44638cf1.tar.gz
libssh-e909bde2c5692b5bef3957405ef5fffc44638cf1.tar.xz
libssh-e909bde2c5692b5bef3957405ef5fffc44638cf1.zip
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
-rw-r--r--examples/ssh_client.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/examples/ssh_client.c b/examples/ssh_client.c
index 7304da85..782287fb 100644
--- a/examples/ssh_client.c
+++ b/examples/ssh_client.c
@@ -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)) {