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:
@ -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)) {
|
||||||
|
Reference in New Issue
Block a user