mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-10 01:48:00 +00:00
3396c97da9
Now that the new CMake build system is encouraging us to lay out the code like a set of libraries, it seems like a good idea to make them look more _like_ libraries, by putting things into separate modules as far as possible. This fixes several previous annoyances in which you had to link against some object in order to get a function you needed, but that object also contained other functions you didn't need which included link-time symbol references you didn't want to have to deal with. The usual offender was subsidiary supporting programs including misc.c for some innocuous function and then finding they had to deal with the requirements of buildinfo(). This big reorganisation introduces three new subdirectories called 'utils', one at the top level and one in each platform subdir. In each case, the directory contains basically the same files that were previously placed in the 'utils' build-time library, except that the ones that were extremely miscellaneous (misc.c, utils.c, uxmisc.c, winmisc.c, winmiscs.c, winutils.c) have been split up into much smaller pieces.
129 lines
2.7 KiB
C
129 lines
2.7 KiB
C
/*
|
|
* Supporting routines used in common by all the various components of
|
|
* the SSH system.
|
|
*/
|
|
|
|
#include <assert.h>
|
|
#include <stdlib.h>
|
|
|
|
#include "putty.h"
|
|
#include "ssh.h"
|
|
#include "sshchan.h"
|
|
|
|
/* ----------------------------------------------------------------------
|
|
* Centralised standard methods for other channel implementations to
|
|
* borrow.
|
|
*/
|
|
|
|
void chan_remotely_opened_confirmation(Channel *chan)
|
|
{
|
|
unreachable("this channel type should never receive OPEN_CONFIRMATION");
|
|
}
|
|
|
|
void chan_remotely_opened_failure(Channel *chan, const char *errtext)
|
|
{
|
|
unreachable("this channel type should never receive OPEN_FAILURE");
|
|
}
|
|
|
|
bool chan_default_want_close(
|
|
Channel *chan, bool sent_local_eof, bool rcvd_remote_eof)
|
|
{
|
|
/*
|
|
* Default close policy: we start initiating the CHANNEL_CLOSE
|
|
* procedure as soon as both sides of the channel have seen EOF.
|
|
*/
|
|
return sent_local_eof && rcvd_remote_eof;
|
|
}
|
|
|
|
bool chan_no_exit_status(Channel *chan, int status)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool chan_no_exit_signal(
|
|
Channel *chan, ptrlen signame, bool core_dumped, ptrlen msg)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool chan_no_exit_signal_numeric(
|
|
Channel *chan, int signum, bool core_dumped, ptrlen msg)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool chan_no_run_shell(Channel *chan)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool chan_no_run_command(Channel *chan, ptrlen command)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool chan_no_run_subsystem(Channel *chan, ptrlen subsys)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool chan_no_enable_x11_forwarding(
|
|
Channel *chan, bool oneshot, ptrlen authproto, ptrlen authdata,
|
|
unsigned screen_number)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool chan_no_enable_agent_forwarding(Channel *chan)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool chan_no_allocate_pty(
|
|
Channel *chan, ptrlen termtype, unsigned width, unsigned height,
|
|
unsigned pixwidth, unsigned pixheight, struct ssh_ttymodes modes)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool chan_no_set_env(Channel *chan, ptrlen var, ptrlen value)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool chan_no_send_break(Channel *chan, unsigned length)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool chan_no_send_signal(Channel *chan, ptrlen signame)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool chan_no_change_window_size(
|
|
Channel *chan, unsigned width, unsigned height,
|
|
unsigned pixwidth, unsigned pixheight)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
void chan_no_request_response(Channel *chan, bool success)
|
|
{
|
|
unreachable("this channel type should never send a want-reply request");
|
|
}
|
|
|
|
/* ----------------------------------------------------------------------
|
|
* Other miscellaneous utility functions.
|
|
*/
|
|
|
|
void free_rportfwd(struct ssh_rportfwd *rpf)
|
|
{
|
|
if (rpf) {
|
|
sfree(rpf->log_description);
|
|
sfree(rpf->shost);
|
|
sfree(rpf->dhost);
|
|
sfree(rpf);
|
|
}
|
|
}
|