1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-10 18:07:59 +00:00
Commit Graph

3239 Commits

Author SHA1 Message Date
Simon Tatham
f07f782547 Prevent NULL-dereferencing segfaults when the font selector is
invoked with no valid font in the input text.

[originally from svn r7952]
2008-03-29 13:59:31 +00:00
Simon Tatham
0527d54f03 Richard B points out another thing for the overall GTK2 to-do list.
[originally from svn r7951]
2008-03-29 13:55:51 +00:00
Simon Tatham
05766d7214 Cosmetic polishing.
[originally from svn r7950]
2008-03-29 13:55:40 +00:00
Simon Tatham
cce6a5e2ec Detect non-monospaced X fonts, and respond by drawing text one
character at a time centred in its character cell, as we do for
Pango. Gives much better results for those non-monospaced fonts
which are usable as terminal fonts, and shows up the problems with
the others more readily. (In particular, this means the preview pane
in the font selector now warns you there will be trouble if you
select such a font.)

[originally from svn r7949]
2008-03-29 10:48:16 +00:00
Simon Tatham
115898b2a5 Add the rest of ASCII to the font preview window.
[originally from svn r7948]
2008-03-29 10:25:45 +00:00
Simon Tatham
6e6eae2506 When the user switches between fonts using the font family or style
selectors, preserve their most recent size selection as faithfully
as possible. We do this by having a secondary size variable
indicating what they _intend_, so we can come back to their intended
size even after going through a font which doesn't include it.

[originally from svn r7947]
2008-03-29 10:16:48 +00:00
Simon Tatham
d173eb52ea Improve the preview pane text.
[originally from svn r7946]
2008-03-28 20:08:12 +00:00
Simon Tatham
638e350e1f Move the font-preview updating code out into a separate function so
we can call it both when the drawing area changes size and when the
selected font changes. As a result, the preview pane doesn't start
off blank any more.

[originally from svn r7945]
2008-03-27 19:53:28 +00:00
Simon Tatham
bb80007da4 More consistent handling of X11 font aliases: we now don't resolve
them automatically. If the user selects an alias in the font
selector, they get that alias copied literally into the output font
name string; when they return to the font selector, the alias is
still selected. We still _can_ resolve aliases, but we only do it on
demand: double-clicking one in the list box will do the job.

[originally from svn r7944]
2008-03-27 19:41:08 +00:00
Simon Tatham
f0b78b8869 Tune the sorting of the style list box for X fonts.
[originally from svn r7942]
2008-03-26 21:33:10 +00:00
Simon Tatham
95a5116dbf Sort the styles of Pango font families into a sensible order,
instead of alphabetical order. This is more than cosmetic: it's
important because the first one in the list is selected by default.

[originally from svn r7941]
2008-03-26 20:20:25 +00:00
Simon Tatham
b4b9b8a00e Add ifdefs for older versions of GTK2 and Pango. Unfortunately, the
latter require manual input to the Makefile, since the Pango
developers in their unbounded wisdom (that is, unbounded below)
didn't bother to start providing the PANGO_VERSION macros until
release 1.16 - ten releases _after_ everything I'm trying to check!

[originally from svn r7940]
2008-03-26 18:30:20 +00:00
Simon Tatham
397dcf5bae Placate optimiser.
[originally from svn r7939]
2008-03-26 18:16:52 +00:00
Simon Tatham
82a586792f Unified font selector dialog box. _Extremely_ unfinished - there's a
sizable TODO at the top of gtkfont.c - but it's basically functional
enough to select fonts of both types, so I'm checking it in now
before I accidentally break it.

[originally from svn r7938]
2008-03-25 21:49:14 +00:00
Simon Tatham
debbee0fe4 Implemented a Pango back end. GTK 2 PuTTY can now switch seamlessly
back and forth between X fonts and Pango fonts, provided you're
willing to type in the names of the former by hand.

[originally from svn r7937]
2008-03-22 18:11:17 +00:00
Simon Tatham
93c6e2c987 Merge from trunk again (because I want the helpful diagnostic code
in r7934 on this branch). Now up to date as of r7934.

[originally from svn r7935]
[r7934 == 087adb167e]
2008-03-22 12:02:55 +00:00
Simon Tatham
087adb167e For convenience of debugging, and perhaps some real convenience at
some point too: introduce a bunch of environment variables which can
override Unix PuTTY's usual idea of where to find its dotfiles.
Setting PUTTYDIR moves the entire ~/.putty directory; setting
PUTTYSESSIONS, PUTTYSSHHOSTKEYS or PUTTYRANDOMSEED move specific
things within that directory.

While I'm here, also be prepared to fall back to password file
lookups if $HOME is undefined (though we still use $HOME in
preference when it is defined, because that's polite and useful).
Also, on general principles, tweak the make_filename() function
prototype so it doesn't rely on fixed-size buffers.

[originally from svn r7934]
2008-03-22 12:01:16 +00:00
Simon Tatham
71d802bdb6 Refactor the font handling code: I've moved all the code that
explicitly deals with GdkFont out into a new module, behind a
polymorphic interface (done by ad-hoc explicit vtable management in
C). This should allow me to drop in a Pango font handling module in
parallel with the existing one, meaning that GTK2 PuTTY will be able
to seamlessly switch between X11 server-side fonts and Pango client-
side ones as the user chooses, or even use a mixture of the two
(e.g. an X11 font for narrow characters and a Pango one for wide
characters, or vice versa).

In the process, incidentally, I got to the bottom of the `weird bug'
mentioned in the old do_text_internal(). It's not a bug in
gdk_draw_text_wc() as I had thought: it's simply that GdkWChar is a
32-bit type rather than a 16-bit one, so no wonder you have to
specify twice the length to find all the characters in the string!
However, there _is_ a bug in GTK2's gdk_draw_text_wc(), which causes
it to strip off everything above the low byte of each GdkWChar,
sigh. Solution to both problems is to use an array of the underlying
Xlib type XChar2b instead, and pass it to gdk_draw_text() cast to
gchar *. Grotty, but it works. (And it'll become significantly less
grotty if and when we have to stop using the GDK font handling
wrappers in favour of going direct to Xlib.)

[originally from svn r7933]
2008-03-22 11:40:23 +00:00
Simon Tatham
822628246e Merge out from trunk, to keep this branch viable. We are now up to
date as of r7913.

[originally from svn r7914]
[r7913 == d7eda6d99c]
2008-03-10 18:48:36 +00:00
Simon Tatham
d7eda6d99c Under OS X Leopard, we seem not to consistently get the Tab key
translated for us. Be prepared to do it manually as a fallback.

[originally from svn r7913]
2008-03-09 15:32:20 +00:00
Simon Tatham
4aa9b6a0da Fix a cursor positioning infelicity.
The scenario: I start a small, say 80x24, pterm. I do some work in
it, generating plenty of scrollback, and eventually I `less' a file.
`less' switches to the alt screen. Then I want more vertical space
to look at the file, so I enlarge the window to more like 80x60.
When I quit `less' and switch back to the primary screen, some
scrollback has been pulled down into the screen, as expected - but
the saved _cursor position_ is still at line 24, not at the bottom
of the new terminal where the prompt it goes with has moved to.

Solution: term_size() should adjust the alt-screen saved cursor
positions as well as the normal cursor position.

(Curiously, the problem doesn't happen on my home Debian box, even
without this fix. It happens on my RH9 box at work, though.)

[originally from svn r7911]
2008-03-07 18:30:37 +00:00
Jacob Nevins
9503c5e5c3 It's a new year (and we've even made a code checkin).
[originally from svn r7883]
[this svn revision also touched putty-website]
2008-02-24 00:16:29 +00:00
Jacob Nevins
98c0039a83 Attempt to clarify what the various IP version selection options do.
[originally from svn r7882]
2008-02-23 23:56:22 +00:00
Jacob Nevins
d6fdbfbd2f Tunnels: more explicit link from introductory to reference section.
[originally from svn r7880]
2008-02-23 22:00:48 +00:00
Simon Tatham
5e42fe8fc9 Aha, _that's_ why I've been periodically getting blocking-write
problems using Unix PuTTY port forwarding. Sockets we create by
connect() are immediately set into nonblocking mode by fcntl, but
sockets we create by accept() were not. This trivial fix should help.

[originally from svn r7864]
2008-02-21 09:18:24 +00:00
Jacob Nevins
c639a04a1f Update web-SVN URL for kh2reg.py.
[originally from svn r7843]
2008-02-10 14:00:51 +00:00
Jacob Nevins
d08f057f47 Typo in winadj@ name.
[originally from svn r7834]
2008-01-09 19:59:16 +00:00
Simon Tatham
c47a0a1f4e Make the text about our interest in new mirror sites significantly
less fluffy and welcoming.

[originally from svn r7824]
2007-12-20 11:03:45 +00:00
Simon Tatham
9024621b91 r7804 neglected to add a help context #define to winhelp.h.
[originally from svn r7815]
[r7804 == 1940b37ff0]
2007-12-15 10:41:40 +00:00
Ben Harris
b2b89061d3 Document maxpkt bug under garbled packet error message.
[originally from svn r7806]
2007-12-05 00:28:22 +00:00
Ben Harris
1940b37ff0 Add a new bug-compatibility mode that limits the window size we'll
advertise so that the server can't exceed our maximum packet size.
Enable it for "1.36_sshlib GlobalSCAPE" which apparently sends oversize
packets otherwise.

[originally from svn r7804]
2007-12-05 00:02:06 +00:00
Simon Tatham
020c481dd4 Duplicate r7795 in uxnet.c.
[originally from svn r7796]
[r7795 == 712b4689c8]
2007-11-28 20:45:50 +00:00
Simon Tatham
712b4689c8 sktree is indexed on the numeric value of the socket structure's
underlying WinSock SOCKET. Therefore, if we plan to modify the
SOCKET in a socket, we must remove it from the tree before doing so,
and put it back again afterwards. Otherwise it'll violate the tree's
sorting order, and sooner or later someone will try to find it and
get back NULL.

[originally from svn r7795]
2007-11-26 21:09:54 +00:00
Jacob Nevins
868208b8bd Reset mouse reporting mode as part of resetting the terminal.
[originally from svn r7773]
2007-10-27 16:05:02 +00:00
Jacob Nevins
439b72d947 Marc TERRIER pointed out a couple of places that claim there is an X11
forwarding checkbox on the Tunnels panel, which hasn't been the case for
a while.

[originally from svn r7771]
2007-10-19 21:47:47 +00:00
Ben Harris
ca2b97f1d0 Replace mentions of SSH-2 I-Ds with references to the corresponding RFCs.
[originally from svn r7759]
2007-10-03 21:21:18 +00:00
Ben Harris
f8e7894e15 snew() always returns non-NULL, so checking if its return value is NULL
is pointless.

[originally from svn r7758]
2007-10-03 21:06:00 +00:00
Ben Harris
4a9feea43d Factor out the increasingly complicated SSH-2 channel structure initialisation
into its own function.  Maintaining four copies was getting boring.

[originally from svn r7757]
2007-10-03 21:04:26 +00:00
Ben Harris
3c149087e4 Take the code that does flow control in SSH-1, and make it work in SSH-2
as well.  This won't be triggered in the usual case, but it's useful
if the remote end ignores our window, or if we're in "simple" mode and
setting the window far larger than is necessary.

[originally from svn r7756]
2007-10-03 20:29:27 +00:00
Ben Harris
ea9a3bdb7d More fixes to stdout and stderr. When the backlog on either clears, call
the backend's unthrottle function.  If we don't, we'll deadlock.  While
we're here, also pump as much data as possible out during each call to
try_output(), rather than restricting ourselves to a single call to
write().

[originally from svn r7755]
2007-10-02 21:43:53 +00:00
Ben Harris
241c53acea As far as I can see (at least in NetBSD) O_NONBLOCK and FIONBIO are equivalent,
except that O_NONBLOCK is standardised and FIONBIO isn't.  In consequence,
replace our only use of FIONBIO with O_NONBLOCK.

Inspired by Jonathan H N Chin, who had problems with this on Solaris.

[originally from svn r7753]
2007-10-02 21:07:52 +00:00
Ben Harris
2db59b7443 Rather than rejecting spurious SSH_MSG_CHANNEL_SUCCESSes, and ignoring
spurious SSH_MSG_CHANNEL_FAILUREs, treat them as the protocol errors
they are and forcibly disconnect.  Inspired by recent traffic on
comp.security.ssh.

[originally from svn r7752]
2007-10-01 21:11:11 +00:00
Ben Harris
da5d553afc Merge the looking up of channel numbers for SSH-2 channel messages into
a single function which also handles checking that channels exist and
are properly open.  This should make PuTTY a little less tolerant of
servers that send bogus messages.

[originally from svn r7751]
2007-09-30 19:42:31 +00:00
Ben Harris
ef370ee6fa Set cfg.ssh_simple if there are no forwardings.
[originally from svn r7750]
2007-09-30 14:14:29 +00:00
Ben Harris
c5996bcde5 When writing session data to stdout or stderr, switch the relevant file
descriptor into non-blocking mode temporarily, and correctly handle returns
of EAGAIN from write().  This should fix unix-plink-stdout-nonblock, while
avoiding EAGAIN turning up where we aren't expecting it.

[originally from svn r7748]
2007-09-30 12:45:49 +00:00
Ben Harris
17bc691cc2 Now that PuTTY is actually using names "@putty.projects.tartarus.org", it
seems like a good idea to document them.

[originally from svn r7747]
2007-09-29 14:20:55 +00:00
Ben Harris
faa6e26d38 Add support for resetting the terminal modes on stderr to something sensible
before printing error messages to it.  This should fix the stair-stepping
in Plink's progress messages.

[originally from svn r7745]
2007-09-29 12:27:45 +00:00
Ben Harris
38ee5fc58d My changes in r7738 (O_NONBLOCK for Unix Plink) were half-arsed, and
completely broke interactive logins.  The problem, or at least one of the
problems, was that in interactive use stdin, stdout, and stderr tend to be
the same file, so setting O_NONBLOCK on the latter two also sets it on the
former.  Thus, we need to cope with all of them being non-blocking.

[originally from svn r7742]
[r7738 == d0db31a1ca]
2007-09-24 21:43:48 +00:00
Ben Harris
57c3ac7f14 Manifest constants are good. Introduce plink to STD{IN,OUT,ERR}_FILENO,
TRUE, and FALSE.

[originally from svn r7741]
2007-09-24 21:31:45 +00:00
Ben Harris
d0db31a1ca stdout and stderr should be made O_NONBLOCK so that we don't end up blocking
the entire process because stdout is busy.

Arguably, this shouldn't apply to stderr when we're printing our own error
messages to it, but I'll leave that fix for another time.

[originally from svn r7738]
2007-09-24 19:26:08 +00:00