sgt/putty
11 years agoRemove documentation for "Out of space for port forwardings" error.
ben [Sun, 26 Aug 2012 09:19:34 +0000 (09:19 +0000)]
Remove documentation for "Out of space for port forwardings" error.

It no longer exists in the code, and should have been obsoleted by
r9214 at the latest.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9626 cda61777-01e9-0310-a592-d414129be87e

11 years agoImprove window-size handling in Unix Plink.
ben [Sat, 25 Aug 2012 22:57:39 +0000 (22:57 +0000)]
Improve window-size handling in Unix Plink.

Unconditionally override the configured terminal size with the one
from stdin if it's available.  This avoids the silliness whereby if
Default Settings had a terminal size set, Plink used this and thus
caused the server to use the wrong size.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9624 cda61777-01e9-0310-a592-d414129be87e

11 years agoBetter handling of outstanding CHANNEL_REQUESTS on channel destruction.
ben [Sat, 25 Aug 2012 21:06:48 +0000 (21:06 +0000)]
Better handling of outstanding CHANNEL_REQUESTS on channel destruction.

Part the first: make sure that all structures describing channel
requests are freed when the SSH connection is freed.  This involves
adding a means to ask a response handler to free any memory it holds.

Part the second: in ssh_channel_try_eof(), call
ssh2_channel_check_close() rather than emitting an SSH_MSG_CHANNEL_EOF
directly.  This avoids the possibility of closing the channel while a
CHANNEL_REQUEST is outstanding.

Also add some assertions that helped with tracking down the latter
problem.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9623 cda61777-01e9-0310-a592-d414129be87e

11 years agoFactor out common code to construct CHANNEL_REQUESTS.
ben [Sat, 25 Aug 2012 15:57:05 +0000 (15:57 +0000)]
Factor out common code to construct CHANNEL_REQUESTS.

This reduces code size a little and also makes it harder to
accidentally request a reply without putting in place a handler for
it or vice versa.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9620 cda61777-01e9-0310-a592-d414129be87e

11 years agoSimplify handling of responses to channel requests.
ben [Sat, 25 Aug 2012 15:04:29 +0000 (15:04 +0000)]
Simplify handling of responses to channel requests.

The various setup routines can only receive CHANNEL_SUCCESS or
CHANNEL_FAILURE, so there's no need for the to worry about receiving
anything else.  Strange packets will end up in do_ssh2_authconn
instead.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9619 cda61777-01e9-0310-a592-d414129be87e

11 years agoAdd some kind of window tracking to logparse.pl.
ben [Sat, 25 Aug 2012 14:34:20 +0000 (14:34 +0000)]
Add some kind of window tracking to logparse.pl.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9618 cda61777-01e9-0310-a592-d414129be87e

11 years agoFix matching of channel and global requests with replies in logparse.pl.
ben [Sat, 25 Aug 2012 13:54:56 +0000 (13:54 +0000)]
Fix matching of channel and global requests with replies in logparse.pl.

In each case, want_reply was being treated as true even when it wasn't,
because it got decoded into "yes"/"no", both of which are true in
Perl.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9617 cda61777-01e9-0310-a592-d414129be87e

11 years agoHandle all replies to CHANNEL_REQUESTs through the per-channel queue.
ben [Sat, 25 Aug 2012 13:39:32 +0000 (13:39 +0000)]
Handle all replies to CHANNEL_REQUESTs through the per-channel queue.

Each of the minor start-of-session requests is now dealt with by its own
little co-routine, while the shell/command is done in do_ssh2_authconn()
itself.  This eliminates one more round-trip in session setup: PuTTY gets
all the way up to sending a shell request before worrying about any
replies.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9616 cda61777-01e9-0310-a592-d414129be87e

11 years agoGeneralise SSH_MSG_CHANNEL_{SUCCESS,FAILURE} handling.
ben [Sat, 25 Aug 2012 11:12:14 +0000 (11:12 +0000)]
Generalise SSH_MSG_CHANNEL_{SUCCESS,FAILURE} handling.

Now each channel has a queue of arbitrary handlers for those messages,
with anything that sends a CHANNEL_REQUEST with want_reply true pushing
a new entry onto the queue, and a shared handler that dispatches
responses appropriately.

Currently, this is only used for winadj@putty.projects.tartarus.org, but
extending it to cover the initial requests as well shouldn't be too
painful.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9615 cda61777-01e9-0310-a592-d414129be87e

11 years agoFix a bug in the PSFTP command parser which would cause it to
simon [Wed, 22 Aug 2012 18:36:44 +0000 (18:36 +0000)]
Fix a bug in the PSFTP command parser which would cause it to
hallucinate an extra empty argument word at the end of a line if the
line ended in more than one whitespace character.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9613 cda61777-01e9-0310-a592-d414129be87e

11 years agoEnhance logparse.pl so that it detects channels running SFTP and
simon [Wed, 22 Aug 2012 18:25:28 +0000 (18:25 +0000)]
Enhance logparse.pl so that it detects channels running SFTP and
decodes the SFTP message layer in addition to the underlying SSH.
Requests and responses are matched up via their ids.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9612 cda61777-01e9-0310-a592-d414129be87e

11 years agoFix recently-introduced memory leak in ssh2_msg_unexpected().
ben [Tue, 21 Aug 2012 23:04:22 +0000 (23:04 +0000)]
Fix recently-introduced memory leak in ssh2_msg_unexpected().

git-svn-id: svn://svn.tartarus.org/sgt/putty@9611 cda61777-01e9-0310-a592-d414129be87e

11 years agoDe-duplicate code in KEXINIT generation.
ben [Tue, 21 Aug 2012 22:33:31 +0000 (22:33 +0000)]
De-duplicate code in KEXINIT generation.

There's no need to have identical code generating server-to-client and
client-to-server versions of the cipher and MAC lists; a couple of
twice-around loops will do fine.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9610 cda61777-01e9-0310-a592-d414129be87e

11 years agoReworking of packet delivery to coroutines in SSH-2.
ben [Tue, 21 Aug 2012 22:04:56 +0000 (22:04 +0000)]
Reworking of packet delivery to coroutines in SSH-2.

Before, NULL in the dispatch table meant "send to the appropriate one of
do_ssh2_transport() and do_ssh2_authconn()".  Now those (via small
shims) are specified directly in the dispatch table, so ssh2_protocol()
is much simpler.

In the process, this has somewhat centralised the handling of gross
server protocol violations.  PuTTY will now disconnect with a rude
message when (e.g.) OpenSSH sends us an SSH_MSG_UNIMPLEMENTED when we
try to KEXINIT during authentication.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9609 cda61777-01e9-0310-a592-d414129be87e

11 years agoFix an erroneous "case" fallthrough in ssh1_msg_channel_close, which was
ben [Sun, 19 Aug 2012 11:35:26 +0000 (11:35 +0000)]
Fix an erroneous "case" fallthrough in ssh1_msg_channel_close, which was
causing assertion failures when closing X11 channels in SSH-1.  Also fix
another pasto.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9608 cda61777-01e9-0310-a592-d414129be87e

11 years agoTweak to SSH coroutine code: put line number in the coroutine state
ben [Sat, 18 Aug 2012 09:30:01 +0000 (09:30 +0000)]
Tweak to SSH coroutine code: put line number in the coroutine state
structure, which is consistent with Simon's canonical version of the
macros.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9607 cda61777-01e9-0310-a592-d414129be87e

11 years agoUse a single sftp_senddata() to send each SFTP packet, rather than
simon [Sun, 12 Aug 2012 20:17:13 +0000 (20:17 +0000)]
Use a single sftp_senddata() to send each SFTP packet, rather than
using one for the length field and one for the rest of the packet
contents. Since sftp_senddata() has no queuing or deferral mechanism
but instead constructs and sends an SSH2_MSG_CHANNEL_DATA message
immediately, this change has the effect of ceasing to split every SFTP
packet across two SSH messages.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9603 cda61777-01e9-0310-a592-d414129be87e

11 years agoRework bufchain code to allow for variable-sized granules.
ben [Sat, 11 Aug 2012 09:10:31 +0000 (09:10 +0000)]
Rework bufchain code to allow for variable-sized granules.
bufchain_add() now allocates at most one new granule.  Granules still
have a minimum size, so small adds still get coalesced.

The main practical consequence of this is that PSCP and PSFTP now
generate 4K SSH packets rather than 512-byte ones.  Also, the compiled
code (on my Ubuntu box) is fractionally smaller.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9602 cda61777-01e9-0310-a592-d414129be87e

11 years agoReduce the number of round-trips involved in opening an SSH-2 session
ben [Thu, 2 Aug 2012 22:18:18 +0000 (22:18 +0000)]
Reduce the number of round-trips involved in opening an SSH-2 session
by sending most of the initial SSH_MSG_CHANNEL_REQUEST messages before
waiting for any replies.  The initial version of this code was a clever
thing with a two-pass loop, but that got hairy so I went for the simpler
approach of separating the request and reply code and having flags to
keep track of which requests have been sent.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9599 cda61777-01e9-0310-a592-d414129be87e

11 years agoAdd a missing \define I accidentally assumed was there in r9592.
simon [Sun, 29 Jul 2012 13:38:31 +0000 (13:38 +0000)]
Add a missing \define I accidentally assumed was there in r9592.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9593 cda61777-01e9-0310-a592-d414129be87e

11 years agoAdd a bug-compatibility flag to disable the
simon [Sat, 28 Jul 2012 19:30:12 +0000 (19:30 +0000)]
Add a bug-compatibility flag to disable the
winadj@putty.projects.tartarus.org request. Not currently enabled
automatically, but should be usable as a manual workaround.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9592 cda61777-01e9-0310-a592-d414129be87e

11 years agoFix an embarrassing mistake in config box handling which was causing
simon [Sat, 28 Jul 2012 16:53:09 +0000 (16:53 +0000)]
Fix an embarrassing mistake in config box handling which was causing
changes to any SSH bug config option to be lost when the config box
switched to a different panel, at least on GTK.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9591 cda61777-01e9-0310-a592-d414129be87e

11 years agoMove the declaration of smemclr() out of putty.h into misc.h, because
simon [Sat, 28 Jul 2012 16:33:51 +0000 (16:33 +0000)]
Move the declaration of smemclr() out of putty.h into misc.h, because
one of its uses (in sshaes.c) wasn't picking up the former. Thanks to
Ubuntu's gcc for spotting that.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9590 cda61777-01e9-0310-a592-d414129be87e

11 years agoRemove an unused variable.
simon [Sat, 28 Jul 2012 16:33:17 +0000 (16:33 +0000)]
Remove an unused variable.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9589 cda61777-01e9-0310-a592-d414129be87e

11 years agoIntroduce a new utility function smemclr(), which memsets things to
simon [Sun, 22 Jul 2012 19:51:50 +0000 (19:51 +0000)]
Introduce a new utility function smemclr(), which memsets things to
zero but does it in such a way that over-clever compilers hopefully
won't helpfully optimise the call away if you do it just before
freeing something or letting it go out of scope. Use this for
(hopefully) every memset whose job is to destroy sensitive data that
might otherwise be left lying around in the process's memory.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9586 cda61777-01e9-0310-a592-d414129be87e

11 years agoRemove a bashism in mksrcarc.sh, without which bob builds fail on
simon [Sun, 22 Jul 2012 19:48:39 +0000 (19:48 +0000)]
Remove a bashism in mksrcarc.sh, without which bob builds fail on
Ubuntu (whose /bin/sh is not bash).

git-svn-id: svn://svn.tartarus.org/sgt/putty@9585 cda61777-01e9-0310-a592-d414129be87e

11 years agoAdd '-Wall -Werror' to the compile options in the autotools makefile,
simon [Thu, 19 Jul 2012 04:42:34 +0000 (04:42 +0000)]
Add '-Wall -Werror' to the compile options in the autotools makefile,
having just noticed that Makefile.gtk had it and this one doesn't. (Of
course, this being autoconf, we can easily enough make it conditional
on the compiler actually being gcc.)

git-svn-id: svn://svn.tartarus.org/sgt/putty@9583 cda61777-01e9-0310-a592-d414129be87e

11 years agoRework the new type-check in sresize so that it doesn't cause a
simon [Thu, 19 Jul 2012 04:29:50 +0000 (04:29 +0000)]
Rework the new type-check in sresize so that it doesn't cause a
compile warning ('left-hand operand of comma expression has no
effect'), which of course becomes fatal under -Werror.

(This would have been instantly noticeable to people compiling with
the old-fashioned Makefile.gtk, which does include -Wall -Werror, but
those of us using the new autoconf makefile hadn't noticed.)

git-svn-id: svn://svn.tartarus.org/sgt/putty@9582 cda61777-01e9-0310-a592-d414129be87e

11 years agoRemove term_key, which was intended to handle function keys in a cross-
owen [Wed, 18 Jul 2012 16:08:54 +0000 (16:08 +0000)]
Remove term_key, which was intended to handle function keys in a cross-
platform manner, but which nothing ever called.  It thus served only to
trap up the unwary.  The live function key handling code lives in the
frontends, i.e. window.c on Windows and gtkwin.c on Unix.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9579 cda61777-01e9-0310-a592-d414129be87e

11 years agoIf pterm's execvp fails when given the whole argument list after -e,
simon [Wed, 11 Jul 2012 18:12:17 +0000 (18:12 +0000)]
If pterm's execvp fails when given the whole argument list after -e,
and the argument list contains only one string, try again by passing
that single string to "$SHELL -c" to be parsed as a shell command.
This matches xterm's behaviour (as of xterm 261, at least), and means
in practice that users can do _either_ of 'pterm -e some command' and
'pterm -e "some command"'.

(A quick survey suggests that the majority of X terminal programs agree
with pterm's old behaviour of only supporting '-e some command',
except that gnome-terminal only supports the other behaviour and xterm
supports both. With that disagreement, I think supporting both is
probably the sensible thing.)

git-svn-id: svn://svn.tartarus.org/sgt/putty@9575 cda61777-01e9-0310-a592-d414129be87e

11 years agoTurns out that the compose-keys fix in r9567 did in fact break one
simon [Thu, 5 Jul 2012 23:45:20 +0000 (23:45 +0000)]
Turns out that the compose-keys fix in r9567 did in fact break one
piece of keyboard handling: if Num Lock is on, numeric keypad keys are
eaten by the IM, so we must avoid passing them to the IM in the first
place if we're in any non-default numeric keypad mode (application or
Nethack).

This is a grubby way to do it, but the more obvious approach of just
moving the Nethack and app-keypad if statements up to above the IM
call doesn't work because those statements depend on the generic
Alt-prefix handling that happens just _below_ the IM call. So instead
I just repeat the list of keystrokes and modes in an if statement
conditionalising the IM call.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9573 cda61777-01e9-0310-a592-d414129be87e

11 years agoStop including <gtk/gtkcontainer.h> directly, since a user points out
simon [Sun, 1 Jul 2012 16:55:36 +0000 (16:55 +0000)]
Stop including <gtk/gtkcontainer.h> directly, since a user points out
that it'll be absent in GTK 3.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9571 cda61777-01e9-0310-a592-d414129be87e

11 years agoJohn Hartnup reports that Apache SSHD's SFTP server responds to
simon [Wed, 20 Jun 2012 17:39:32 +0000 (17:39 +0000)]
John Hartnup reports that Apache SSHD's SFTP server responds to
FXP_READDIR on an empty directory by returning a zero-length list of
filenames, instead of the more common response of a list containing
just "." and "..". Stop PSFTP failing an assertion when that happens.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9569 cda61777-01e9-0310-a592-d414129be87e

11 years agoAdd the missing code to treat data coming from the input method as
simon [Mon, 18 Jun 2012 18:10:59 +0000 (18:10 +0000)]
Add the missing code to treat data coming from the input method as
keypresses for purposes of hiding the mouse pointer and resetting the
scrollback.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9568 cda61777-01e9-0310-a592-d414129be87e

11 years agoSupport for dead keys and compose sequences on Unix, by instantiating
simon [Sun, 17 Jun 2012 07:26:23 +0000 (07:26 +0000)]
Support for dead keys and compose sequences on Unix, by instantiating
a GtkIMMulticontext and having that filter most keypresses. I think
I've got this right so that it doesn't break any previous deliberate
keyboard-handling behaviour that's now _after_ the 'if (filter
keypress) return' statement.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9567 cda61777-01e9-0310-a592-d414129be87e

11 years agoIntroduce a third setting for the 'bold as colour' mode, which lets
simon [Sat, 9 Jun 2012 15:09:22 +0000 (15:09 +0000)]
Introduce a third setting for the 'bold as colour' mode, which lets
you both brighten the colour _and_ bold the font at the same time.
(Fixes 'bold-font-colour' and Debian #193352.)

git-svn-id: svn://svn.tartarus.org/sgt/putty@9559 cda61777-01e9-0310-a592-d414129be87e

11 years agoAdd missing check for failure to agree a host key algorithm.
simon [Mon, 4 Jun 2012 23:32:36 +0000 (23:32 +0000)]
Add missing check for failure to agree a host key algorithm.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9557 cda61777-01e9-0310-a592-d414129be87e

11 years agoMissing #include.
simon [Fri, 1 Jun 2012 19:43:05 +0000 (19:43 +0000)]
Missing #include.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9551 cda61777-01e9-0310-a592-d414129be87e

11 years agoFix a bug in cygtermd, spotted by Casey Zacek, in which we
simon [Fri, 1 Jun 2012 06:50:37 +0000 (06:50 +0000)]
Fix a bug in cygtermd, spotted by Casey Zacek, in which we
unconditionally set the telnet state to SEENCR regardless of whether
we have actually seen a CR, and as a result sending a NUL through
PuTTY (via Ctrl-Space or whatever) does not work. Must have arisen
through some kind of really weird cut-and-paste error!

git-svn-id: svn://svn.tartarus.org/sgt/putty@9545 cda61777-01e9-0310-a592-d414129be87e

11 years agoEnhance my 'sresize' macro so that it type-checks the pointer you pass
simon [Fri, 18 May 2012 19:51:11 +0000 (19:51 +0000)]
Enhance my 'sresize' macro so that it type-checks the pointer you pass
_in_ to it, as well as the one it returns. Why have I never thought of
doing that before?!

git-svn-id: svn://svn.tartarus.org/sgt/putty@9539 cda61777-01e9-0310-a592-d414129be87e

11 years agoFix bug in the new CLOCK_MONOTONIC implementation. I was treating the
simon [Tue, 15 May 2012 22:19:21 +0000 (22:19 +0000)]
Fix bug in the new CLOCK_MONOTONIC implementation. I was treating the
nanoseconds field as a microseconds field, with hilarious consequences.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9535 cda61777-01e9-0310-a592-d414129be87e

11 years agoUse clock_gettime(CLOCK_MONOTONIC) as the Unix getticks(), if it's
simon [Sun, 13 May 2012 15:59:27 +0000 (15:59 +0000)]
Use clock_gettime(CLOCK_MONOTONIC) as the Unix getticks(), if it's
available.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9529 cda61777-01e9-0310-a592-d414129be87e

11 years agoPatch from Robert de Bath to substantially simplify timing.c.
simon [Sun, 13 May 2012 15:59:26 +0000 (15:59 +0000)]
Patch from Robert de Bath to substantially simplify timing.c.

The previous platform-dependent ifdefs, switching between a system
which tried to cope with spurious callbacks (which I'd observed on
Windows) and one which tried to cope with system clock jumps (which
can happen on Unix, if you use gettimeofday) have been completely
removed, and replaced with a much simpler approach which just copes
with system clock jumps by triggering any timers immediately.

None of the resulting effects should be catastrophic (the worst thing
might be the waste of CPU in a spurious rekey, but as long as the
system clock isn't jumping around _all_ the time that's hardly
critical) and in any case the Unix port has had a long-standing oddity
involving occasional lockups if pterm or PuTTY runs for too long,
which hopefully this should replace with a much less bad failure mode.
And the code is much simpler, which is not to be sneezed at.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9528 cda61777-01e9-0310-a592-d414129be87e

11 years agoFix from Robert de Bath which reorders the Windows initialisation
simon [Sun, 13 May 2012 15:59:24 +0000 (15:59 +0000)]
Fix from Robert de Bath which reorders the Windows initialisation
sequence: since init_fonts sets up ucsdata based on the available
Windows fonts, we should call it before passing ucsdata to term_init.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9527 cda61777-01e9-0310-a592-d414129be87e

11 years agoBug fix from Robert de Bath: since lpDx_maybe is always supposed to
simon [Sun, 13 May 2012 15:59:22 +0000 (15:59 +0000)]
Bug fix from Robert de Bath: since lpDx_maybe is always supposed to
equal either lpDx or NULL, we mustn't forget to update it when we
realloc lpDx.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9526 cda61777-01e9-0310-a592-d414129be87e

11 years agoWhen we are asked to unthrottle an SSH connection (by the front end
simon [Sat, 12 May 2012 17:00:54 +0000 (17:00 +0000)]
When we are asked to unthrottle an SSH connection (by the front end
calling back->unthrottle), we should immediately call
ssh_process_queued_incoming_data to handle the SSH packets that have
been saved for later functioning while we were throttled. Otherwise,
they'll sit there unhandled until the next call to ssh_gotdata, which
might not be for ages if the server thinks it's waiting for us.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9523 cda61777-01e9-0310-a592-d414129be87e

12 years agoFix trivial Perl goof in logparse.pl which caused
simon [Mon, 30 Apr 2012 17:28:28 +0000 (17:28 +0000)]
Fix trivial Perl goof in logparse.pl which caused
SSH2_MSG_CHANNEL_FAILURE to be reported as replying to
ARRAY(0xrubbish) instead of to a message number.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9472 cda61777-01e9-0310-a592-d414129be87e

12 years agoFix an inverted comparison in rlogin.c which must surely have broken
simon [Tue, 24 Apr 2012 17:33:06 +0000 (17:33 +0000)]
Fix an inverted comparison in rlogin.c which must surely have broken
logins completely, with or without a supplied username. Ahem.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9471 cda61777-01e9-0310-a592-d414129be87e

12 years agoCall sshfwd_unclean_close() in the event of a local socket error on a
simon [Mon, 23 Apr 2012 17:59:53 +0000 (17:59 +0000)]
Call sshfwd_unclean_close() in the event of a local socket error on a
forwarded X connection. (I somehow forgot to do this in r9364, despite
making the identical change in portfwd.c.)

git-svn-id: svn://svn.tartarus.org/sgt/putty@9470 cda61777-01e9-0310-a592-d414129be87e

12 years agoPatch from Robert de Bath to ifdef out the Windows-specific hack for
simon [Sun, 22 Apr 2012 14:22:10 +0000 (14:22 +0000)]
Patch from Robert de Bath to ifdef out the Windows-specific hack for
the offset horizontal line characters in the VT100 line-drawing set
(o,p,r,s), so that no trace of it - and hence no pointless performance
hit - is compiled into the cross-platform modules on non-Windows
platforms.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9467 cda61777-01e9-0310-a592-d414129be87e

12 years agoBug fix from Robert de Bath: if the utf8_override setting is changed
simon [Sun, 22 Apr 2012 14:22:08 +0000 (14:22 +0000)]
Bug fix from Robert de Bath: if the utf8_override setting is changed
in mid-session, it affects translation and hence display, so it should
be listed among the settings that require a redraw.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9466 cda61777-01e9-0310-a592-d414129be87e

12 years agoBug fix from Robert de Bath: if wc_to_mb returns a length of zero, it
simon [Sun, 22 Apr 2012 14:22:08 +0000 (14:22 +0000)]
Bug fix from Robert de Bath: if wc_to_mb returns a length of zero, it
will not even initialise sbstring[0], so we shouldn't even look at it
let alone depend on it to tell us the desired character was absent.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9465 cda61777-01e9-0310-a592-d414129be87e

12 years agoConditionalise the calls to premsg and postmsg in uxcons.c's
simon [Wed, 18 Apr 2012 06:36:46 +0000 (06:36 +0000)]
Conditionalise the calls to premsg and postmsg in uxcons.c's
logevent(), which temporarily turn off the raw mode we've put stderr
into, so that they don't get called if the log_eventlog() call between
them is not _actually_ going to write to stderr.

Fixes a bug in which, if you define a Unix PuTTY saved session which
uses 'plink -nc' as a local proxy command and then run PuTTY
backgrounded from the shell with that session loaded, the subprocess
Plink would get SIGTTOU when it tried to muck about with stderr and
the whole thing would grind to a halt. I'm prepared to consider that
acceptable if Plink _really_ wants to write on standard error, but if
it doesn't, it should just carry on working in the background!

git-svn-id: svn://svn.tartarus.org/sgt/putty@9462 cda61777-01e9-0310-a592-d414129be87e

12 years agoFix a Perl warning about useless use of a constant in void context.
simon [Mon, 16 Apr 2012 18:21:31 +0000 (18:21 +0000)]
Fix a Perl warning about useless use of a constant in void context.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9458 cda61777-01e9-0310-a592-d414129be87e

12 years agoNew utility script to parse an SSH packet dump and write out an
simon [Sat, 14 Apr 2012 17:24:12 +0000 (17:24 +0000)]
New utility script to parse an SSH packet dump and write out an
interpretation with some analysis done on it. The script will do its
own tracking of the set of open channels and their states, and its
output is in a one-line-per-packet format such that every distinct
channel has a unique identifier in it which should make it easy to
grep out all lines relating to that channel. The script also matches
up {CHANNEL,REQUEST}_{SUCCESS,FAILURE} to the requests that caused
them, by tracking a queue of requests in each direction per channel
and for global requests. Command-line options permit generating a
final dump of all channels ever known to the script and their various
ids and final state, and also dumping out the data transferred over
each channel in each direction.

Output is not complete, in the sense that some parameters in some
messages (e.g. pixel sizes in window-size specifications) are
deliberately omitted due to being boring, and the entire contents of
some messages (e.g. KEXINIT) are omitted because I haven't yet seen
any purpose in decoding them. Filling them in might be a useful thing,
although I'm inclined to think that the default should still be to
show only the potentially interesting stuff (e.g. still not pixel
sizes!) and enable the rest using a -v option.

Hopefully this should do a lot of the legwork in debugging issues in
which a channel mysteriously remains partially open and prevents PuTTY
closing.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9457 cda61777-01e9-0310-a592-d414129be87e

12 years agoAdd code in dlg_filesel_set and dlg_fontsel_set which makes them
simon [Fri, 13 Apr 2012 18:02:30 +0000 (18:02 +0000)]
Add code in dlg_filesel_set and dlg_fontsel_set which makes them
duplicate the strings they pass to gtk_entry_set_text. I was already
doing that in dlg_editbox_set, but forgot to add the same code when I
revamped FontSpec and Filename to contain dynamically allocated
strings (r9314 and r9316 respectively). This fixes a bug where, on
some versions of GTK (but apparently not up-to-date versions), loading
a saved session causes gibberish to appear in file-selector edit boxes
accompanied by a valgrind error.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9456 cda61777-01e9-0310-a592-d414129be87e

12 years agoFallout from the big revamp in r9214: colour handling was going a bit
simon [Sun, 8 Apr 2012 09:42:58 +0000 (09:42 +0000)]
Fallout from the big revamp in r9214: colour handling was going a bit
wonky because I'd used the subkey for the red component in four places
where I should have used the green/blue subkeys instead. Thanks to
Martin Kletzander for spotting it.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9449 cda61777-01e9-0310-a592-d414129be87e

12 years agoFix another type mismatch introduced by r9409.
simon [Mon, 5 Mar 2012 18:40:36 +0000 (18:40 +0000)]
Fix another type mismatch introduced by r9409.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9427 cda61777-01e9-0310-a592-d414129be87e

12 years agoFix a type mismatch in minibidi.c - r9409 changed the 'wc' fields in
simon [Mon, 5 Mar 2012 18:34:40 +0000 (18:34 +0000)]
Fix a type mismatch in minibidi.c - r9409 changed the 'wc' fields in
bidi_char from wchar_t to unsigned int, but omitted to similarly
adjust the parameter to doMirror which is passed a pointer to that
field.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9426 cda61777-01e9-0310-a592-d414129be87e

12 years agoInitialise some variables to NULL, to placate optimisers.
simon [Mon, 5 Mar 2012 18:32:27 +0000 (18:32 +0000)]
Initialise some variables to NULL, to placate optimisers.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9425 cda61777-01e9-0310-a592-d414129be87e

12 years agoRemove comment about 1024/1023 RSA key lengths that's no longer true as of
jacob [Sun, 4 Mar 2012 01:01:11 +0000 (01:01 +0000)]
Remove comment about 1024/1023 RSA key lengths that's no longer true as of
r9421.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9422 cda61777-01e9-0310-a592-d414129be87e

12 years agoGenerate keys more carefully, so that when the user asks for an n-bit
simon [Sun, 4 Mar 2012 00:24:49 +0000 (00:24 +0000)]
Generate keys more carefully, so that when the user asks for an n-bit
key they always get an n-bit number instead of n-1. The latter was
perfectly harmless but kept confusing users.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9421 cda61777-01e9-0310-a592-d414129be87e

12 years agoLong overdue rewrapping of the primes[] array for legibility. I think
simon [Sun, 4 Mar 2012 00:24:47 +0000 (00:24 +0000)]
Long overdue rewrapping of the primes[] array for legibility. I think
the previous ghastly formatting arose when I ran the whole source base
through GNU indent...

git-svn-id: svn://svn.tartarus.org/sgt/putty@9420 cda61777-01e9-0310-a592-d414129be87e

12 years agoUpdate default key length in PuTTYgen to 2048.
simon [Sun, 19 Feb 2012 10:44:04 +0000 (10:44 +0000)]
Update default key length in PuTTYgen to 2048.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9414 cda61777-01e9-0310-a592-d414129be87e

12 years agoUpdate to 2007-05-26 version of upstream wcwidth.c.
simon [Sun, 19 Feb 2012 10:32:44 +0000 (10:32 +0000)]
Update to 2007-05-26 version of upstream wcwidth.c.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9413 cda61777-01e9-0310-a592-d414129be87e

12 years agoPatch from Matsui Nag to implement xterm's "bracketed paste mode", in
simon [Sun, 19 Feb 2012 10:27:18 +0000 (10:27 +0000)]
Patch from Matsui Nag to implement xterm's "bracketed paste mode", in
which text pasted into the terminal is preceded and followed by
special function-key-like escape sequences ESC[200~ and ESC[201~ so
that the application can identify it and treat it specially (e.g.
disabling auto-indent-same-as-previous-line in text editors). Enabled
and disabled by ESC[?2004h and ESC[?2004l, and of course off by
default.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9412 cda61777-01e9-0310-a592-d414129be87e

12 years agoPatch from Yoshida Masato to fill in the missing pieces of Windows
simon [Fri, 17 Feb 2012 19:28:55 +0000 (19:28 +0000)]
Patch from Yoshida Masato to fill in the missing pieces of Windows
UTF-16 support. High Unicode characters in the terminal are now
converted back into surrogates during copy and draw operations, and
the Windows drawing code takes account of that when splitting up the
UTF-16 string for display. Meanwhile, accidental uses of wchar_t have
been replaced with 32-bit integers in parts of the cross-platform code
which were expecting not to have to deal with UTF-16.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9409 cda61777-01e9-0310-a592-d414129be87e

12 years agoWM_SIZE/SIZE_MAXIMIZED can show up even during an interactive resize,
simon [Sun, 5 Feb 2012 10:08:20 +0000 (10:08 +0000)]
WM_SIZE/SIZE_MAXIMIZED can show up even during an interactive resize,
so we should ensure we treat it the same way as other WM_SIZEs that
show up during that time: set the width and height in conf, and set
the flag to have that width and height enacted on WM_EXITSIZEMOVE.

Fixes a bug in which dragging a PuTTY window directly from the Win7
snapped-to-half-screen position to the snapped-to-maximised state
would leave the terminal in the pre-snapped size.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9404 cda61777-01e9-0310-a592-d414129be87e

12 years agoNew FAQ: "When I put PuTTY in C:\WINDOWS\SYSTEM32 on my 64-bit Windows system,
jacob [Mon, 30 Jan 2012 00:29:32 +0000 (00:29 +0000)]
New FAQ: "When I put PuTTY in C:\WINDOWS\SYSTEM32 on my 64-bit Windows system,
`Duplicate Session' doesn't work." (Explanation courtesy Owen.)

git-svn-id: svn://svn.tartarus.org/sgt/putty@9391 cda61777-01e9-0310-a592-d414129be87e

12 years agoIt's a new year.
jacob [Thu, 26 Jan 2012 18:53:53 +0000 (18:53 +0000)]
It's a new year.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9390 cda61777-01e9-0310-a592-d414129be87e

12 years agoIf we're called on to uncleanly close an SSH channel for which we've
simon [Thu, 26 Jan 2012 18:22:28 +0000 (18:22 +0000)]
If we're called on to uncleanly close an SSH channel for which we've
already sent SSH2_MSG_CHANNEL_CLOSE, we should not skip the _whole_ of
sshfwd_unclean_close(), only the part about sending
SSH2_MSG_CHANNEL_CLOSE. It's still important to retag the SSH channel
as CHAN_ZOMBIE and clean up its previous data provider.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9389 cda61777-01e9-0310-a592-d414129be87e

12 years agoPatch from Colin Watson to use g_ascii_strcasecmp in place of the
simon [Tue, 3 Jan 2012 19:43:19 +0000 (19:43 +0000)]
Patch from Colin Watson to use g_ascii_strcasecmp in place of the
deprecated g_strcasecmp (since all the strings being compared are
parts of XLFDs and won't be in interesting character sets anyway).

git-svn-id: svn://svn.tartarus.org/sgt/putty@9376 cda61777-01e9-0310-a592-d414129be87e

12 years agoChecklist update following the 0.62 release. I managed to send out the
simon [Sat, 10 Dec 2011 14:03:02 +0000 (14:03 +0000)]
Checklist update following the 0.62 release. I managed to send out the
announcement email without a subject line, so I'm reorganising the
announcement entry in the checklist in the hope that it'll make it
harder for me to get that one wrong in future!

git-svn-id: svn://svn.tartarus.org/sgt/putty@9371 cda61777-01e9-0310-a592-d414129be87e

12 years agoBump version number on trunk prior to tagging 0.62 on the branch.
simon [Sat, 10 Dec 2011 12:07:46 +0000 (12:07 +0000)]
Bump version number on trunk prior to tagging 0.62 on the branch.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9365 cda61777-01e9-0310-a592-d414129be87e

12 years agoIntroduce a function sshfwd_unclean_close(), supplied by ssh.c to
simon [Thu, 8 Dec 2011 19:15:58 +0000 (19:15 +0000)]
Introduce a function sshfwd_unclean_close(), supplied by ssh.c to
subsidiary network modules like portfwd.c. To be called when the
subsidiary module experiences a socket error: it sends an emergency
CHANNEL_CLOSE (not just outgoing CHANNEL_EOF), and immediately deletes
the local side of the channel. (I've invented a new channel type in
ssh.c called CHAN_ZOMBIE, for channels whose original local side has
already been thrown away and they're just hanging around waiting to
receive the acknowledging CHANNEL_CLOSE.)

As a result of this and the last few commits, I can now run a port
forwarding session in which a local socket error occurs on a forwarded
port, and PuTTY now handles it apparently correctly, closing both the
SSH channel and the local socket and then actually recognising that
it's OK to terminate when all _other_ channels have been closed.
Previously the channel corresponding to the duff connection would
linger around (because of net_pending_errors never being called), and
keep being selected on (hence chewing CPU), and inhibit program
termination at the end of the session (because not all channels were
closed).

git-svn-id: svn://svn.tartarus.org/sgt/putty@9364 cda61777-01e9-0310-a592-d414129be87e

12 years agoArrange to call net_pending_errors on Unix, which we've never actually
simon [Thu, 8 Dec 2011 19:15:57 +0000 (19:15 +0000)]
Arrange to call net_pending_errors on Unix, which we've never actually
remembered to do before! Also some related fixes, such as that after
we do so we should immediately stop selecting on the socket in
question.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9363 cda61777-01e9-0310-a592-d414129be87e

12 years agoWhen we receive CHANNEL_CLOSE on an SSH-2 channel and haven't sent EOF
simon [Thu, 8 Dec 2011 19:15:55 +0000 (19:15 +0000)]
When we receive CHANNEL_CLOSE on an SSH-2 channel and haven't sent EOF
on it yet, we should send EOF on _that channel_, not the main session
channel! Oops.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9362 cda61777-01e9-0310-a592-d414129be87e

12 years agoWhitespace fix while I was passing.
simon [Thu, 8 Dec 2011 19:15:54 +0000 (19:15 +0000)]
Whitespace fix while I was passing.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9361 cda61777-01e9-0310-a592-d414129be87e

12 years agoMake sure we never send window adjustments (or winadjes) on channels
simon [Thu, 8 Dec 2011 19:15:53 +0000 (19:15 +0000)]
Make sure we never send window adjustments (or winadjes) on channels
for which we've already sent CHANNEL_CLOSE. It would be embarrassing
if the remote end had also sent CHANNEL_CLOSE in response and then
received our communication once it had forgotten about the channel.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9360 cda61777-01e9-0310-a592-d414129be87e

12 years agoBlock SIGPIPE in Unix plink. In a port-forwarding run we may have lots
simon [Thu, 8 Dec 2011 19:15:52 +0000 (19:15 +0000)]
Block SIGPIPE in Unix plink. In a port-forwarding run we may have lots
of local sockets and pipes all open at once, and if one of them is
uncleanly closed from the remote end we don't want the whole
application to die - we want to close that socket's SSH channel and
continue with the rest of the run.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9359 cda61777-01e9-0310-a592-d414129be87e

12 years agoAdd a missing free_prompts() call in the keyboard-interactive code.
simon [Wed, 7 Dec 2011 19:07:02 +0000 (19:07 +0000)]
Add a missing free_prompts() call in the keyboard-interactive code.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9357 cda61777-01e9-0310-a592-d414129be87e

12 years agoTiny patch from Martin Packman to fix a Windows handle leak in
simon [Mon, 28 Nov 2011 19:23:43 +0000 (19:23 +0000)]
Tiny patch from Martin Packman to fix a Windows handle leak in
Pageant's IPC mechanism. It's incomplete (he sent a much more
comprehensive set of fixes that I haven't reviewed), but should be
adequate to mitigate a particular issue for Bazaar users.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9355 cda61777-01e9-0310-a592-d414129be87e

12 years agoI missed a bit in r9343: windows/version.rc2 also needed updating for
simon [Mon, 28 Nov 2011 19:17:04 +0000 (19:17 +0000)]
I missed a bit in r9343: windows/version.rc2 also needed updating for
the new 'pre-release' version type.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9353 cda61777-01e9-0310-a592-d414129be87e

12 years agoAdd a release checklist entry to remind me to get rid of 'pre-release'
simon [Sun, 27 Nov 2011 11:10:15 +0000 (11:10 +0000)]
Add a release checklist entry to remind me to get rid of 'pre-release'
sections on the Download page.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9351 cda61777-01e9-0310-a592-d414129be87e

12 years agoIntroduce a new version type, 'prerelease'. Quotes the version number
simon [Sat, 26 Nov 2011 17:35:21 +0000 (17:35 +0000)]
Introduce a new version type, 'prerelease'. Quotes the version number
it's a pre-release of, and the revision number so you can tell two
pre-releases apart. I intend to use this for builds from branch-0.61
until I call it 0.62 proper.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9343 cda61777-01e9-0310-a592-d414129be87e

12 years agoSupport code page 852. Thanks to Tamas Tevesz.
simon [Fri, 14 Oct 2011 07:03:29 +0000 (07:03 +0000)]
Support code page 852. Thanks to Tamas Tevesz.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9326 cda61777-01e9-0310-a592-d414129be87e

12 years agoPrivate files saved on Unix should have mode 0600, not 0700. They're
simon [Sun, 2 Oct 2011 14:16:08 +0000 (14:16 +0000)]
Private files saved on Unix should have mode 0600, not 0700. They're
generally private-key files, which have no need to be executable.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9321 cda61777-01e9-0310-a592-d414129be87e

12 years agoMore arbitrary-limit hunting: retire PASSPHRASE_MAXLEN in the Windows
simon [Sun, 2 Oct 2011 14:14:21 +0000 (14:14 +0000)]
More arbitrary-limit hunting: retire PASSPHRASE_MAXLEN in the Windows
GUIs of Pageant and PuTTYgen. With that and the prompts_t redesign,
there should no longer be any limit on passphrase length other than
the patience of the user.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9320 cda61777-01e9-0310-a592-d414129be87e

12 years agoAnother utility function, to free a string containing sensitive data.
simon [Sun, 2 Oct 2011 14:03:47 +0000 (14:03 +0000)]
Another utility function, to free a string containing sensitive data.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9319 cda61777-01e9-0310-a592-d414129be87e

12 years agoMove a recently introduced utility function out of the file in which I
simon [Sun, 2 Oct 2011 13:53:58 +0000 (13:53 +0000)]
Move a recently introduced utility function out of the file in which I
declared it static, and into winutils.c where it can be more generally
accessible.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9318 cda61777-01e9-0310-a592-d414129be87e

12 years agoWhile I'm crusading against arbitrary limits, here's a redesign of
simon [Sun, 2 Oct 2011 11:50:45 +0000 (11:50 +0000)]
While I'm crusading against arbitrary limits, here's a redesign of
prompt_t to arrange that the buffer in which each prompt is stored can
be reallocated larger during the input process.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9317 cda61777-01e9-0310-a592-d414129be87e

12 years agoTurn 'Filename' into a dynamically allocated type with no arbitrary
simon [Sun, 2 Oct 2011 11:01:57 +0000 (11:01 +0000)]
Turn 'Filename' into a dynamically allocated type with no arbitrary
length limit, just as I did to FontSpec yesterday.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9316 cda61777-01e9-0310-a592-d414129be87e

12 years agoFix copy-and-paste error in command-line font selection in r9314.
jacob [Sat, 1 Oct 2011 18:00:49 +0000 (18:00 +0000)]
Fix copy-and-paste error in command-line font selection in r9314.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9315 cda61777-01e9-0310-a592-d414129be87e

12 years agoChange the semantics of 'FontSpec' so that it's a dynamically
simon [Sat, 1 Oct 2011 17:38:59 +0000 (17:38 +0000)]
Change the semantics of 'FontSpec' so that it's a dynamically
allocated type.

The main reason for this is to stop it from taking up a fixed large
amount of space in every 'struct value' subunion in conf.c, although
that makes little difference so far because Filename is still doing
the same thing (and is therefore next on my list). However, the
removal of its arbitrary length limit is not to be sneezed at.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9314 cda61777-01e9-0310-a592-d414129be87e

12 years agoWe shouldn't fork off a utmp helper subprocess when we aren't setuid,
simon [Mon, 19 Sep 2011 16:38:23 +0000 (16:38 +0000)]
We shouldn't fork off a utmp helper subprocess when we aren't setuid,
because (a) under that circumstance we won't be writing to utmp
anyway, and (b) if we aren't setuid, then we won't have created the
pty at the point we fork, so even if our subprocess _could_ have
written to utmp it wouldn't have done it right!

Spotted by valgrind (triggering on the access beyond the end of the
ttyname string in setup_utmp, clueing me in to it having been empty).

git-svn-id: svn://svn.tartarus.org/sgt/putty@9309 cda61777-01e9-0310-a592-d414129be87e

12 years agoAdd a missing initialisation to NULL.
simon [Mon, 19 Sep 2011 16:21:25 +0000 (16:21 +0000)]
Add a missing initialisation to NULL.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9308 cda61777-01e9-0310-a592-d414129be87e

12 years agoCope with XFontStructs having a NULL per_char array, which happened to
simon [Sat, 17 Sep 2011 14:50:18 +0000 (14:50 +0000)]
Cope with XFontStructs having a NULL per_char array, which happened to
me this morning under strange circumstances.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9303 cda61777-01e9-0310-a592-d414129be87e

12 years agoFix x11font_has_glyph so it doesn't get caught out by signed chars.
simon [Sat, 17 Sep 2011 08:11:11 +0000 (08:11 +0000)]
Fix x11font_has_glyph so it doesn't get caught out by signed chars.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9295 cda61777-01e9-0310-a592-d414129be87e

12 years agoSuppress Pango's bidi, by displaying RTL characters one at a time. I
simon [Fri, 16 Sep 2011 19:18:58 +0000 (19:18 +0000)]
Suppress Pango's bidi, by displaying RTL characters one at a time. I
hadn't previously noticed, but Pango was helpfully re-reversing text
that PuTTY's own bidi module had already reversed, leading to Arabic
text being wrongly displayed and also total chaos when you move the
cursor over it or try to cut and paste it.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9294 cda61777-01e9-0310-a592-d414129be87e

12 years agoSupport font fallback even when an X11 server-side font is selected,
simon [Fri, 16 Sep 2011 19:18:54 +0000 (19:18 +0000)]
Support font fallback even when an X11 server-side font is selected,
by introducing a wrapper around an individual unifont which falls back
to Pango (which already has built-in fallback) in the case where the
selected font doesn't support the glyph in question.

The wrapper itself is a (vestigial) subclass of unifont, to minimise
disturbance at the call sites.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9293 cda61777-01e9-0310-a592-d414129be87e