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

858 Commits

Author SHA1 Message Date
Jacob Nevins
e415865e58 Fix inability to save session on Unix when ~/.putty doesn't exist introduced
in r7934.

[originally from svn r8204]
[r7934 == 087adb167e]
2008-10-12 11:32:23 +00:00
Simon Tatham
4829802c43 Good grief. When I originally wrote the local proxy code two years
ago, I apparently caused all data received from local proxies to be
unconditionally tagged as TCP Urgent. Most network backends ignore
this, but it's critical to the Telnet backend, which will ignore all
Urgent-marked data in the assumption that there's a SYNCH on its way
that it should wait for. Nobody has noticed in two years, presumably
meaning that nobody has ever tried to do Telnet over a local proxy
in that time.

[originally from svn r8158]
2008-08-31 21:45:39 +00:00
Simon Tatham
0251dbf13e Colin Watson points out an apparently erroneous cast: Ssh_gss_name
and gss_name_t are supposed to be congruent types, so a pointer to
one should never be cast to a non-indirect instance of the other.

[originally from svn r8157]
2008-08-31 19:18:17 +00:00
Jacob Nevins
6e2bd31d32 Fix for portfwd-addr-family: on Unix, when a tunnel is specified as "Auto"
(rather than IPv4 or IPv6-only; this is the default), try to open up listening
sockets on both address families, rather than (unhelpfully) just IPv6. (And
don't open one if the other can't be bound, in a nod to CVE-2008-1483.)
Based on a patch from Ben A L Jemmett.

[originally from svn r8150]
[this svn revision also touched putty-wishlist]
2008-08-20 22:21:04 +00:00
Owen Dunn
de5dd9d65c Initial commit of GSSAPI Kerberos support.
[originally from svn r8138]
2008-08-10 13:10:31 +00:00
Jacob Nevins
f405259798 Cosmetic: use `appname' in more places, so that Unix PuTTYtel announces itself
thus.

[originally from svn r8075]
2008-06-15 13:26:08 +00:00
Simon Tatham
189c9a2a08 Work around a bug in early versions of GTK (which I'm still forced
to use, gah) in which the "model" argument to
gtk_tree_selection_get_selected_rows() couldn't be NULL.

[originally from svn r8069]
2008-06-11 18:03:35 +00:00
Simon Tatham
65ae6ba3d2 Manfred Schwarb points out that scroll wheel support stopped working
with the switch to GTK2. This turns out to be because, where GTK1
represented the scroll wheel as mouse buttons 4 and 5 and generated
GdkEventButton when it was moved, GTK2 has moved wheel actions out
into a new event type GdkEventScroll which we were not handling. Now
we do, so scroll wheel support should be back in place.

[originally from svn r8063]
2008-06-10 20:18:23 +00:00
Simon Tatham
b3c1438a31 Re-jig the combo box handling ifdefs so that we can compile with GTK
versions >= 2.0 (when the new list boxes came in) but < 2.4 (when
the new combo boxes came in). Since some combo boxes are handled
using the old list-box code, this means that the two lots of code
can both be compiled in at once in some situations!

[originally from svn r8031]
2008-05-31 19:23:45 +00:00
Simon Tatham
79f7249185 On some systems, strncpy is a macro, and putting preprocessor
directives in the middle of a macro invocation appears to be frowned
on. Irritating, but there we go.

[originally from svn r8026]
2008-05-31 13:29:32 +00:00
Simon Tatham
85c227326c Merge from trunk up to r8020.
[originally from svn r8021]
[r8020 == 14d825d42f]
2008-05-28 19:28:17 +00:00
Simon Tatham
14d825d42f OS X Leopard, it turns out, has a new and exciting strategy for
addressing X displays. Update PuTTY's display-name-to-Unix-socket-
path translation code to cope with it, thus causing X forwarding to
start working again on Leopard.

[originally from svn r8020]
2008-05-28 19:23:57 +00:00
Simon Tatham
cb18f9a6eb Oops; prevent further segfault during setup, which apparently only
show up when building without debugging...

[originally from svn r7991]
2008-04-14 18:00:57 +00:00
Simon Tatham
92caf21c2c Prevent assertion failure in the case where the user manipulates the
filter checkboxes to filter the currently selected font out of the
family list and then does something in one of the other list boxes
or the size edit box.

[originally from svn r7990]
2008-04-14 17:57:45 +00:00
Simon Tatham
6af8462765 Just noticed that selecting "client:Bitstream Vera Sans Mono 10" in
the font config box and then invoking the unifontsel causes the box
to come up empty rather than populated with that font. Turns out
that I completely forgot to have pangofont_canonify_fontname()
return the flags word, ahem.

[originally from svn r7988]
2008-04-13 07:48:10 +00:00
Simon Tatham
8ac9896853 In the new unified font handling, my strategy so far for combining
client- and server-side fonts into a single namespace was mainly to
hope there would naturally be no collisions, and to provide
disambiguating "client:" and "server:" prefixes for manual use in
emergencies.

Jacob points out, however, that his system not only has a namespace
clash but worse still the clash is at the name "fixed", which is our
default font! So, modify my namespace policy to use the
disambiguating prefixes everywhere by default, and use _unprefixed_
names only if the user types one in by hand.

In particular, I've changed the keys used to store font names in
Unix saved session files. Font names read from the new keys will be
passed straight to the new unifont framework; font names read from
the old keys will have "server:" prepended. So any existing
configuration file for GTK1 PuTTY should now work reliably in GTK2
PuTTY and select the same font, even if that font is one on which
your system (rather, your client+server combination) has a font
namespace clash.

[originally from svn r7973]
2008-04-05 13:37:20 +00:00
Simon Tatham
2503cd1861 Ensure the new depth' and treepath' structure fields in struct
selparam are always properly initialised.

[originally from svn r7972]
2008-04-05 12:53:32 +00:00
Simon Tatham
db281abd97 gtk_combo_box_get_active_text didn't appear until GTK 2.6; bodge
around it for earlier versions of GTK 2.

[originally from svn r7969]
2008-04-04 12:23:29 +00:00
Simon Tatham
ceb2a9b862 Fix the jarring change of window size on expanding the SSH branch of
the configuration tree.

[originally from svn r7968]
2008-04-04 11:37:06 +00:00
Simon Tatham
bfa9859f2a I apparently missed out a piece of code when doing the new GTK2 list
box: shortcut activations for list boxes are missing.

That's the last thing on the to-do list. We're now ready to merge
back to the trunk, given only some final testing!

[originally from svn r7967]
2008-04-04 11:02:26 +00:00
Simon Tatham
ee92c21e53 Reinstate all the GTK1-specific code under ifdefs, and verify that
we can now build and run successfully using both GTK1 and GTK2 by
giving appropriate options to make. (Specifically, to override the
default of GTK2 in favour of GTK1, "make GTK_CONFIG=gtk-config".)

[originally from svn r7966]
2008-04-04 10:56:26 +00:00
Simon Tatham
54e26eb7ef Rename a structure field to avoid clashing with one of the old GTK1
ones. (I'm going to merge the GTK1 list code back in under ifdefs,
and I want none of the disputed structure fields to have the same
names, so that I'll reliably be told by the compiler if I keep the
wrong piece of code outside the ifdef.)

[originally from svn r7965]
2008-04-04 10:16:24 +00:00
Simon Tatham
a128ee8588 Update autoconf for GTK 2. We now check for both GTK2 and GTK1, and
in the presence of GTK 2 we also check to see whether we have a
prehistoric Pango (since Pango itself helpfully doesn't provide that
functionality, bah).

[originally from svn r7964]
2008-04-02 17:32:17 +00:00
Simon Tatham
ed085ca824 Another tedious chore off the to-do list. I've just checked over my
custom Columns layout class to see what fiddly details of
GTK2isation were yet to be done. It turns out that all the basic
object management got moved out of GTK into a separate library, so
that all the gtk_object_* calls are deprecated and g_object_* should
be used instead; having done that, though, it all looks perfectly
fine.

[originally from svn r7962]
2008-04-02 17:04:21 +00:00
Simon Tatham
50d4d05679 TODO update: I don't think it's worth switching to GTK2's native
shortcut mechanism. The existing code doesn't use any deprecated
calls, and translating shortcut text _into_ Pango markup just sounds
too unpleasant to do if I don't actually have to. Not to mention
that the documentation for the Pango markup language doesn't tell me
how to distinguish a mnemonic underscore prefix from a literal
underscore in label text, but I know my current code can get that
right (the current config box talks about TCP_NODELAY and
SO_KEEPALIVE in widget labels that also have functioning shortcuts).

[originally from svn r7961]
2008-04-02 16:26:01 +00:00
Simon Tatham
29d875f7da Enable the display of server-side font aliases by default in my font
selector. I had previously been worried that the default of not
showing aliases interacted badly with the default actual font
_being_ specified as an alias. One of those defaults had to change,
and I've decided which: `fixed' is staying as Unix PuTTY's default
font in defiance of GTK2's vigorous encouragement of Pango.

[originally from svn r7960]
2008-04-02 14:50:47 +00:00
Simon Tatham
6a743399b0 Update all the list box code in gtkdlg.c to use the new-style GTK2
GtkTreeView, GtkComboBox and GtkComboBoxEntry instead of the various
old deprecated stuff. Immediate benefit: GTK2 natively supports real
drag lists, hooray!

[originally from svn r7959]
2008-04-02 14:48:06 +00:00
Simon Tatham
d2b4b4a9ef Explicit casts to placate OS X gcc's pedantic type-check warnings.
[originally from svn r7958]
2008-03-31 10:47:48 +00:00
Simon Tatham
6ef1fa7b1f I give up. I can't work out what the purpose of the call to
gtk_container_dequeue_resize_handler in request_resize() was;
everything seems to work fine without it. So I'm removing the
nonportable GTK 2 instance of it, and if anything ever goes wrong as
a result then I'll at least find out what the problem was.

[originally from svn r7957]
2008-03-29 20:02:12 +00:00
Simon Tatham
bef50d3fd2 Be more picky than Pango when validating a Pango font description
string. Without this, Richard B reports that Pango 1.18 will treat
_anything_ as valid, which means PuTTY can never fall back to X
fonts.

[originally from svn r7956]
2008-03-29 15:44:32 +00:00
Simon Tatham
9adbc97e91 TODO updates.
[originally from svn r7955]
2008-03-29 14:57:56 +00:00
Simon Tatham
c3dbd71f9d Aha, _that's_ why there was some unexplained space on the RHS of the
font selector: I had got the row and column counts in
gtk_table_new() back to front, so the space on the right was the
padding around five empty table columns! (And apparently a GtkTable
silently expands if you try to use rows that don't exist, which is
why I hadn't already noticed.)

Fixed that, and added some padding around the entire table. I think
my font selector is now finished, except for any bug fixes that come
up in testing.

[originally from svn r7954]
2008-03-29 14:54:55 +00:00
Simon Tatham
ae802c16d8 Deal with the possibility of no valid font being selected at all
during an entire run of unifontsel (because unifontsel_set_name was
either not called at all, or called with a name that didn't
correspond to any known font). In this situation we grey out the OK
button until a valid font is selected, and we have
unifontsel_get_name return NULL rather than failing an assertion if
it should be called in that state. The current client code in
gtkdlg.c should never encounter a NULL return, since it only calls
it after the OK button is clicked, but I've stuck an assertion in
there too on general principles.

[originally from svn r7953]
2008-03-29 14:21:25 +00:00
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
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
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
Simon Tatham
020c481dd4 Duplicate r7795 in uxnet.c.
[originally from svn r7796]
[r7795 == 712b4689c8]
2007-11-28 20:45:50 +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
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
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
Jacob Nevins
db7cc1cba6 Implement Marcin Bulandra's suggestion of only automatically updating the
port number in the GUI when the connection type is changed if the current
port number is the standard one for the current protocol.
It's not perfect, but it should make the common case of tabbing through the
Session panel easier when starting non-SSH connections on odd ports.

[originally from svn r7635]
2007-07-01 15:47:31 +00:00
Jacob Nevins
46c00b0f38 Rationalise access to, and content of, backends[] array.
Should be no significant change in behaviour.
(Well, entering usernames containing commas on Plink's command line will be
a little harder now.)

[originally from svn r7628]
2007-06-30 21:56:44 +00:00
Simon Tatham
7e4eb1f404 Patch from John Sullivan: process double-clicks in the session list
box on button-up rather than button-down. The effect of this is that
if a saved session is already selected in the list box and then you
double-click it, it will open rather than beeping annoyingly.

[originally from svn r7414]
2007-03-27 18:16:36 +00:00
Ben Harris
d1df3e226a Fix a stupid one-character typo that was breaking 256-colour support on GTK.
[originally from svn r7403]
2007-03-19 12:05:34 +00:00
Jacob Nevins
befd797f97 Since r7265, a user could not launch a PuTTY session to a specific host by
simply specifying a hostname on the command line -- this would bring up the
config dialog. Use a slightly more sophisticated notion of whether the user
meant to launch a session.

[originally from svn r7321]
[r7265 == 5d76e00dac]
2007-02-25 00:50:24 +00:00
Simon Tatham
b897c90dd3 Gareth pointed out yesterday that the Unix terminal front end treats
BELL_DISABLED as BELL_DEFAULT. How embarrassing.

[originally from svn r7316]
2007-02-24 13:36:11 +00:00
Jacob Nevins
c5374da822 Ctrl-Break now sends a Break signal (previously it was equivalent to Ctrl-C).
[originally from svn r7295]
[this svn revision also touched putty-wishlist]
2007-02-18 14:02:39 +00:00
Simon Tatham
5d76e00dac Avoid launching a session from the Default Settings, even if they do
represent a launchable session, unless the user can be construed to
have really meant it. This means:
 - starting up PuTTY when the Default Settings are launchable still
   brings up the config box, and you have to hit Open to actually
   launch that session
 - double-clicking on Default Settings from the config box will load
   them but not launch them.
On the other hand:
 - explicitly loading the Default Settings on the command line using
   `-load' _does_ still launch them.

[originally from svn r7265]
2007-02-10 17:02:41 +00:00
Simon Tatham
9c35141162 Ahem; other half of r7232...
[originally from svn r7233]
[r7232 == 6ee6a4d379]
2007-02-05 20:14:17 +00:00
Simon Tatham
6ee6a4d379 When calling TIOCSCTTY, it helps to pass it an fd that's still open,
instead of one we closed two lines earlier. I apparently broke this
in r7107.

[originally from svn r7232]
[r7107 == 32b25c13da]
2007-02-05 20:04:33 +00:00
Simon Tatham
b5df0a7732 Colin Watson has fixed the disgusting icons on GTK1. His patch
appears to merely fix the background colour (arranging for it to
have transparency rather than being on some kind of default grey
background), but it turns out to also fix the strange blurry
behaviour I see in the GNOME Taskbar, for no very obvious reason.

[originally from svn r7186]
2007-01-31 12:30:48 +00:00
Simon Tatham
12e019bafc Better not forget to make sure GTK1 doesn't break.
[originally from svn r7174]
2007-01-27 17:47:48 +00:00
Simon Tatham
1d829f97cc Move the TODO items from the top of gtkdlg.c into the main TODO file.
[originally from svn r7173]
2007-01-27 17:21:06 +00:00
Simon Tatham
0ed390d44a Changed my mind about r7164. Instead of checking for zero flags
inside one single uxsel front end, better to do it centrally and
avoid passing zero flags on to the front end in the first place. I'm
sure other similarly structured front ends could get confused by it
too.

[originally from svn r7171]
[r7164 == 65f9735b95]
2007-01-26 20:00:32 +00:00
Simon Tatham
13ad541cb5 Er, whoops. Remove two lines from a previous attempt at r7165, which
broke the build. Ahem.

[originally from svn r7166]
[r7165 == 6d81ee9cc0]
2007-01-26 08:03:07 +00:00
Simon Tatham
6d81ee9cc0 Collapse tree view branches deeper than level 2, bringing the GTK2
tree code into line with the GTK1.

[originally from svn r7165]
2007-01-26 08:01:47 +00:00
Simon Tatham
65f9735b95 Stop calling gdk_input_add() with a zero flags word. If we don't
want to know about any input events on a socket, it's simpler not to
call gdk_input_add() on it at all.

I hesitate to say `fixes', but ... this change _causes to go away_
the weird problem I had with blank host key dialogs. I have no
understanding of the chain of cause and effect between gdk_input_add
with zero flags and missing redraw events, but it seems like a
change I should make anyway, so I'm going to do so and hope the
problem doesn't come back :-/

[originally from svn r7164]
2007-01-26 07:28:55 +00:00
Simon Tatham
5d3306f98d Another TODO item. (There's always one.)
[originally from svn r7163]
2007-01-25 19:59:55 +00:00
Simon Tatham
c5953f1680 Begin tracking a TODO list for this branch.
[originally from svn r7162]
2007-01-25 19:56:05 +00:00
Simon Tatham
ac7870a635 A nasty GTK signal cascade was causing any edit box whose contents
was modified on session load to be blanked. More details in the
comment in dlg_editbox_set().

[originally from svn r7161]
2007-01-25 19:47:36 +00:00
Simon Tatham
a3da28f607 Fix the incorrect layout of the buttons at the bottom of the main
config box.

[originally from svn r7160]
2007-01-25 19:45:50 +00:00
Simon Tatham
35309b5683 Add Colin to the licence. (I must remember to add him to the licence
on the website, when we merge this back into the trunk.)

[originally from svn r7158]
2007-01-25 19:36:11 +00:00
Simon Tatham
d1d918b6f1 Commit Colin Watson's original GTK2 patch, exactly as mailed to me
on 1st January except that I've had to fiddle with it a bit to take
account of r7117 having happened since then.

[originally from svn r7157]
[r7117 == 174bb7f1fd]
2007-01-25 19:33:29 +00:00
Simon Tatham
7a4ef1491e The direct link between the terminal and the back end via
term_provide_resize_fn() was not being broken when the back end was
destroyed on session termination, causing resizing an inactive PuTTY
to be a segfault hazard.

[originally from svn r7143]
2007-01-24 13:53:28 +00:00
Ben Harris
003424de05 Don't use C99 mid-block declarations and don't do arithmetic on void *.
This helps with compilations on ancient Sun compilers.

[originally from svn r7126]
2007-01-20 14:13:57 +00:00
Simon Tatham
2dd7aba1e8 Add more ifdefs to make uxser.c compile on OS X.
[originally from svn r7118]
2007-01-16 19:26:24 +00:00
Simon Tatham
174bb7f1fd Fold up the `SSH' branch of the treeview by default; it's getting
quite big and tends to hide the existence of the `Serial' config
panel.

This is implemented by folding up every branch of depth 2 or more,
which with any luck might turn out to be general enough to carry
over unchanged if other branches start expanding. Then again, we may
have to fiddle with it again when that time comes; who knows?

[originally from svn r7117]
2007-01-16 18:48:47 +00:00
Simon Tatham
32b25c13da Remove the loops that close all open fds before running a
subprocess. They were intended to make sure the child process didn't
inherit anything embarrassing or inconvenient from us, such as the
master end of its own pty, but now we instead do this by making sure
to set all our own fds to not-FD_CLOEXEC on creation. This should
fix Debian bug #357520.

(This doesn't seem to work _quite_ right in uxproxy.c's invocation
of a local proxy command: both ends of a GTK internal pipe end up in
the child process's fd space. This appears to be another GTK 1 bug,
inasmuch as it goes away when I build with Colin's preliminary GTK 2
patch; for the moment I think leaving that pipe lying around is
probably less harmful than hampering the proxy process's ability to
use extra fds by prior arrangement with PuTTY's parent process.)

[originally from svn r7107]
2007-01-14 13:44:07 +00:00
Simon Tatham
4fa9564c90 Fix `puttygen-unix-perms': f_open(), PuTTY's wrapper on fopen, now
takes a third argument which is TRUE if the file is being opened for
writing and wants to be created in such a way that it's readable
only to the owner. This is used when saving private keys.

While I'm here, I also use this option when writing session logs, on
the general principle that they probably contain _something_
sensitive.

The new argument is only supported on Unix, for the moment. (I think
writing owner-accessible-only files is the default on Windows.)

[originally from svn r7084]
2007-01-09 18:14:30 +00:00
Simon Tatham
c1a9dbef13 Tweak the icon script, and the generated icons, to more closely
match the original icons. (Apparently I managed to introduce errors
while transcribing the originals for detailed analysis.)

While I'm at it, add the obviously useful `make install' target in
icons/Makefile, and fix the svn:ignore property on the icons
directory.

[originally from svn r7068]
2007-01-07 10:17:12 +00:00
Simon Tatham
334ef0824c No, I tell a lie: GTK 1 _does_ support icons, at least partially. Ooh.
[originally from svn r7064]
2007-01-06 18:27:00 +00:00
Jacob Nevins
55947f2346 It's a new year.
[originally from svn r7048]
[this svn revision also touched putty-website,puzzles]
2007-01-01 21:19:14 +00:00
Jacob Nevins
cd94e3bc3c Patch from Colin Watson intended to give a clean Unix compile with GCC 4.
(Since we choose to compile with -Werror, this is particularly important.)

I haven't yet checked that the resulting source actually compiles cleanly with
GCC 4, hence not marking `gcc4-warnings' as fixed just yet.

[originally from svn r7041]
2006-12-30 23:00:14 +00:00
Simon Tatham
9cea4aaf06 Colin Watson points out that there was no need for me to write the
custom Panels container widget for the PuTTY config box, since the
perfectly standard GtkNotebook does the same job. Hence, let's
remove Panels completely in favour of doing it the proper way.

[originally from svn r7034]
2006-12-29 14:35:34 +00:00
Ben Harris
86eac20abb Set FD_CLOEXEC in a little convenience function that does the right thing
with F_GETFD and F_SETFD.

[originally from svn r6978]
2006-12-09 15:44:31 +00:00
Simon Tatham
fd6d9bd677 I've just discovered that using the saved sessions menu from Unix
PuTTY causes the child process to inherit a lot of socket fds from
its parent, which is a pain if one of them then ends up holding open
a listening socket which the parent was using for port forwarding
after the parent itself is dead.

Therefore, this checkin sprinkles FD_CLOEXEC throughout the Unix
platform directory wherever there looks like being a long-lived fd.

[originally from svn r6917]
2006-11-23 14:32:11 +00:00
Simon Tatham
e9ce146b9f Disable a bunch of undesirable termios flags. ICRNL, in particular,
is liable to have been set on serial ports previously used as
terminal devices, and definitely wants not to be set on serial ports
being used for callout.

[originally from svn r6865]
2006-10-03 17:16:26 +00:00
Simon Tatham
1ee1d694cf IXON and IXOFF belong in _iflag_, not cflag! While I'm here, be more
reliable in clearing of RTS/CTS flags.

[originally from svn r6864]
2006-10-02 20:52:57 +00:00
Simon Tatham
16510bf3b9 Support for an alternative mechanism for displaying wide characters
under X: instead of having two separate fixed-width fonts one of
which is twice the width of the other, you can instead have a single
font in which some characters are twice as wide as others.

This is implemented very simply: if you specify a wide font, it will
be used for wide characters, and if you don't then the normal font
will be used for wide characters (so they'd better _be_ wide in that
font, or there'll be trouble).

I got this idea from Jed, whose latest version supports UTF-8 and
requires a font of this type. If there are going to be X fonts like
that kicking around, there will doubtless be people who want to use
them.

[originally from svn r6844]
2006-09-03 14:31:34 +00:00
Simon Tatham
bb6482c35d Explicitly closing logctx on various kinds of error exit means that
the log file gets fclosed properly and the critical last few
messages might be recoverable from the log file more often...

[originally from svn r6834]
2006-08-29 18:50:07 +00:00
Simon Tatham
088bc613ed Support for sending serial breaks, in both the Windows and Unix
serial backends.

[originally from svn r6832]
2006-08-29 18:20:57 +00:00
Simon Tatham
d38ea07616 Inhibit the Serial configuration panel in mid-session if the session
isn't a serial one. In particular, this causes pterm not to fail an
assertion if you select `Change Settings'. Ahem.

[originally from svn r6831]
2006-08-29 09:18:09 +00:00
Jacob Nevins
74278dcd64 Minor tweaks to -nc:
- log host:port in event log
 - add -nc to Plink usage message

[originally from svn r6825]
2006-08-28 17:47:43 +00:00
Simon Tatham
631b494807 New command-line option in Plink (and PuTTY, though it's less useful
there): `plink host -nc host2:port' causes the SSH connection's main
channel to be replaced with a direct-tcpip connection to the
specified destination. This feature is mainly designed for use as a
local proxy: setting your local proxy command to `plink %proxyhost
-nc %host:%port' lets you tunnel SSH over SSH with a minimum of
fuss. Works on all platforms.

[originally from svn r6823]
2006-08-28 15:12:37 +00:00
Simon Tatham
8c26b44ce6 Serial back end for Unix. Due to hardware limitations (no Linux box
I own has both an X display and a working serial port) I have been
unable to give this the full testing it deserves; I've managed to
demonstrate the basic functionality of Unix Plink talking to a
serial port, but I haven't been able to test the GTK front end. I
have no reason to think it will fail, but I'll be more comfortable
once somebody has actually tested it.

[originally from svn r6822]
2006-08-28 14:29:02 +00:00
Simon Tatham
34f747421d Support for Windows PuTTY connecting straight to a local serial port
in place of making a network connection. This has involved a couple
of minor infrastructure changes:
 - New dlg_label_change() function in the dialog.h interface, which
   alters the label on a control. Only used, at present, to switch
   the Host Name and Port boxes into Serial Line and Speed, which
   means that any platform not implementing serial connections (i.e.
   currently all but Windows) does not need to actually do anything
   in this function. Yet.
 - New small piece of infrastructure: cfg_launchable() determines
   whether a Config structure describes a session ready to be
   launched. This was previously determined by seeing if it had a
   non-empty host name, but it has to check the serial line as well
   so there's a centralised function for it. I haven't gone through
   all front ends and arranged for this function to be used
   everywhere it needs to be; so far I've only checked Windows.
 - Similarly, cfg_dest() returns the destination of a connection
   (host name or serial line) in a text format suitable for putting
   into messages such as `Unable to connect to %s'.

[originally from svn r6815]
2006-08-28 10:35:12 +00:00
Simon Tatham
c353c3cc97 The `socket' function in the backends is only ever checked to see if
it's NULL. Since we already have one back end (uxpty) which doesn't
in fact talk to a network socket, and may well have more soon, I'm
replacing this TCP/IP-centric function with a nice neutral
`connected' function returning a boolean. Nothing else about its
semantics has currently changed.

[originally from svn r6810]
2006-08-27 08:03:19 +00:00
Simon Tatham
92e75acbb5 Shifts left and right by 32 were tripping a gcc warning (fatal with
-Werror, of course) about shifting by more than the range of a data
type. They only appeared in `if' statements testing sizeof(off_t),
but gcc warns even when the code is unreachable. I've removed the
conditional code (the general case should still work even on 32-bit
machines), and hacked each shift by 32 into a pair of shifts by 16.

Note that the gcc warning is not just a helpful indication that you
may be using the wrong data type; it's actually pointing out ANSI-
undefined behaviour in shifting a signed integer beyond the size of
its type.

[originally from svn r6789]
2006-08-15 20:29:02 +00:00
Owen Dunn
33b7caa590 Large file support for psftp and pscp on both Windows and Unix. On Unix
we set _FILE_OFFSET_BITS to 64 on the compiler command line (via mkfiles.pl),
and on Windows we use SetFilePointer and GetFileSize to cope with 64-bit sizes
where possible.  Not tested on Win9x.

[originally from svn r6783]
2006-08-12 15:20:19 +00:00
Owen Dunn
8eef03a0b0 pty_init should put _something_ into realhost
[originally from svn r6679]
2006-05-12 11:02:28 +00:00
Jacob Nevins
0e621f9660 Fix minor memory leak.
[originally from svn r6611]
2006-03-14 22:01:27 +00:00
Jacob Nevins
23587e0731 Equivalent of r6583 window-border palette-change fix for Gtk.
[originally from svn r6609]
[r6583 == f9c1d0acf8]
2006-03-12 22:17:46 +00:00
Simon Tatham
3f6dfdaa61 David Damerell tells me I should be using Ctrl-hjklyubn rather than
Shift-hjklyubn for batch movement in NetHack, because they have
subtly different behaviour within the game and the Ctrl-moves are
more useful. Unfortunately, PuTTY's NetHack keypad mode doesn't
support Ctrl-moves. Therefore, it does now :-)

[originally from svn r6593]
2006-03-08 18:10:12 +00:00
Simon Tatham
be93024bf2 Do proper select-for-write on ptys. Currently, pasting a
sufficiently large string into pterm in any circumstances in which
it's echoed back to the terminal will cause a deadlock once the
pty's write buffer fills up.

[originally from svn r6582]
2006-02-23 13:38:44 +00:00
Jacob Nevins
dd73d2a836 Fix `restart-reset-terminal': terminal now restored to a sensible state when
reusing a window to restart a session.

[originally from svn r6577]
[this svn revision also touched putty-wishlist]
2006-02-19 14:59:48 +00:00
Jacob Nevins
5e59d81947 Fix up documentation/usage messages for r6572.
[originally from svn r6574]
[r6572 == c2b2d9c539]
2006-02-19 12:52:28 +00:00
Simon Tatham
c2b2d9c539 Introduce a new checkbox and command-line option to inhibit use of
Pageant for local authentication. (This is a `don't use Pageant for
authentication at session startup' button rather than a `pretend
Pageant doesn't exist' button: that is, agent forwarding is
independent of this option.)

[originally from svn r6572]
2006-02-19 12:05:12 +00:00
Owen Dunn
d526e3bb33 Preserve more attributes of text copied as RTF. Thanks to Stephen Balousek.
[originally from svn r6555]
2006-02-13 22:18:17 +00:00
Jacob Nevins
2e06985445 Failure to connect to a Unix-domain socket could cause a segfault. Fixed.
[originally from svn r6550]
2006-02-11 18:29:55 +00:00
Jacob Nevins
6a596c736a It's a new year.
[originally from svn r6513]
[this svn revision also touched halibut,putty-website,puzzles]
2006-01-08 18:18:11 +00:00
Simon Tatham
0a4b6612fb A few small changes to make the PuTTY source base more usable as a
basis for other terminal-involving applications: a stub
implementation of the printing interface, an additional function in
notiming.c, and also I've renamed the front-end function beep() to
do_beep() so as not to clash with beep() in lib[n]curses.

[originally from svn r6479]
2005-12-09 20:04:19 +00:00
Jacob Nevins
8719f92c14 Revamp SSH authentication code so that user interaction is more
abstracted out; replace loops structured around a single interaction
per loop with less tortuous code (fixes: `ki-multiprompt-crash',
`ssh1-bad-passphrase-crash'; makes `ssh2-password-expiry' and
`proxy-password-prompt' easier).

The new interaction abstraction has a lot of fields that are unused in
the current code (things like window captions); this is groundwork for
`gui-auth'. However, ssh.c still writes directly to stderr; that may
want to be fixed.

In the GUI apps, user interaction is moved to terminal.c. This should
make it easier to fix things like UTF-8 username entry, although I
haven't attempted to do so. Also, control character filtering can be
tailored to be appropriate for individual front-ends; so far I don't
promise anything other than not having made it any worse.

I've tried to test this fairly exhaustively (although Mac stuff is
untested, as usual). It all seems to basically work, but I bet there
are new bugs. (One I know about is that you can no longer make the
PuTTY window go away with a ^D at the password prompt; this should be
fixed.)

[originally from svn r6437]
[this svn revision also touched putty-wishlist]
2005-10-30 20:24:09 +00:00
Ben Harris
9d31462c52 Fix 256-colours-match-xterm, based on 256colres.pl from xterm-205.
Largely untested -- may not even compile on Windows.

[originally from svn r6393]
2005-10-13 21:56:43 +00:00
Simon Tatham
8cde1bc7fe dlg_listbox_select() now scrolls the list box to ensure that the
item it's just selected is visible.

[originally from svn r6338]
2005-09-21 17:09:07 +00:00
Ben Harris
f0dfa73982 AIX 5.1 has <utmpx.h> but no updwtmpx(). Treat the latter as a reason to
OMIT_UTMP.  Reported by Mike Protts.

[originally from svn r6311]
2005-09-14 11:00:34 +00:00
Ben Harris
3bfb6ad651 Some systems (HP-UX) don't yet have <sys/select.h>, putting select() in
<sys/time.h>.  Cope with this.  Where <sys/select.h> _is_ available, though,
use it (since it's where POSIX puts select()).  Problem reported by Mike
Protts.

[originally from svn r6310]
2005-09-14 10:53:39 +00:00
Ben Harris
059e409c82 The ANSI-C constant FILENAME_MAX is ludicrously small on some systems.
Use the POSIX PATH_MAX if it exists, and fall back to 1024 otherwise.
We should really allocate filenames dynamically if PATH_MAX isn't defined.

[originally from svn r6307]
2005-09-13 20:08:25 +00:00
Ben Harris
e115d1cc90 Some hosts don't have TIOCSCTTY. Don't try to use it on them.
Patch from Mike Protts.

[originally from svn r6306]
2005-09-13 19:57:37 +00:00
Ben Harris
4598889284 A couple of places in sk_newlistener were using AF_INET6 even with NO_IPV6.
Correct them.

[originally from svn r6305]
2005-09-13 19:54:01 +00:00
Jacob Nevins
36ff0a38f4 Patch from Colin Watson: we were sometimes passing stack storage to putenv(),
which is Bad (in his case, it caused TERM to end up unset). Use malloc()'d
storage instead.

[originally from svn r6095]
2005-07-15 11:47:28 +00:00
Ben Harris
ab855b74c5 Add experimental support for detecting BREAK on input and propagating it as
TS_BRK on output.  This is tested to the extent that other data survive the
escaping performed by PARMRK, at least on my system.  Actual passing on
of BREAK is as-yet untested.

[originally from svn r5779]
2005-05-14 22:01:10 +00:00
Jacob Nevins
1d4705d9c8 Make Makefile.gtk build again on Linux (assume <utmpx.h>).
[originally from svn r5764]
2005-05-09 13:27:51 +00:00
Simon Tatham
ea2cac08e9 Fix what looks like a cut-and-paste error which was stopping Unix
Plink building on MacOS X.

[originally from svn r5762]
2005-05-08 11:47:59 +00:00
Jacob Nevins
1f2f60de04 Correct apparent misspelling of `SIOCATMARK'.
[originally from svn r5749]
2005-05-05 22:47:30 +00:00
Ben Harris
61199b6a04 On monochrome displays, display the cursor in reverse video so that it's
visible on reversed out text.  This only applies to active block cursors for
now.

[originally from svn r5698]
2005-04-27 21:42:51 +00:00
Ben Harris
1aee4d81e0 Tiny manual CSE of previous commit.
[originally from svn r5697]
2005-04-27 21:22:40 +00:00
Ben Harris
5a980feac9 On 1bpp displays, ignore colour attributes. This makes pterm minimally useful
there, though (e.g.) switching to using reverse video for the cursor would
probably also help.  Displays with other silly depths (e.g. 2bpp) aren't
catered for, but I suspect they're rare in the X world.

[originally from svn r5696]
2005-04-27 21:09:45 +00:00
Ben Harris
7b72634c27 Make palette changes use "best match" colours too.
[originally from svn r5695]
2005-04-27 20:30:47 +00:00
Ben Harris
62cdb81e0a Rather than checking for <sys/sockio.h>, just include it if our other
attempts at finding SIOCATMARK have failed.  This removes one of our
Autoconf tests, which is always nice.

[originally from svn r5690]
2005-04-27 15:42:10 +00:00
Ben Harris
55865685a9 According to the termio(7I) on Solaris, OLCUC is overridden by OPOST, so we
should send it with the SSH terminal modes too.

[originally from svn r5680]
2005-04-26 00:03:50 +00:00
Ben Harris
12d8a02aad Squash OPOST locally when we're not in line-editing mode, and propagate
the other output flags with SSH.  This means that when I log into a remote
system using Plink and then run "stty -onlcr" I get the expected
stair-stepping.

[originally from svn r5679]
2005-04-25 23:57:45 +00:00
Ben Harris
62b943922e Use pututxline() in place of pututline(), since the former is standardised by
X/Open and actually seems to be more common (NetBSD has it).  Also use
updwtmpx() rather than directly writing to the wtmpx file, though more for
reasons of aesthetics than anything practical.

[originally from svn r5678]
2005-04-25 23:28:25 +00:00
Ben Harris
318913822d Ask GDK to give us reasonable approximations if it can't get precisely the
colours we asked it for.  This means that I can run pterm on an 8-bit
PseudoColor display even if I have another program running.

[originally from svn r5677]
2005-04-25 22:46:08 +00:00
Ben Harris
4cb79827c6 Check for <sys/sockio.h> and include it in uxnet.c if we find it. It's
necessary on Solaris if we want to use SIOCATMARK.  Using sockatmark() might
be preferable, but despite being notionally standard it's missing on
Solaris 9 and Mac OS X 10.3.9, whereas everyone seems to have SIOCATMARK
somewhere.

[originally from svn r5676]
2005-04-25 18:51:15 +00:00
Ben Harris
b0d3cceb99 uxpty.c uses non-X/Open facilities (notably strsignal()), so don't define
_XOPEN_SOURCE.  We do still need _GNU_SOURCE in order to get grantpt()
on GNU systems.  This allows uxpty.c to compile on NetBSD.

[originally from svn r5675]
2005-04-25 17:21:08 +00:00
Ben Harris
0227bfdbc7 Add a mechanism for using autoconf to detect the quirks of Unix systems
rather than relying on the user to edit the Makefile.  Makefile.gtk
still works as well as it ever did, but now we get a Makefile.in alongside
it.  mkunxarc.sh now relies on autoconf and friends to build the configure
script for the Unix source distribution.

[originally from svn r5673]
2005-04-25 15:55:06 +00:00
Ben Harris
38b266727a On some systems (NetBSD 1.6 and Solaris 9, at least), GCC doesn't understand
the semantics of assert(0) and believes it can return.  Add a gratuitous
exit(1) to convince it that this won't happen, and hence quell a couple of
warnings about variables' being used uninitialised.

[originally from svn r5669]
2005-04-24 14:43:00 +00:00
Jacob Nevins
fb581ac625 First crack at `terminal-modes' in SSH. PuTTY now sends ERASE by default,
Unix Plink sends everything sensible it can find, and it's fully configurable
from the GUI.

I'm not entirely sure about the precise set of modes that Unix Plink should
look at; informed tweaks are welcome.

Also the Mac bits are guesses (but trivial).

[originally from svn r5653]
[this svn revision also touched putty-wishlist]
2005-04-21 13:57:08 +00:00
Jacob Nevins
6eec320f0b Unify GET_32BIT()/PUT_32BIT() et al from numerous source files into misc.h.
I've done a bit of testing (not exhaustive), and I don't _think_ I've broken
anything...

[originally from svn r5632]
2005-04-12 20:04:56 +00:00
Jacob Nevins
62faf61d6e Oops, forgot to credit Ahmad Khalifa of arabeyes.org for the bidi/shaping work.
[originally from svn r5612]
[this svn revision also touched putty-website]
2005-04-07 12:00:01 +00:00
Jacob Nevins
52a17ab04a If a new session was saved from Change Settings, a side-effect on Windows was
that the global `sesslist' got out of sync with the saved-sessions submenu,
causing the latter to launch the wrong sessions.

Also, Change Settings wasn't getting a fresh session list, so if the set of
sessions had changed since session startup it wouldn't reflect that (at least
until a session was saved). Fixed (on all platforms).

Therefore, since the global sesslist didn't seem to be useful, I've got rid
of it; config.c creates one as needed, as do the frontends. (Not tried
compiling Mac changes.)

Also, we now build the saved-sessions submenu on demand on Windows and Unix.
(This should probably also be done on the Mac.)

[originally from svn r5609]
2005-04-07 01:36:28 +00:00
Ben Harris
96e9a65e99 NULL needs to be cast to void * when passed to a variadic function like
execl().  Spotted by Damien Miller.

[originally from svn r5592]
2005-04-04 13:44:45 +00:00
Simon Tatham
d0beed9aba Render timing.c robust in the face of strangeness. The strangenesses
in question vary per OS: on Windows the problem is that WM_TIMER
sometimes goes off too early, so that GetTickCount() is right and
the callback time is wrong, whereas on Unix the problem is that my
GETTICKCOUNT implementation comes from the system clock which means
it can change suddenly and non-monotonically if the sysadmin is
messing about (meaning that the timing of callbacks from GTK or
select timeouts is _more_ likely to be right than GETTICKCOUNT).
This checkin provides band-aid workarounds for both problems, which
aren't pretty but ought to at least prevent catastrophic assertion
failure.

[originally from svn r5556]
2005-03-28 17:48:24 +00:00
Jacob Nevins
2d379524c3 Since Markus Kuhn no longer explicitly places wcwidth.c in the public domain,
it'd probably be generous to list him in the copyrights.

[originally from svn r5548]
[this svn revision also touched putty-website]
2005-03-23 20:23:07 +00:00
Ben Harris
616f220472 Revert last change: Some versions of the GNU C Library (notably SUSE
glibc-2.3.3-118 and Debian libc6 2.3.2.ds1-20) have clock_gettime() and
CLOCK_MONOTONIC in their headers, but not in libc itself, which we can't
detect easily.

[originally from svn r5529]
2005-03-19 19:23:49 +00:00
Ben Harris
f812865ceb If it's available, try to use clock_gettime(CLOCK_MONOTONIC) rather than
gettimeofday(), since the former shouldn't warp when the user resets the clock.

[originally from svn r5528]
2005-03-19 19:02:53 +00:00
Jacob Nevins
36fc6c0a76 Try to make our PGP signing more useful:
* All the PuTTY tools for Windows and Unix now contain the fingerprints of
   the Master Keys. The method for accessing them is crude but universal:
   a new "-pgpfp" command-line option. (Except Unix PuTTYgen, which takes
   "--pgpfp" just to be awkward.)

 * Move the key policy discussion from putty-website/keys.html to
   putty/doc/pgpkeys.but, and autogenerate the former from the latter.
   Also tweak the text somewhat and include the fingerprints of the
   Master Keys themselves.
   (I've merged the existing autogeneration scripts into a single new
   one; I've left the old scripts and keys.html around until such time
   as the webmonster reviews the changes and plumbs in the new script;
   he should remove the old files then.)

[originally from svn r5524]
[this svn revision also touched putty-website]
2005-03-19 02:26:58 +00:00
Jacob Nevins
5aa719d16e Consistently use a single notation to refer to SSH protocol versions, as
discussed. Use Barrett and Silverman's convention of "SSH-1" for SSH protocol
version 1 and "SSH-2" for protocol 2 ("SSH1"/"SSH2" refer to ssh.com
implementations in this scheme). <http://www.snailbook.com/terms.html>

[originally from svn r5480]
2005-03-10 16:36:05 +00:00
Owen Dunn
c7e71fe2ec Protect against multiple Change Settings dialogues. We should probably also
arrange to switch to an existing Change Settings if the user selects the
menu item and we already have a Change Settings.

[originally from svn r5475]
2005-03-10 10:07:27 +00:00
Simon Tatham
f76c35b4b7 Make sure we do notify_remote_exit(ssh->frontend) _before_
connection_fatal(), since the latter is entitled to destroy the
backend so `ssh' may no longer be valid once it returns.

For the Unix port, switch exit(0) to gtk_main_quit() in
notify_remote_exit(), so that we don't exit before the subsequent
connection_fatal()!

[originally from svn r5445]
2005-03-05 17:56:28 +00:00
Simon Tatham
5c5dc61522 Fixes for NO_IPV6 compilation under Unix.
[originally from svn r5443]
2005-03-05 15:04:48 +00:00
Ben Harris
16c3026b28 Explicitly set MIN and TIME when in raw mode to request single characters
with no timeout.  This seems to make Plink work better on Solaris.

[originally from svn r5436]
2005-03-03 13:07:25 +00:00
Jacob Nevins
f538bd6d4c Make it clearer that `-m' is only usable with SSH.
[originally from svn r5416]
2005-03-01 00:33:18 +00:00
Simon Tatham
6d47285462 Fallout from my change in the semantics of cfg.remote_cmd_ptr.
Spotted by Alano na Alania.

[originally from svn r5386]
2005-02-23 09:25:39 +00:00
Simon Tatham
ee56a6b48f Remove the two logevent calls passing NULL as the first argument.
This was copied straight from winnet.c and I don't believe it's
_ever_ been valid in the Unix front end.

[originally from svn r5384]
2005-02-22 23:30:09 +00:00
Jacob Nevins
62f83a3666 Rearrange verify_ssh_host_key() for robustness in the face of strangeness, in
the same manner as windows/windlg.c (but tested this time :)

[originally from svn r5380]
2005-02-21 23:43:49 +00:00
Simon Tatham
f73fcb0424 Add asynchronous callback capability to the askappend() alert box.
This was harder than verify_ssh_host_key() and askalg() put
together, because:
 (a) askappend() can be called at any time, since it's a side effect
     of data-logging functions. Therefore there can be an unfinished
     askappend() alert at any time, and hence the OS X front end has
     to be prepared to _queue_ other alerts which occur during that
     time.
 (b) logging.c has to do something with data that comes in while
     it's waiting for an answer to askappend(). It buffers it until
     it knows what the user wants done with it. This involved
     something of a reorganisation of logging.c.

[originally from svn r5344]
2005-02-18 18:33:31 +00:00
Simon Tatham
8574822b9b Revamp interface to verify_ssh_host_key() and askalg(). Each of them
now returns an integer: 0 means cancel the SSH connection and 1
means continue with it. Additionally, they can return -1, which
means `front end has set an asynchronous alert box in motion, please
wait to be called back with the result', and each one is passed a
callback function pointer and context for this purpose.

I have not yet done the same to askappend() yet, because it will
take a certain amount of reorganisation of logging.c.

Importantly, this checkin means the host key dialog box now works on
OS X.

[originally from svn r5330]
2005-02-17 18:34:24 +00:00
Jacob Nevins
70de40ba0a Simon suggests a better solution to valgrind's complaining about
(struct Socket_tag).connected -- it should be entirely irrelevant to
listening sockets. Valgrind is still happy.

[originally from svn r5317]
2005-02-16 11:44:44 +00:00
Jacob Nevins
c9116974ac The terminal window can now indicate that PuTTY is busy in various ways, by
changing its mouse pointer. Currently this is only used in the (slightly-
arbitrarily-defined) "heavy" bits of SSH-2 key exchange. We override pointer
hiding while PuTTY is busy, but preserve pointer-hiding state.

Not yet implemented on the Mac.

Also switch to frobbing window-class cursor in Windows rather than relying on
SetCursor().

[originally from svn r5303]
2005-02-15 17:05:58 +00:00
Jacob Nevins
680869b866 Initialise (struct Socket_tag).connected in sk_register().
Again, the value could do with review.

[originally from svn r5300]
2005-02-14 15:30:09 +00:00
Jacob Nevins
01c4c363d9 Initialise (struct Socket_tag).connected in sk_newlistener() since Valgrind
complained.
(I _think_ this is the correct initialisation.)

[originally from svn r5299]
2005-02-14 15:03:32 +00:00
Simon Tatham
7109d413b4 Oh, and (there's always one) remove the unnecessary extra parameter
from unix_setup_config_box().

[originally from svn r5293]
2005-02-14 07:44:50 +00:00
Simon Tatham
b75856edfa Saw uxcfg.c in half down the middle, to separate out config changes
that apply to all Unix-like systems from those which apply
specifically to the GTK front end.

[originally from svn r5292]
2005-02-14 07:41:41 +00:00
Simon Tatham
471624882b Reinstate the broken -e option in pterm. Also I've just worked out a
much better way of handling pty_argv which doesn't require uxpty.c
to be linked in to Unix PuTTY and PuTTYtel.

[originally from svn r5262]
2005-02-06 15:52:00 +00:00
Simon Tatham
f5442209d4 Encapsulated most of the pty backend's variables into a proper data
structure, in preparation for wanting more than one of them in a
single process. This can't be done cleanly, because the whole
business with pty_pre_init pre-allocating the pty rather assumes we
want a known number of the things before we drop privileges; so
there's a horrid hack to make pty_pre_init work on platforms that
have at most one pty instance per process, but at the same time
things ought to work sensibly with more than one per process _if_
pty_pre_init isn't required.

[originally from svn r5261]
2005-02-06 15:14:34 +00:00
Simon Tatham
3fb9e2326d The pty backend won't _always_ be running under X, so it should be
possible to compile it without the WINDOWID variable.

[originally from svn r5259]
2005-02-06 13:33:41 +00:00
Simon Tatham
fd961b398a When allocating BSD-style ptys, we should not be satisfied with a
/dev/ptyXX we can open: we must also check that we can open and use
the corresponding /dev/ttyXX, because if it's been left in the wrong
mode then we will look terribly silly when we fork and _then_
discover our pty is unusable.

[originally from svn r5257]
2005-02-05 15:33:36 +00:00
Ben Harris
3d44cb23c8 Use AF_UNIX, not AF_LOCAL, since the former is in POSIX and the latter is not.
[originally from svn r5220]
2005-01-28 11:47:33 +00:00
Ben Harris
865fbaa8ce Overhaul of client-side XDM-AUTHORIZATION-1:
* Make sk_getxdmdata() return an arbitrary string rather than two integers.
  This better matches the spec, even if the current version always returns
  six bytes
* On Unix, for PF_UNIX sockets, return a counter rather than a constant along
  with the PID.  This should allow multiple clients to connect within one
  second, and is what Xlib does.
* On Unix, interpret AF_INET6 addresses like Xlib does, returning the
  embedded IPv4 address for v4-mapped addresses, and six bytes of zeroes
  otherwise.  The latter is silly, but if I'm going to do anything more sane
  I need to check that X servers won't reject it.

[originally from svn r5219]
2005-01-28 11:39:45 +00:00
Ben Harris
5e35aa383a Buffer overruns are embarassing (even if caused by user error), so assert
that this one can't happen until I actually fix it.

[originally from svn r5217]
2005-01-26 23:49:56 +00:00
Ben Harris
3f725a56ef Move sockaddr_is_loopback() to before sk_address_is_local(), and define the
latter in terms of the former.  Also adjust the definition of
ipv4_is_loopback() to avoid using the non-standard inet_netof() and
IN_LOOPBACKNET, and move it next to its remaining uses.

[originally from svn r5215]
2005-01-26 20:18:33 +00:00
Ben Harris
15e7d71f39 When checking if a connection comes from localhost, don't assume it's an IPv4
connection.  Instead, correctly check IPv4 and IPv6 connections, assume that
AF_LOCAL is always local, and anything else is always remote.

This makes trivial local-to-remote forwarding work on my system.

[originally from svn r5180]
2005-01-23 14:31:08 +00:00
Ben Harris
30fae9ffcb When calling getaddrinfo() for a listening socket, pass in a suggested type
of SOCK_STREAM, since that's what we'll be using.

[originally from svn r5170]
2005-01-22 15:32:10 +00:00
Ben Harris
a54961fe87 Stupid typo, spotted by GCC.
[originally from svn r5168]
2005-01-22 15:20:35 +00:00
Ben Harris
258a87361a If getaddrinfo() fails, it's not safe to dereference the struct addrinfo* it
passes back to us, so don't.

[originally from svn r5167]
2005-01-22 15:19:21 +00:00
Ben Harris
961319c14c Dispose of a variable whose only use was being set to zero.
[originally from svn r5156]
2005-01-20 21:45:42 +00:00
Simon Tatham
f70efc5cc6 Support for falling back through the list of addresses returned from
a DNS lookup, whether they're IPv4, v6 or a mixture of both.

[originally from svn r5119]
[this svn revision also touched putty-wishlist]
2005-01-16 14:29:34 +00:00
Simon Tatham
8167dfd406 Rewrite of Unix sk_newlistener() which should fix any possible
problems involving trying to bind an IPv6 socket to an IPv4 address.

[originally from svn r5115]
2005-01-16 12:37:19 +00:00
Ben Harris
178a66ea0f Turn of ICRNL in the client tty when we're not in editing mode. This
means that we send literal CRs and let the remote pty layer work out what to
do with them, so that if it wants raw mode it can have it.

[originally from svn r5114]
2005-01-15 20:39:27 +00:00
Ben Harris
b4f0ffc2bf INADDR_NONE is nonstandard. Use (in_addr_t)(-1) instead.
[originally from svn r5109]
2005-01-14 19:28:18 +00:00
Simon Tatham
378dbbb06b sk_namelookup() on Unix was failing to translate from our platform-
independent ADDRTYPE_* constants to real AF_* ones, causing explicit
protocol specification to fail.

[originally from svn r5089]
2005-01-09 14:55:55 +00:00
Owen Dunn
06434ffc71 New function ltime() returns a struct tm of the current local time.
Fixes crashes when time() returns (time_t)-1 on Windows by using the
Win32 GetLocalTime() function.  (The Unix implementation still just 
uses time() and localtime().)

[originally from svn r5086]
2005-01-09 14:27:48 +00:00
Simon Tatham
3669401216 Having laboriously constructed a hints parameter for getaddrinfo, it
would help to _use_ it!

[originally from svn r5085]
2005-01-09 11:58:36 +00:00
Simon Tatham
e6dd93c25a Don't forget to initialise ret->ai to NULL in sk_nonamelookup. Was
causing segfaults in IPv6-enabled Unix PuTTY connecting through a
proxy when letting the proxy do the DNS.

[originally from svn r5064]
2005-01-04 17:39:35 +00:00
Ben Harris
8053aea360 If we're going to use select(), we need <sys/select.h>.
[originally from svn r5063]
2005-01-04 14:37:32 +00:00
Simon Tatham
b93e12d477 It's a new year!
[originally from svn r5061]
[this svn revision also touched putty-website]
2005-01-02 09:19:14 +00:00
Simon Tatham
c64ad3bb0c Rename some of the more stupidly named files in the Unix back end.
Notably pterm.c, which was a sensible name right at the start but
became a misnomer as soon as I created Unix PuTTY.

[originally from svn r5053]
2004-12-31 13:02:46 +00:00
Ben Harris
bb4b9039b4 If we're going to define _XOPEN_SOURCE, we should at least define it to a
version that includes putenv().  Make it 600 (the current one) for good
measure.

[originally from svn r5048]
2004-12-30 17:29:54 +00:00
Simon Tatham
6daf6faede Integrate unfix.org's IPv6 patches up to level 10, with rather a lot
of polishing to bring them to what I think should in principle be
release quality. Unlike the unfix.org patches themselves, this
checkin enables IPv6 by default; if you want to leave it out, you
have to build with COMPAT=-DNO_IPV6.

I have tested that this compiles on Visual C 7 (so the nightlies
_should_ acquire IPv6 support without missing a beat), but since I
don't have IPv6 set up myself I haven't actually tested that it
_works_. It still seems to make correct IPv4 connections, but that's
all I've been able to verify for myself. Further testing is needed.

[originally from svn r5047]
[this svn revision also touched putty-wishlist]
2004-12-30 16:45:11 +00:00
Simon Tatham
b0bf176dfb Loose end from r5031: the Kex panel should only be displayed in
mid-session if we are not using SSHv1. I've done this by introducing
a generic `cfg_info' function which every back end can use to
communicate an int's worth of data to setup_config_box; in SSH
that's the protocol version in use, and in everything else it's
currently zero.

[originally from svn r5040]
[r5031 == d77102a8d5]
2004-12-29 12:32:25 +00:00
Jacob Nevins
3c98d6e60d Add a preference list for SSH-2 key exchange algorithms, on a new "Kex" panel
(which will gain more content anon).

Retire BUG_SSH2_DH_GEX and add a backwards-compatibility wart, since we never
did find a way of automatically detecting this alleged server bug, and in any
case there was only ever one report (<3D91F3B5.7030309@inwind.it>, FWIW).

Also generalise askcipher() to a new askalg() (thus touching all the
front-ends).

I've made some attempt to document what SSH key exchange is and why you care,
but it could use some review for clarity (and outright lies).

[originally from svn r5022]
2004-12-23 02:24:07 +00:00
Jacob Nevins
a27ce0492b Fix line cursor colours (fallout from `256-colours'), on both Windows and Unix.
[originally from svn r5012]
2004-12-19 22:37:05 +00:00
Simon Tatham
b3b70d749f Jacob has pointed out why SIGCHLD was blocked, so I've updated the
comment when I unblock it in pty.c to reflect reality. Also I've
moved block_signal() out of pterm.c into signal.c, so I can
conveniently use it for unblocking SIGCHLD rather than having to
reinvent it in pty.c.

[originally from svn r5006]
2004-12-17 14:25:53 +00:00
Simon Tatham
ebf507497d Apparently SIGCHLD is blocked by default in processes run in a
pterm, which was breaking my bash job notification patch. This is
apparently not the case for xterm, so I've fiddled with it. Not
entirely sure _why_ it did this in the first place, but there we go.

[originally from svn r4997]
2004-12-17 09:43:09 +00:00
Simon Tatham
6c81ee6706 General mechanism for ensuring a dodgy SFTP server can't return
malicious filenames via FXP_READDIR.

[originally from svn r4995]
2004-12-16 19:36:47 +00:00
Simon Tatham
f1585f8f46 Jacob points out that I introduced a bug in PSFTP when I did the
timing shakeup: just running `psftp' caused the net/stdin select
loop (on both Unix and Windows) to get confused at the lack of any
network connection and give up immediately. Should now be fixed.

[originally from svn r4993]
2004-12-16 19:15:38 +00:00
Simon Tatham
a4fe439184 Implement mget and mput in PSFTP, supporting wildcards.
[originally from svn r4991]
[this svn revision also touched putty-wishlist]
2004-12-16 17:35:20 +00:00
Simon Tatham
6ef62aacfc Unix PSCP was tight-looping when connecting through a ProxyCommand.
Turned out that sk_localproxy_close() was closing the pipe fds
without removing them from the uxsel list.

[originally from svn r4965]
2004-12-10 11:41:14 +00:00
Owen Dunn
30e94b6a5c Fix segfault when HOME not set on Unix.
[originally from svn r4948]
2004-12-07 11:50:44 +00:00
Jacob Nevins
4cb0ead447 Another default-background fix for 256-colour mode
[originally from svn r4931]
2004-11-30 01:07:29 +00:00
Simon Tatham
0600e8cf75 Bah, there's always one thing I miss. Correct the background-colour
handling in Unix PuTTY.

[originally from svn r4918]
2004-11-28 15:18:23 +00:00
Simon Tatham
e4e10e494b Implement xterm 256-colour mode.
[originally from svn r4917]
[this svn revision also touched putty-wishlist]
2004-11-28 15:13:34 +00:00
Simon Tatham
92f3b101f5 Slight improvement to cursor blink timing: since the cursor doesn't
blink when the window doesn't have focus, we don't schedule blink
timers at that point either.

Infrastructure change: term->has_focus should now not be written
directly from outside terminal.c. Instead, use the function
term_set_focus, which will sort out the blink timers as well.

[originally from svn r4911]
2004-11-27 19:34:45 +00:00
Simon Tatham
7ecf13564a New timing infrastructure. There's a new function schedule_timer()
which pretty much any module can call to request a call-back in the
future. So terminal.c can do its own handling of blinking, visual
bells and deferred screen updates, without having to rely on
term_update() being called 50 times a second (fixes: pterm-timer);
and ssh.c and telnet.c both invoke a new module pinger.c which takes
care of sending keepalives, so they get sent uniformly in all front
ends (fixes: plink-keepalives, unix-keepalives).

[originally from svn r4906]
[this svn revision also touched putty-wishlist]
2004-11-27 13:20:21 +00:00
Simon Tatham
1aa64afc30 I think rjk meant setpgid', not setpgrp'.
[originally from svn r4897]
2004-11-24 11:42:45 +00:00
Simon Tatham
4f197b872e RJK's OS X portability patch:
- initialise blank mbstate_t using memset rather than an ad-hoc
   initialiser.
 - expand the OMIT_UTMP ifdefs to enclose a load of entire functions
   that would generate `static function never called' warnings if
   left as empty shells.
 - couple of other fiddly things.

[originally from svn r4896]
2004-11-24 11:36:08 +00:00
Jacob Nevins
739de21c6d console_get_line() returns failure iff console_batch_mode is set, whereas
before is would return success and the empty string. IMO this makes `-batch'
much more useful; before, utilities such as Plink in `-batch' mode would
attempt to plough on using empty strings for usernames, passwords, and so on.

[originally from svn r4832]
2004-11-19 21:05:31 +00:00
Simon Tatham
8a99993c88 Remove .cvsignore files on all active branches.
[originally from svn r4788]
[this svn revision also touched bmbm,caltrap,charset,enigma,filter,fonts,golem,grunge,halibut,html,lj,local,misc,polyhedra,putty-website,putty-wishlist,puzzles,pycee,sdlgames,svn-tools,timber,tweak]
2004-11-16 15:29:14 +00:00
Jacob Nevins
17b0d8c58e Support the SSH-2 mechanism for sending signals to a running session. Neither
of the SSH servers I conveniently have access to (Debian stable OpenSSH --
3.4p1 -- and lshd) seem to take a blind bit of notice, but the channel
requests look fine to me in the packet log.

I've included all the signals explicitly defined by
draft-ietf-secsh-connect-19, but I've put the more obscure ones in a submenu
of the specials menu; there's therefore been some minor upheaval to support
such submenus.

[originally from svn r4652]
2004-10-17 21:22:22 +00:00
Jacob Nevins
4482a79162 Telnet specials menu was not being reinstated after a session was restarted in
the same window (Windows version only).

Policy change: it's now the backend's responsibility to call
update_specials_menu() at the start of a session (or whenever it feels ready),
if it has any special commands. Otherwise the menu won't be displayed.

[originally from svn r4649]
2004-10-17 14:44:27 +00:00
Simon Tatham
1b3eb3e20d Markus Kuhn's UTF-8 page
http://www.cl.cam.ac.uk/~mgk25/unicode.html#activate
feels strongly that it should be easy to make _all_ your
applications work in UTF-8 mode, without having to remember a switch
for each one. Every application should simply note a UTF-8 locale
setting and switch into UTF-8 mode automatically.

Therefore, for the Unix port only, there's now a checkbox, enabled
by default, which causes the drop-down Translation box to be
overridden if the locale indicates UTF-8. Anyone who doesn't like
this, or doesn't like MGK, is welcome to turn it straight back off.

I'm not _completely_ convinced by MGK's argument myself; for
xterm/pterm to do _useful_ UTF-8 you also need to specify a decently
Unicode-capable font, and there's no way _that_ can be automagically
done on noticing a locale setting. But it's a de facto standard
(i.e. xterm does it :-) so I might as well at least be _able_ to
support it.

[originally from svn r4648]
2004-10-16 14:17:58 +00:00
Simon Tatham
859d92a577 Moved the environment variables config block out of the Telnet panel
into the Connection panel, and implemented support for the SSH2
"env" request. (I haven't yet found a server which accepts this
request, so although I've visually checked the packet log and it
looks OK, I haven't yet been able to do a full end-to-end test.)
Also, the `pty' backend reads this data and does a series of
`putenv' commands before launching the shell or application.

This is mostly because in last week's UTF-8 faffings I got
thoroughly sick of typing `export LANG=en_GB.UTF-8' every time I
started a new testing pterm, and it suddenly occurred to me that
this would be precisely the sort of thing you'd want to have pterm
set up for you, particularly since you can configure it alongside
the translation settings and so you can ensure they match up
properly.

[originally from svn r4645]
2004-10-16 10:56:54 +00:00
Jacob Nevins
94546cdc2a Mention plink's new -N option in usage and man page.
[originally from svn r4643]
2004-10-15 23:32:01 +00:00
Simon Tatham
aa3c6302b1 And fix _cursor_ display on double-width double-width characters (as
it were).

[originally from svn r4637]
2004-10-15 12:25:51 +00:00
Simon Tatham
4eef9ce190 Double-height and double-width line attributes (ESC#3, ESC#4, ESC#6)
were not working correctly with double-width Unicode characters (CJK).

[originally from svn r4636]
2004-10-15 12:17:48 +00:00
Simon Tatham
db54732e38 Fix cursor display on a combined character cell.
[originally from svn r4625]
2004-10-15 08:51:57 +00:00
Simon Tatham
089775eb02 First-stage support for Unicode combining characters. The `chars'
array of each `termline' structure now contains optional additional
entries after the normal number of columns, which are used to chain
a linked list of combining characters off any primary termchar that
needs it. This means we support arbitrarily many combining
characters per cell (unlike xterm's hard limit of 2).

Cut and paste works correctly (selecting a character cell containing
multiple code points causes all those code points to be cut and
pasted). Display works by simply overlaying all the relevant
characters on top of one another; this is good enough for Unix
(xterm does the same thing), and mostly seems OK for Windows except
that the Windows Unicode fonts have a nasty habit of not containing
most of the combining characters and thus overlaying an
unknown-code-point box on your perfectly good base glyph.

I had no idea how to add support in the Mac do_text(), so I've
simply stuck in an assertion that will trigger the first time a
combining character is displayed, and hopefully this will bite
someone with the clue to fix it.

[originally from svn r4622]
2004-10-14 16:42:43 +00:00
Simon Tatham
709a94e5f2 Re-engineering of terminal emulator, phase 1.
The active terminal screen is no longer an array of `unsigned long'
encoding 16-bit Unicode plus 16 attribute bits. Now it's an array of
`termchar' structures, which currently have 32-bit Unicode and 32
attribute bits but which will probably expand further in future.

To prevent bloat of the memory footprint, I've introduced a mostly
RLE-like compression scheme for storing scrollback: each line is
compressed into a compact (but hard to modify) form when it moves
into the term->scrollback tree, and is temporarily decompressed when
the user wants to scroll back over it. My initial tests suggest that
this compression averages about 1/4 of the previous (32 bits per
character cell) data size in typical output, which means this is an
improvement even without counting the new ability to extend the
information stored in each character cell.

Another beneficial side effect is that the insane format in which
Unicode was passed to front ends through do_text() has now been
rendered sane.

Testing is incomplete; this _may_ still have instabilities. Windows
and Unix front ends both seem to work as far as I've looked, but I
haven't yet looked very hard. The Mac front end I've edited (it
seemed obvious how to change it) but I can't compile or test it.

As an immediate functional effect, the terminal emulator now
supports full 32-bit Unicode to whatever extent the host platform
allows it to. For example, if you output a 4-or-more-byte UTF-8
character in Unix pterm, it will not display it properly, but it
will correctly paste it back out in a UTF8_STRING selection. Windows
is more restricted, sadly.

[originally from svn r4609]
2004-10-13 11:50:16 +00:00
Jacob Nevins
98028c746f X forwarding changes:
- new function platform_get_x_display() to find a sensible local display.
   On Unix, the Gtk apps weren't taking account of --display when
   determining where to send forwarded X traffic.
 - explicitly document that leaving X display location blank in config tries
   to do something sensible (and that it's now blank by default)
 - don't override X11Display setting in plink, since that's more properly
   done later

[originally from svn r4604]
2004-10-06 22:31:07 +00:00
Jacob Nevins
3a11379597 Line (as opposed to block) cursors were being displayed when they shouldn't
have been, including when they were blinked off. Fixes Debian bug #272877.

[originally from svn r4586]
2004-09-28 20:42:39 +00:00
Jacob Nevins
43c4ff62d7 ampersat-in-username': tweak strchr' to `strrchr' where necessary to
consistently support usernames containing `@'.

[originally from svn r4563]
2004-09-21 16:49:51 +00:00
Simon Tatham
5d5ffc274f Credit Malcolm Smith in the copyrights.
[originally from svn r4518]
2004-08-30 13:23:23 +00:00
Jacob Nevins
b892d14103 Patch to use enum constants for cfg.funky_type instead of numeric
literals, from "Anthony" <410C2A86.2010003@mail2004.ajrh.net>.

[originally from svn r4491]
2004-08-20 14:04:13 +00:00
Jacob Nevins
97fb4184d8 Fix an annoying inconsistency that's been bugging me for years: "plink host"
and "plink user@host" differed in that the former attempted to load session
`host' while the latter didn't. Now both forms attempt to load a session.
Someone will probably complain, but hey.

[originally from svn r4485]
2004-08-19 15:05:31 +00:00
Jacob Nevins
87ecc7e052 Remove claim in usage text that Plink defaults to SSH, since it's not true
in a number of situations.

[originally from svn r4484]
2004-08-19 13:15:02 +00:00
Jacob Nevins
df66432b5d Patch from Kurt Roeckx: apparently on Debian amd64, the ut_time member of
struct utmp is not equivalent to time_t (it's 32-bit). From Debian bug#265910.

[originally from svn r4459]
2004-08-16 09:38:12 +00:00
Simon Tatham
0047bbe70f Implement `Restart Session', in both Unix and Windows PuTTY. Largely
because Owen questioned whether it was really easy enough to be
labelled `fun' in the bug database :-)

[originally from svn r4453]
2004-08-14 13:04:18 +00:00
Simon Tatham
3b647115a5 Fix double-free in X selection code.
[originally from svn r4367]
2004-07-27 15:20:37 +00:00
Jacob Nevins
c2914f2191 Fix for `psftp-pscp-ignore-load': Default Settings is now loaded
before "-load" is processed so that it doesn't clobber it.

I've also changed the semantics of "-load" slightly for PSCP, PSFTP,
and Plink: if it's specified at all, it overrides (disables) the
implicit loading of session details based on a supplied hostname
elsewhere (on the grounds that the user is more likely to want the
"-load" session than the implicit session). (PuTTY itself doesn't do
implicit loading at all, so I haven't changed it.)

This means that all the PuTTY tools' behaviour is now consistent iff
"-load" is specified (otherwise, some tools have implicit-session, and
others don't).

However, I've not documented this behaviour, as there's a good chance
it will be swept away if and when we get round to sorting out how we
deal with settings from multiple sources. It's intended as a "do
something sensible" change.

[originally from svn r4352]
2004-07-25 14:00:26 +00:00
Jacob Nevins
20f433efac Add a configuration option for TCP keepalives (SO_KEEPALIVE), default off.
No very good reason, but I've occasionally wanted to frob it to see if it
makes any difference to problems I'm having, and it was easy.

Tested that it does actually cause keepalives on Windows (with tcpdump);
should also work on Unix. Not implemented on Mac (does nothing), but then
neither is TCP_NODELAY.

Quite a big checkin, much of which is adding `keepalive' alongside `nodelay'
in network function calls.

[originally from svn r4309]
2004-06-20 17:07:38 +00:00
Simon Tatham
a2acc6ae0d RJK's patch to enable PuTTY's X forwarding to connect to local X
servers using Unix sockets (on Unix only, obviously!).

[originally from svn r4263]
2004-05-31 14:01:52 +00:00
Simon Tatham
be5133f376 Arnaud Desitter points out a silly mistake in retrieve_cutbuffer()
(don't test for `int *nbytes' being <= 0, test for the integer it
points to being <= 0!).

[originally from svn r4254]
2004-05-24 11:30:15 +00:00
Simon Tatham
2ff7b4385f Fix indentation after Richard B's patch in rev 1.137 [r3409].
[originally from svn r4241]
[r3409 == 7798a59987]
2004-05-22 14:21:27 +00:00
Jacob Nevins
2b4e286954 Tweak documentation of -V option.
[originally from svn r4132]
2004-04-24 12:25:09 +00:00
Owen Dunn
6863377b72 Add -V for version information to plink, pscp, and psftp.
[originally from svn r4092]
2004-04-17 20:25:09 +00:00
Simon Tatham
ff6e3bc94d Now that Halibut is capable of generating man pages better than I
can do it by hand, I've converted the man page set from Unix PuTTY
into Halibut format, and enhanced the Makefile so it will build
them. At some future point this will also allow me to include the
man pages as an appendix in the main manual (once I _have_ a main
manual for Unix PuTTY).

[originally from svn r3966]
2004-03-24 19:36:04 +00:00
Jacob Nevins
e9ae739b9a Add (probably frustratingly) bare-bones man pages for pscp and psftp.
[originally from svn r3890]
2004-02-22 15:05:29 +00:00
Jacob Nevins
866cd6126c Fix typo in -C
[originally from svn r3887]
2004-02-22 14:40:40 +00:00
Jacob Nevins
a5ea485d0f Tart up, fix outright lies, mention web docs
[originally from svn r3886]
2004-02-22 14:37:54 +00:00
Jacob Nevins
c6d8ab8bd3 Remove claim that there's no Unix puttygen
[originally from svn r3860]
2004-02-13 00:21:35 +00:00
Jacob Nevins
5e2a33caec Patch from Theo Markettos: apparently "BSD-derived IP stacks fall over when
trying to bind to the localhost interface with a sockaddr_in which has non-zero
sin_zero fields." Zero sockaddr_in (and sockaddr_in6) before any use.

[originally from svn r3793]
2004-02-03 14:47:43 +00:00
Jacob Nevins
8472b1c8d7 Patch from Colin Watson: document pterm.WarnOnClose
[originally from svn r3792]
2004-02-03 14:36:01 +00:00
Simon Tatham
3f199bfe5c Add a man page for the new command-line PuTTYgen.
[originally from svn r3766]
2004-01-23 13:21:25 +00:00
Simon Tatham
2d1287b9ca Added a command-line key generation tool. Currently builds and runs
on Linux, but the (very few) platform-specific bits are already
abstracted out of the main code, so it should port to other
platforms with a minimum of fuss.

[originally from svn r3762]
2004-01-22 19:15:32 +00:00
Simon Tatham
4dec95f80f Theo Markettos's unsigned-vs-signed-char pedantry patch.
[originally from svn r3753]
2004-01-21 19:45:44 +00:00
Jacob Nevins
352ec6a486 `portfwd-loopback-choice' was not consistently documented.
- update usage info in tools
   - ack, plink is over 24 lines now
 - update man pages for Unix version
 - Doc changes:
   - move long description from (GUI) "config" to "using"
     - sorry if complete specification isn't what this section is meant for,
       but if you only read "using" it was hard to find.
   - ensure enough references to this made in other sections (GUI,
     command-line)
   - update instance of plink usage info

[originally from svn r3740]
2004-01-20 12:46:36 +00:00
Simon Tatham
2dd7514b07 Idiot me _twice_! The new store_host_key() was failing in the
absence of an existing host key file. Duhh.

[originally from svn r3737]
2004-01-19 09:37:17 +00:00
Simon Tatham
0f259c23ea Various uninitialised-variable accesses picked up by valgrind.
[originally from svn r3723]
2004-01-17 14:25:36 +00:00
Simon Tatham
276c8335af Idiot me! store_host_key() was blindly _appending_ new host keys to
the end of the host key file. This is perfectly all right if a host
key never changes, but it's completely useless if you need to
replace an existing entry. This version should do better.

[originally from svn r3719]
2004-01-17 13:00:18 +00:00
Simon Tatham
2817a7e150 It's a new year.
[originally from svn r3679]
[this svn revision also touched putty-website]
2004-01-01 16:47:55 +00:00
Simon Tatham
d76a39d547 Close the host keys file after use. Well spotted Theo Markettos.
[originally from svn r3526]
2003-10-31 21:45:15 +00:00
Jacob Nevins
f2676b6ccc Remove dead comment about writing settings, and query one about reading them.
[originally from svn r3507]
2003-10-14 21:01:12 +00:00
Jacob Nevins
8e2fd15bd5 Remove all the "assert(len>0)" which forbade zero-length writes across the
from_backend() interface, after having made all implementations safe against
being called with len==0 and possibly-NULL/undefined "data".

(This includes making misc.c:bufchain_add() more robust in this area.)

Assertion was originally added 2002-03-01; e.g., see plink.c:1.53 [r1571].

I believe this now shouldn't break anything.

This should hopefully make `ppk-empty-comment' finally GO AWAY. (Tested
with Unix PuTTY.)

[originally from svn r3500]
[r1571 == fdbd697801]
2003-10-12 13:16:39 +00:00
Jacob Nevins
dbe68abfff Add pscp to .cvsignore
[originally from svn r3443]
2003-09-03 18:37:35 +00:00
Simon Tatham
f6835045f8 Include stdlib.h for exit() - thanks Colin.
[originally from svn r3436]
2003-09-02 09:52:13 +00:00
Simon Tatham
b104be3b00 Remove CRs. Oops :-/
[originally from svn r3435]
2003-09-02 09:00:35 +00:00
Jacob Nevins
4eff79612a Minimal fixes to minimal plink man page.
[originally from svn r3428]
2003-08-29 19:41:57 +00:00
Jacob Nevins
2504a53d72 Add "-s" option to Unix plink too.
Compiled, but not tested as Unix plink seems to be segfaulting today.

[originally from svn r3427]
2003-08-29 19:21:49 +00:00
Simon Tatham
d1e9569b05 ... and there's a Unix port of PSCP. Ooh.
[originally from svn r3422]
2003-08-25 14:30:59 +00:00
Simon Tatham
bfb9b28393 Windows PSCP now links against winsftp.c, and scp.c is now a
platform-independent source file. Haven't yet added the extra
abstraction routines to uxsftp.c to create a Unix PSCP port, but it
shouldn't take long.
Also in this checkin, a change of semantics in platform_default_s():
now strings returned from it are expected to be dynamically allocated.

[originally from svn r3420]
2003-08-25 13:53:41 +00:00
Simon Tatham
66fa6f320e And just to prove that psftp.c really is now platform-independent
... here's a Unix port of PSFTP. Woo. (Oddly PSCP looks to be
somewhat harder; there's more Windows code interleaved than there
was in PSFTP.)

[originally from svn r3419]
2003-08-24 13:22:17 +00:00
Simon Tatham
46f26ee483 Richard B's patch to enable users to explicitly request shadow bold
by disabling bold-font-name guessing (if their bold fonts are ugly).
I've turned the UI inside out, but the meat is pretty much the same.

[originally from svn r3410]
2003-08-21 18:39:17 +00:00
Simon Tatham
7798a59987 Richard B's patch to support X cut buffers as well as ordinary
selections, meaning that (a) a pterm can leave copied text in the
cut buffer after it terminates so that applications can pick it up
even though it isn't still around to deliver the selection in
person, and (b) pterm can pick up things left in this way by other
apps.
Downside is that all of this only happens in ISO8859-1, because X is
weird like that.

[originally from svn r3409]
2003-08-21 18:07:27 +00:00
Simon Tatham
11c9c018ec Richard Boulton's patch for improved correctness in selection
handling (generally, selection request timestamps should be set to
the timestamp on the event that caused them).

[originally from svn r3408]
2003-08-21 18:03:06 +00:00
Jacob Nevins
92db92af5a Control of 'addr' is now handed over to {platform_,}new_connection() and
sk_new() on invocation; these functions become responsible for (eventually)
freeing it. The caller must not do anything with 'addr' after it's been passed
in. (Ick.)

Why:
A SOCKS5 crash appears to have been caused by overzealous freeing of
a SockAddr (ssh.c:1.257 [r2492]), which for proxied connections is
squirreled away long-term (and this can't easily be avoided).

It would have been nice to make a copy of the SockAddr, in case the caller has
a use for it, but one of the implementations (uxnet.c) hides a "struct
addrinfo" in there, and we have no defined way to duplicate those. (None of the
current callers _do_ have a further use for the SockAddr.)

As far as I can tell, everything _except_ proxying only needs addr for the
duration of the call, so sk_addr_free()s immediately. If I'm mistaken, it
should at least be easier to find the offending free()...

[originally from svn r3383]
[r2492 == bdd6633970]
2003-08-07 16:04:33 +00:00
Owen Dunn
10d4930b09 Implement hostkey-prompt-type everywhere except Macintosh.
[originally from svn r3307]
2003-06-26 14:19:33 +00:00
Simon Tatham
d49e6e1476 Real COMPOUND_TEXT support! I was expecting to have to read the spec
and implement the required subset of ISO-2022 in libcharset, but it
turns out that Xlib provides conversion functions between UTF-8 and
compound text, which are just about ideal for us. So now we can
paste multilingual stuff both to and from emacs21. Rock on.

[originally from svn r3193]
2003-05-13 19:57:17 +00:00
Simon Tatham
ef2ccb56cf Allow pterm to receive selections in compound text format. Doesn't
actually _understand_ compound text yet - anything with
non-ASCII-or-8859-1 characters will fail miserably - but it will at
least successfully receive plain text if the pasting application
doesn't see fit to give it out in any other format.

[originally from svn r3192]
2003-05-13 18:43:30 +00:00
Simon Tatham
99bef3d3cf Debian bug #193013 points out that the (default-)one-pixel border is
not redrawn when the window background colour is reconfigured mid-
session. In addition, the Official Window Background is not reset,
meaning that opaque resizes etc will flicker in the old background
colour. This checkin should fix both.

[originally from svn r3190]
2003-05-13 18:14:14 +00:00
Simon Tatham
f2834e065d Brief man pages for PuTTY and PuTTYtel.
[originally from svn r3188]
2003-05-11 14:32:43 +00:00
Simon Tatham
0b166ad0f8 Missing full stop.
[originally from svn r3187]
2003-05-11 14:19:57 +00:00
Simon Tatham
f36cd3a7f8 Some time ago I arranged for -geometry to be able to specify window
position as well as size. Now reflected in manpage.

[originally from svn r3186]
2003-05-11 14:19:17 +00:00
Simon Tatham
80c3a23abc I think I've just fixed Debian bug #166396. The +ut option was
causing pty_utmp_helper_pipe to be closed, but its fd was kept
around even when stale, and closed again when the main child process
terminated - by which time the fd number had been reused for a
rather more vital fd, which GTK didn't appreciate having closed
under its feet. Hence, spin on POLLNVAL. Should now be sorted.

[originally from svn r3185]
2003-05-11 12:28:53 +00:00
Simon Tatham
2715630ac1 Remove the now incorrect `Unicode is not supported' from the bugs in
the pterm man page :-)

[originally from svn r3176]
2003-05-10 10:15:36 +00:00
Simon Tatham
4b5ce3f46f pterm will now attempt to guess suitable names for any missing fonts
from the ones given; so it'll ask for a font twice as wide as your
base one if you don't specify a wide font, it'll ask for a bolded
version of your base font if you don't specify a bold font, and
similarly for a wide/bold font. Should solve Debian bug #187389; at
least it works for me.

[originally from svn r3175]
2003-05-10 10:15:00 +00:00
Simon Tatham
a2b8d10cd3 pterm's manpage now documents the NoRemoteQTitle resource. Should
fix the other half of Debian bug #191751.

[originally from svn r3174]
2003-05-10 09:06:00 +00:00
Simon Tatham
724fee3dca Stupid braino in get_window_title (thanks Colin): window and icon
titles were being reported the wrong way round. Should fix half of
Debian bug #191751.

[originally from svn r3173]
2003-05-10 09:05:41 +00:00
Simon Tatham
9a242f06ba Fixes for Debian bug #192701 (64-bit gccs warn about casts between
ptrs and ints of different size and -Werror makes this serious).
The GTK bits are done by Colin's patch to use GINT_TO_POINTER
(thanks); the uxnet bits are done by cleaning up the rest of the
code. In particular, network.h now typedefs `OSSocket' to be a type
capable of holding whatever the OS's socket data type is that
underlies our socket abstraction. Individual platforms can make this
typedef themselves if they define OSSOCKET_DEFINED to prevent
network.h redoing it; so the Unix OSSocket is now int. Default is
still void *, so other platforms should be unaffected.

[originally from svn r3171]
2003-05-10 08:35:54 +00:00
Simon Tatham
6b362191f1 Bah. Stop the Proxy panel appearing empty in Change Settings. One
day I'll make a reasonably big checkin and _not_ have six tiny mop-
up issues after it...

[originally from svn r3169]
2003-05-07 13:14:48 +00:00
Simon Tatham
8460ecd27d Yesterday's proxy enhancements also slightly nadgered the config
box, in that it started to expand under the weight of proxy options.
Now fixed, by folding the SOCKS version selector into the general
proxy type selector so there's one single 5- or 6-way radio button
set split over two lines. settings.c has of course grown a backwards
compatibility wart to deal with legacy config data.

[originally from svn r3168]
2003-05-07 12:07:23 +00:00
Simon Tatham
24d6da8041 Reinstate `-T title', in pterm only.
[originally from svn r3165]
2003-05-06 19:55:00 +00:00
Simon Tatham
03fa61025b Support, on Unix only (so far), for OpenSSH-style generic proxying
(running a local command in a pair of pipes and proxying through
that, for example `ssh proxyhost nc -q0 %host %port').

[originally from svn r3164]
2003-05-06 19:52:31 +00:00
Owen Dunn
5e36ac8d67 Update to use -title rather than -T
[originally from svn r3163]
2003-05-06 08:43:11 +00:00
Simon Tatham
6bb121ecb9 Colin's const-fixing Patch Of Death. Seems to build fine on Windows
as well as Unix, so it can go in.

[originally from svn r3162]
2003-05-04 14:18:18 +00:00
Simon Tatham
f6a208fbdd First half of `pageant-async' work. agent_query() is now passed a
callback function; it may return 0 to indicate that it doesn't have
an answer _yet_, in which case it will call the callback later on
when it does, or it may return 1 to indicate that it's got an answer
right now. The Windows agent_query() implementation is functionally
unchanged and still synchronous, but the Unix one is async (since
that one was really easy to do via uxsel). ssh.c copes cheerfully
with either return value, so other ports are at liberty to be sync
or async as they choose.

[originally from svn r3153]
2003-04-28 11:41:39 +00:00
Simon Tatham
2e2b6d89bd Add puttytel binary to .cvsignore
[originally from svn r3152]
2003-04-27 11:11:35 +00:00
Simon Tatham
082cf832c5 Support for non-ISO-8859-1 X keysyms. So in particular, pterm in a
Euro-supporting font with a Euro-enabled X key map will now actually
generate a Euro character rather than shrugging and doing nothing.

[originally from svn r3151]
2003-04-27 11:10:48 +00:00
Simon Tatham
1f5780ad9f Remove the TODO comment at the top of uxputty.c; I'm now not aware
of anything that makes the Unix port of PuTTY proper significantly
unfinished. That's quite a milestone :-)

[originally from svn r3148]
2003-04-26 14:37:49 +00:00
Simon Tatham
79426308bf Finer granularity of config box handling. SSH packet logging should
now not show up when it's meaningless (in PuTTYtel, in pterm, and
in the middle of any non-SSH session), and the Connection panel is
inhibited completely in pterm.

[originally from svn r3146]
2003-04-26 14:35:34 +00:00
Simon Tatham
3a3e4d1818 Make the `vtmode' config option work under X. In the process I've
had to move another of its values out into wincfg.c - paradoxically,
this was the `font has X encoding' option! (Because the Unix font
handling code expects to be able to tell for _itself_ whether it has
a font with X-encoded line drawing glyphs.)

[originally from svn r3145]
2003-04-26 14:22:42 +00:00
Simon Tatham
88e0914f91 Aha, _that's_ why the icon title didn't work properly in pterm:
gtk_window_set_title() overwrote both titles at once. Icon title is
now working properly under X, and since X was the reason for the
whole icon/window title separation _anyway_ they default to being
separate.

[originally from svn r3144]
2003-04-26 13:55:47 +00:00
Simon Tatham
426dc87712 Don't block SIGPIPE until _after_ pterm forks, since otherwise the
blockage will propagate to the child process.

[originally from svn r3139]
2003-04-25 15:44:01 +00:00
Simon Tatham
041dcfd83d Unix makefile now uses -O2, which massively cuts down key exchange
time. This gives rise to a whole bunch of spare warnings, one or two
of which might have been actual bugs; now all resolved.

[originally from svn r3134]
2003-04-23 13:48:09 +00:00
Simon Tatham
ec3595f7d4 Removing items from a list box using gtk_container_remove is nasty,
because when the selected item is removed the selection moves on to
another item. Thus, calling dlg_listbox_clear causes repeated
selchanges in the list, which in turn cause repeated valchanges if
the list is attached to a combo box. This has been completely
scuppering the Translation panel.

[originally from svn r3130]
2003-04-18 09:14:54 +00:00
Simon Tatham
22d8cfe36f Missed out a couple of uxsel_tell() which were hanging forwarded X
connections in at least some situations. Oops.

[originally from svn r3128]
2003-04-18 09:00:37 +00:00
Ben Harris
d66a1d685f Replace use of FIONBIO with POSIX-approved O_NONBLOCK (set using fcntl()).
This should save us having to worry about different OSs' defining it in
different headers.

[originally from svn r3126]
2003-04-16 23:58:59 +00:00
Ben Harris
e7c7f5e3f8 Make IPv6 support for Unix work, and make it a lot simpler in the process.
At the moment, we have to assume that getaddrinfo() will only return AF_INET
and AF_INET6 addresses, since we patch in the port number into the sockaddr
later.  Fixing this is probably best done by redesigning the PuTTY network
abstraction a little.

[originally from svn r3125]
2003-04-16 23:33:44 +00:00
Simon Tatham
214b306909 Support for New Session, Duplicate Session and the Saved Sessions
submenu in Unix PuTTY, and Duplicate Session also in pterm. You do
_not_ want to know how this is done. Be warned.

[originally from svn r3110]
2003-04-12 17:37:15 +00:00
Simon Tatham
eaaef4573c Further fiddlings with the size reconfiguration stuff; now
everything seems to work right even when the only thing changed was
the window border.

[originally from svn r3109]
2003-04-12 11:03:44 +00:00
Simon Tatham
a9b6ceb700 Mid-session reconfiguration of scrollback was failing (in Unix)
except when width or height had _also_ been changed. Fixed.

[originally from svn r3108]
2003-04-12 10:44:14 +00:00
Simon Tatham
56a4e967da Implement the ldisc `special' mechanism in Unix, without which local
line editing didn't work at all.

[originally from svn r3107]
2003-04-12 09:27:56 +00:00
Simon Tatham
bc4e41154a Close On Exit and Warn On Close fixes: (a) pty_reconfig needs to
remember changes in COE so it knows whether to print a message, and
(b) once the session has already ended, Warn On Close should shut up.

[originally from svn r3102]
2003-04-12 08:27:03 +00:00
Simon Tatham
c16bde1741 When I implemented the GTK messagebox() function and everything that
needed to use it, I completely forgot about askappend(). D'oh.

[originally from svn r3101]
2003-04-11 18:44:05 +00:00
Simon Tatham
d93f7113d1 Rationalisation of the system of frontend handles. Most modular bits
of PuTTY (terminal, backend, logctx etc) take a `void *' handle
passed to them from the frontend, and used as a context for all
their callbacks. Most of these point at the frontend structure
itself (on platforms where this is meaningful), except that the
handle passed to the backend has always pointed at the terminal
because from_backend() was implemented in terminal.c. This has
finally bitten Unix PuTTY, because both backend and logctx have
been passing their respective and very different frontend handles to
logevent(), so I've fixed it.
from_backend() is now a function supplied by the _frontend_ itself,
in all cases, and the frontend handle passed to backends must be the
same as that passed to everything else. What was from_backend() in
terminal.c is now called term_data(), and the typical implementation
of from_backend() in a GUI frontend will just extract the terminal
handle from the frontend structure and delegate to that.
This appears to work on Unix and Windows, but has most likely broken
the Mac build.

[originally from svn r3100]
2003-04-11 18:36:27 +00:00
Simon Tatham
8e3c37d309 Implement Warn On Close.
[originally from svn r3099]
2003-04-11 18:15:47 +00:00
Simon Tatham
ed46f3aa53 `Copy All' ought to de-highlight any existing selection, in line
with any other operation that shifts the X selection to stuff other
than the highlighted text.

[originally from svn r3098]
2003-04-11 18:10:13 +00:00
Simon Tatham
1be4188a3c `Copy All' context-menu item, for what it's worth.
[originally from svn r3097]
2003-04-11 17:59:36 +00:00
Simon Tatham
1be575d9c4 Saving of Default Settings under Unix was broken, because mungestr()
was translating NULL into "Default Settings" but not doing the same
to "". Now fixed.

[originally from svn r3096]
2003-04-11 17:42:52 +00:00
Simon Tatham
d710c84dec Cutting and pasting from the Unix Event Log.
[originally from svn r3095]
2003-04-11 17:40:52 +00:00
Simon Tatham
2e1503e520 Implemented Change Settings under Unix. We are gradually getting there.
[originally from svn r3092]
2003-04-10 18:00:50 +00:00
Simon Tatham
f03cf02cc8 All the stderr messages in this file now use appname rather than
guessing wrongly.

[originally from svn r3089]
2003-04-10 11:57:11 +00:00
Simon Tatham
406d2d8a32 Minor improvements to subsidiary window placement; with any luck the
Event Log should go off the side of the screen rather less often now.

[originally from svn r3088]
2003-04-10 08:53:43 +00:00
Simon Tatham
b49980b953 Event Log for Unix PuTTY. Doesn't yet allow X selection of its
contents, and doesn't automatically maintain scroll position at the
bottom when new entries are added while the list is open, but it's a
start.

[originally from svn r3087]
2003-04-09 18:46:45 +00:00
Simon Tatham
98a608c2e4 Rename pterm's -T option to -title, to avoid clashing with PuTTY's
-T (don't allocate a pty) option.

[originally from svn r3079]
2003-04-08 14:02:34 +00:00
Simon Tatham
fe666b2432 While writing gtkdlg.c I learned how to specify a window's initial
position in GTK, so I can now implement the other half of -geometry
which I'd previously believed to be impossible in GTK. It's still
not perfect, because GTK apparently provides no way for us to get
hold of the X reparent event in order to support negative geometries
in a manner which takes account of the WM borders; but for positive
position it's at least an improvement on the previous version!

[originally from svn r3078]
2003-04-08 13:49:12 +00:00
Simon Tatham
b0ee81ab32 Now that we have `appname', make much wider use of it. In
particular, the config box uses it in place of the word `PuTTY',
which means mid-session reconfig in pterm will look less strange
once I implement it. Also, while I'm at it, I've personalised all
the dialog boxes and menu items and suchlike so that PuTTYtel
actually claims to be PuTTYtel rather than PuTTY.

[originally from svn r3074]
2003-04-06 14:11:33 +00:00
Simon Tatham
cf08c5a64a Fixed the printing and charset combo boxes in Unix PuTTY. (The
former by simply removing it; the latter by adding an enumeration
function to libcharset.) This has had slight `const' repercussions
on cp_name() and cp_enumerate() which might break the Mac build.

[originally from svn r3064]
2003-04-05 16:36:11 +00:00
Simon Tatham
09c9f31289 Unix can't sensibly enumerate printers (since they're defined as
being lpr commands), so the Unix config box now replaces the printer
combo box with an ordinary edit box.

[originally from svn r3063]
2003-04-05 16:12:52 +00:00
Simon Tatham
30497ff683 Ctrl+rightclick now pops up a context menu in Unix PuTTY and pterm.
This menu is not yet fully populated, but it has an About box (yet
another licence location :-/ ) and supports the new configurable
specials menu (thus making Unix PuTTY do one tiny thing which
OpenSSH-in-a-pterm can't :-).

[originally from svn r3062]
2003-04-05 16:05:00 +00:00
Simon Tatham
8a3ff2bf3e Dynamic port forwarding by means of a local SOCKS server. Fully
supports SOCKS 4, SOCKS 4A and SOCKS 5 (well, actually IPv6 in SOCKS
5 isn't supported, but it'll be no difficulty once I actually get
round to it). Thanks to Chas Honton for his `stone soup' patch: I
didn't end up actually using any of his code, but it galvanised me
into doing it properly myself :-)

[originally from svn r3055]
2003-04-05 11:45:21 +00:00
Simon Tatham
3bd0415579 Turned the old `Telnet Command' System-submenu into a more general
`Special Command' menu, in which any backend can place its own list
of magical things the user might want to ask the backend to do. In
particular I've implemented the recently proposed "break" extension
in SSH2 using this mechanism.
NB this checkin slightly breaks the Mac build, since it needs to
provide at least a stub form of update_specials_menu().

[originally from svn r3054]
2003-04-04 20:21:05 +00:00
Simon Tatham
a05d4fdbd0 Further .cvsignore updates.
[originally from svn r3044]
2003-04-02 09:14:38 +00:00
Simon Tatham
6504c5c894 Improvements to .cvsignore, to attempt to reduce the huge number of
? lines I see when running `cvs update', which in turn might help
deal with my tendency to forget to `cvs add' new files before a big
checkin :-)

[originally from svn r3042]
2003-04-02 08:44:05 +00:00
Simon Tatham
7706da5e17 Various error-handling fixes, mostly in Unix PuTTY but one (failure
to save a session) crosses over into the platform-independent side.

[originally from svn r3041]
2003-04-01 18:10:25 +00:00
Simon Tatham
ec6d5edb62 Trivial segfault fix from Richard B.
[originally from svn r3036]
2003-03-31 12:57:36 +00:00
Simon Tatham
2487fdd9b4 Ahem; update the TODO to reflect the cmdline changes :-)
[originally from svn r3035]
2003-03-31 12:11:21 +00:00
Simon Tatham
62844b4590 Support for PuTTY-style command-line arguments in Unix PuTTY. I
think it's now actually usable as a day-to-day SSH client, even if
things like the Event Log are still missing. So I call that a decent
lunch hour's work :-)

[originally from svn r3034]
2003-03-31 12:10:53 +00:00
Simon Tatham
3a41ec782e And everyone's favourite cosmetic change: Unix PuTTY now doesn't
claim to be pterm in the window title :-)

[originally from svn r3032]
2003-03-31 11:42:45 +00:00
Simon Tatham
0ec4f0620d Can now save and load settings under Unix.
[originally from svn r3031]
2003-03-31 11:36:14 +00:00
Simon Tatham
a7e6d60915 Fix a _very_ subtle segfault in my two GTK container classes: the
`forall' function has to be prepared for the list of widgets to
change along the way if (for example) the callback function destroys
its input widget.

[originally from svn r3029]
2003-03-31 11:22:06 +00:00
Simon Tatham
823f52c540 Checkin of last night's work on GTK message boxes. Unix PuTTY now
has proper GUI prompts for host keys etc, so it should now be usable
without a controlling tty.

[originally from svn r3028]
2003-03-31 11:21:07 +00:00
Simon Tatham
a3428ae953 Having created and used uxsel, it actually turns out to be
practically trivial to put all the pieces together and create a
working prototype of Unix PuTTY! It's missing a lot of things -
notably GUI request boxes for host keys and logfiles and so forth,
the Event Log, mid-session reconfiguration, session loading and
saving, sensible population of the character sets drop-down list and
probably other fiddly little things too - but it will put up a
config box and then create a GUI window containing an SSH connection
to the host you specified, so it's _basically_ there. Woo!

[originally from svn r3020]
2003-03-29 19:52:50 +00:00
Simon Tatham
5107780c54 pterm now uses the new uxsel module, so it's one step closer to
being able to be a PuTTY as well as a pterm. In the process I've
also moved icky things like actually reading from the pty fd and
printing the `terminated on signal' messages into pty.c where they
obviously should have been in the first place. Also there's been one
interesting repercussion in the terminal code: terminal.c's
from_backend now calls term_out() directly rather than expecting the
front end to call it afterwards. This has had the entertaining side
effect of fixing a Windows-specific bug whereby activity in a port
forwarding through a PuTTY with a blinking cursor caused the cursor
to blink to ON (!!!!). So, a surprisingly far-reaching checkin as it
turns out...

[originally from svn r3017]
2003-03-29 18:30:14 +00:00
Simon Tatham
b109918032 Added uxsel.c, into which I've moved those parts of the uxnet.c
functionality that deal with selectable fds in general. The idea is
that pty.c will stop passing its fd straight to pterm.c and hand it
to this module instead, and pterm.c will start requesting a general
list of fds from this module rather than expecting a single one from
pty.c, with the ultimate aim of pterm.c being able to form the basis
of a Unix PuTTY as well as pterm proper.

[originally from svn r3015]
2003-03-29 16:47:06 +00:00
Simon Tatham
d36a4c3685 Introduced wrapper macros snew(), snewn() and sresize() for the
malloc functions, which automatically cast to the same type they're
allocating the size of. Should prevent any future errors involving
mallocing the size of the wrong structure type, and will also make
life easier if we ever need to turn the PuTTY core code from real C
into C++-friendly C. I haven't touched the Mac frontend in this
checkin because I couldn't compile or test it.

[originally from svn r3014]
2003-03-29 16:14:26 +00:00
Ben Harris
c8c17d2cef Rename dlg_listbox_addwithindex() to dlg_listbox_addwithid(), since the old
name was, not to put too fine a point on it, wrong.

[originally from svn r2997]
2003-03-25 23:45:56 +00:00
Simon Tatham
c42085dc89 Various cosmetic fixes to the GTK config box: vertical alignment of
edit box labels, Left/Right on the treeview to collapse and expand
branches, a window title, and the best treatment of wrapping text
widgets I could think of within the product-order-oriented GTK
layout model. I think this thing is now pretty much as good as it's
going to get before GTK v2 (which should fix one or two remaining
minor nasties which I really couldn't be bothered to work around in
GTK 1.2), so the next step is to actually start _using_ it.

[originally from svn r2979]
2003-03-22 17:00:06 +00:00
Simon Tatham
3100306c90 Better appearance and positioning for dlg_error_msg box, and also
I've just found out that it's easy to ask for the config box to be
centred on the screen by default, which is kinda cool.

[originally from svn r2962]
2003-03-18 19:47:28 +00:00
Simon Tatham
4d41247cde Big sprawling dialog-box commit covering all sorts of things.
Buttons now have an `iscancel' flag to go with `isdefault';
dlg_last_focused() now explicitly passes the control it _doesn't_
care about (`I want the last control that had focus and isn't this
one'); and in the GTK implementation, various fixes have happened,
notably including arrow keys working sensibly in list boxes and the
treeview and short font aliases being expanded correctly to
initialise the font selectors.

[originally from svn r2958]
2003-03-18 19:06:51 +00:00
Simon Tatham
f9f695b72a Further work on the GTK config box; mostly implemented keyboard
shortcuts now (only treeviews and list boxes to go, which currently
do very weird things and I need to overhaul them completely).

[originally from svn r2944]
2003-03-16 12:37:48 +00:00
Simon Tatham
b4e7ec8b12 Fixed accelerator clash in the Unix-specific config, since gtkdlg.c
is now competent to detect them :-)

[originally from svn r2943]
2003-03-16 12:36:33 +00:00
Simon Tatham
d681abb508 When a piece of text overflows its column in a tabbed list box, I
think on balance I rather like the natural behaviour of the way I've
done it, except that non-zero separation between the columns would
be even nicer. Accordingly, here is some.

[originally from svn r2940]
2003-03-15 15:56:51 +00:00
Simon Tatham
6a67fdc0cc Event handling in the GTK dialog engine is now basically present and
correct. All the callbacks are getting called, all the dialog
actions are working (the port forwarding, colour and charclass
configurers are all completely functional), file, font and colour
selectors happen, and it's all looking pretty cool.

[originally from svn r2938]
2003-03-15 15:50:42 +00:00
Simon Tatham
fca92a5b43 Continuing work on the GTK config box. Created uxcfg.c for the
Unix-specific config items; moved a stray Windows-specific config
item (scrollbar-in-fullscreen) out into wincfg.c to stop it
appearing on Unix; continued updates to gtkdlg.c. I now believe the
GTK config box looks basically correct (modulo minor cosmetic issues
and keyboard accelerators). Next step, add the event handling so
it's actually functional.

[originally from svn r2933]
2003-03-14 18:35:01 +00:00
Simon Tatham
df85003ea5 First stab at a GTK layout engine. It's missing all sorts of stuff
(list boxes are particularly conspicuously absent), it has no event
handling at all, and it isn't in any way integrated into pterm - you
have to build it specially using the test stubs in gtkdlg.c. But
what there is so far seems to work plausibly well, so it's a start.
Rather than browbeat the existing GTK container/layout widgets into
doing what I wanted, I decided to implement two subclasses of
GtkContainer myself, which implement precisely the layout model
assumed by the config box specification; this has the rather cool
consequence that the box can be resized and will maintain the same
layout at all times that it would have had if initially created at
that size.

[originally from svn r2931]
2003-03-13 19:52:28 +00:00
Simon Tatham
73203bce79 Never pass a `char' to a ctype function. I had relied on gcc -Wall
letting me know about instances of this, but it turns out that my
ctype.h explicitly casts input values to `int' to evade the
`subscript has type char' warning, so it had been carefully not
letting me know! Found them all by compiling with a doctored
ctype.h, and hopefully fixed them all too.

[originally from svn r2927]
2003-03-11 09:30:31 +00:00
Simon Tatham
6f693ffeb0 Reorganisation of misc.c: Minefield has moved out to winmisc.c, and
so has the Windows dputs() - which has also acquired a Unix
counterpart in uxmisc.c. -DDEBUG should now work on Unix.

[originally from svn r2914]
2003-03-06 13:24:02 +00:00
Simon Tatham
83da92826e Richard B's patch to add WINDOWID support to pterm.
[originally from svn r2912]
2003-03-06 12:57:37 +00:00
Simon Tatham
bd16b29a7a Oops, Ben is quite right about the rather appalling design of
filename_from_str. Here's a better fix, with some const
repercussions too.

[originally from svn r2768]
2003-02-01 17:24:27 +00:00
Simon Tatham
f26b7aa0d3 Created new data types Filename' and FontSpec', intended to be
opaque to all platform-independent modules and only handled within
per-platform code. `Filename' is there because the Mac has a magic
way to store filenames (though currently this checkin doesn't
support it!); `FontSpec' is there so that all the auxiliary stuff
such as font height and charset and so on which is needed under
Windows but not Unix can be kept where it belongs, and so that I can
have a hope in hell of dealing with a font chooser in the forthcoming
cross-platform config box code, and best of all it gets the horrid
font height wart out of settings.c and into the Windows code where
it should be.
The Mac part of this checkin is a bunch of random guesses which will
probably not quite compile, but which look roughly right to me.
Sorry if I screwed it up, Ben :-)

[originally from svn r2765]
2003-02-01 12:54:40 +00:00
Simon Tatham
52882fa006 And another bit missing from the settings changes: pterm's platform
default for CloseOnExit was encoded wrongly. Hopefully this should
be everything now; I'm really starting to get sick of picking up the
pieces after my two checkins yesterday. Perhaps I should have waited
until I had a brain before doing them in the first place.

[originally from svn r2746]
2003-01-28 12:06:37 +00:00
Simon Tatham
c370336a92 xterm apparently supports ESC[90m through ESC[97m to set bright
foreground colours, and ESC[100m through ESC[107m to set bright
background colours. Hence, so do we. Bright-foreground is
distinguishable from bold, and bright-background distinguishable
from blink, when it leaves terminal.c; the front end may then choose
to display them in the same way if it's configured to do so. This
change makes the xterm backend for Turbo Vision (!!!) work properly.
Untested on Mac.

[originally from svn r2734]
2003-01-27 23:03:31 +00:00
Simon Tatham
6aa4211f6e Remove all `enum'-typed variables from the Config structure.
Everything in there which is integral is now an actual int, which
means my forthcoming revamp of the config box will be able to work
with `int *' pointers without fear of doom.

[originally from svn r2733]
2003-01-27 18:02:24 +00:00
Simon Tatham
063469571a Fix Unix breakage from term_mouse() revamp too.
[originally from svn r2723]
2003-01-25 16:23:48 +00:00
Ben Harris
af4be2e83e Change the term_mouse interface a little so that it gets passed
both the raw and the cooked mouse button, with the mapping being done in
advance by the front-end.  This is useful because it allows the front-end to
use information other than the raw button (e.g. the modifier state) to decide
which cooked button to generate.
.
Front ends other than the Mac one are untested, but they just call
translate_button() themselves and pass the result to term_mouse().

[originally from svn r2721]
2003-01-25 16:16:45 +00:00
Ben Harris
81ada5f24f Add a stub "free" routine for pterm. Thanks to rjk.
[originally from svn r2666]
2003-01-20 20:10:07 +00:00
Simon Tatham
f6cc852c5d Miscellaneous fixes to finish up `remove-statics'. rlogin.c had a
holdout static I hadn't noticed; unicode.c had one too; and a large
number of statics that were perfectly OK due to being constants have
been made `const', with assorted `const' repercussions all over the
place. I now declare `remove-statics' to be fixed.

[originally from svn r2594]
2003-01-14 18:43:45 +00:00
Simon Tatham
b2374a64fd Deglobalise the Unicode module. Despite all my grand plans, I've
just done this the very simple way - bundle all the globals into a
data structure and pass pointers around. One particularly ugly wart
is that wc_to_mb now takes a pointer to this structure as an
argument (optional, may be NULL, and unused in any Unicode layer
that's even marginally less of a mess than the Windows one). I do
need to do this properly at some point, but for now this should just
about be adequate. As usual, the Mac port has not been updated.

[originally from svn r2592]
2003-01-14 18:28:23 +00:00
Owen Dunn
5c7bc54022 Ctrl-PgUp and Ctrl-PgDn now scroll by one line on Unix and Windows
[originally from svn r2582]
2003-01-14 11:24:26 +00:00
Simon Tatham
4ec4de4f8b Ahem. Doing loads of stuff to inst->cfg would probably be best done
_after_ allocating inst. Oops.

[originally from svn r2571]
2003-01-12 15:45:29 +00:00
Simon Tatham
d119b784f8 Ahem. Global replace of cfg' with inst->cfg' is all very well, but
let's try to make sure it doesn't happen inside any strings! The
-cfg option for cursor foreground colour nearly had a nasty accident
there.

[originally from svn r2569]
2003-01-12 15:36:05 +00:00
Simon Tatham
6af1a9e4e9 Having laid all the groundwork, we can now remove the global `cfg'
completely from putty.h. It's now static in each of the command-line
front ends, shared only between window.c and windlg.c in PuTTY
proper (I've tested this by doing #define cfg cfgsillyname in those
two files only, and it still links so nobody else is using that
symbol!), and part of the `inst' structure in pterm. I think that
only leaves the Unicode module as the last stubborn holdout in the
anti-global-variables campaign.

[originally from svn r2568]
2003-01-12 15:32:31 +00:00
Simon Tatham
952857fca3 proxy.c now no longer refers to `cfg'. Instead, each of the three
proxy-indirection network functions (name_lookup, new_connection,
new_listener) takes a `const Config *' as an argument, and extracts
enough information from it before returning to handle that
particular network operation in accordance with the proxy settings
it specifies. This involved {win,ux}net.c due to a `const'
repercussion.

[originally from svn r2567]
2003-01-12 15:26:10 +00:00
Simon Tatham
2d469ba497 The logging module now contains a local copy of cfg too.
[originally from svn r2566]
2003-01-12 15:10:27 +00:00
Simon Tatham
ac2367bc72 The Unicode module no longer depends on `cfg', since it gets the
relevant bits of it passed in to init_ucs(). (Actually I pass in all
of it in the Windows version, since it's a bit hairy in there.)

[originally from svn r2565]
2003-01-12 14:59:54 +00:00
Simon Tatham
6a2c0436de printer_start_job shouldn't need to refer to cfg.printer, since it's
getting the printer name passed in anyway! Oops.

[originally from svn r2563]
2003-01-12 14:50:34 +00:00
Simon Tatham
520f716dec Just like under Windows, cleanup_exit() shouldn't need to check
before calling random_save_seed().

[originally from svn r2562]
2003-01-12 14:49:44 +00:00
Simon Tatham
f49c8c5a07 The back ends now contain their own copies of the Config structure,
and have a function to pass in a new one. (Well, actually several
back ends don't actually bother to do this because they need nothing
out of Config after the initial setup phase, but they could if they
wanted to.)

[originally from svn r2561]
2003-01-12 14:48:29 +00:00
Simon Tatham
f35cbdce44 Forgot to match the cmdline changes in the Unix port.
[originally from svn r2558]
2003-01-12 14:37:26 +00:00
Simon Tatham
1b5cb7adf6 Each platform's implementation of askappend() is no longer required
to consult cfg.logxfovr, because it gets done once in logging.c.
askappend() is now called only when a question _really_ needs to be
asked of the user. Also in this checkin, cleanup_exit() in console.c
no longer consults cfg.protocol to decide whether to save the random
seed, because random_save_seed() can make that decision for itself
and do it better.

[originally from svn r2552]
2003-01-12 13:44:35 +00:00
Simon Tatham
fda9983243 Hack around an oddity in X display names and xauth.
[originally from svn r2538]
2003-01-11 09:46:50 +00:00
Simon Tatham
87f9446a26 Support XDM-AUTHORIZATION-1 for connecting to local X servers. If
we're going to be a security program, we can at least make a token
effort to use the most secure local X auth available! And I'm still
half-tempted to see if I can support it for remote X servers too...

[originally from svn r2537]
2003-01-11 09:31:54 +00:00
Simon Tatham
86977efa81 Introduce framework for authenticating with the local X server.
Windows and Mac backends have acquired auth-finding functions which
do nothing; Unix backend has acquired one which actually works, so
Plink can now do X forwarding believably.
(This checkin stretches into some unlikely parts of the code because
there have been one or two knock-on effects involving `const'. Bah.)

[originally from svn r2536]
2003-01-10 18:33:35 +00:00
Simon Tatham
35cd654c75 Unix plink now catches SIGWINCH and propagates local terminal
resizes to the remote end.

[originally from svn r2515]
2003-01-09 18:28:01 +00:00
Simon Tatham
f928707849 Support asynchronous connect() in Unix networking. Now a port
forwarding to a nonexistent host shouldn't hold up the rest of the
program.

[originally from svn r2514]
2003-01-09 18:14:24 +00:00
Simon Tatham
4d86f5979d I'm sick of all those #ifdefs in settings.c, and in any case plink
and pterm need at least one default setting to be _different_ (pterm
needs the default term type to be `xterm', while plink needs it to
be taken from $TERM). So here's a completely new alternative
mechanism for platform- and app-specific default settings. Ben will
probably want to check the integrity of the Mac port, since I've
fiddled with it without testing that it still compiles.

[originally from svn r2513]
2003-01-09 18:06:29 +00:00
Simon Tatham
b527354246 Ahem. Now pterm actually uses wc_to_mb in a situation where it needs
to pass in a default character, it would help if wc_to_mb actually
_honoured_ the default-character parameter.

[originally from svn r2490]
2003-01-07 13:09:56 +00:00
Simon Tatham
106bf20b35 Work around a weird bug in gdk_draw_text_wc().
[originally from svn r2437]
2003-01-03 17:52:51 +00:00
Simon Tatham
ea5be2db38 Fixes to direct-to-font mode: I'd inadvertently enabled it for any
font whose encoding comes up as CS_NONE - but this is also true for
iso10646-1 fonts, since libcharset doesn't support wide-character
encodings! Hence UTF-8 cut and paste was enabled in ordinary modes,
but disabled in UTF-8 mode, which was a bit embarrassing. Now we
have a dedicated flag variable indicating direct-to-font mode.

[originally from svn r2425]
2003-01-02 16:17:56 +00:00
Simon Tatham
2435c54597 sk_nonamelookup() should ensure the sockaddr it returns has `error'
set to NULL. Otherwise it'll be random uninitialised goop. Not good.

[originally from svn r2416]
2003-01-02 10:07:50 +00:00
Simon Tatham
cab553028a Proper support for using the font's own character encoding. If we
know what that encoding actually is, we can do our best to support
additional charsets (VT100 linedrawing, SCO ACS, UTF-8 mode) using
the available characters; if we don't, we fall back to a mode where
we disable all Unicode cut-and-paste and assume any Unicode
character is undisplayable.

[originally from svn r2413]
2003-01-01 22:25:25 +00:00
Simon Tatham
d97ac46223 Support for double-width (CJK) characters, using the xterm-like
options -fw and -fwb to specify wide and wide-bold fonts.

[originally from svn r2412]
2003-01-01 21:53:22 +00:00
Simon Tatham
ad2bbc52a4 First draft of Unicode support in pterm. It's pretty complete: it
does UTF-8 copy and paste (falling back to normal strings if
necessary), it understands X font encodings and translates things
accordingly so that if you have a Unicode font you can ask for
virtually any single-byte encoding and get it (Mac-Roman pterm,
anyone?), and so on. There's work left to be done (wide fonts for
CJK spring to mind), but I reckon this is a pretty good start.

[originally from svn r2395]
2002-12-31 12:20:34 +00:00
Simon Tatham
a564ad3140 Support for doing DNS at the proxy end. I've invented a new type of
SockAddr, which just contains an unresolved hostname and is created
by a stub function in *net.c. It's an error to pass this to most of
the real-meat functions in *net.c; these fake addresses should have
been dealt with by the time they get down that far. proxy.c now
contains name_lookup(), a wrapper on sk_namelookup() which decides
whether or not to do real DNS, and the individual proxy
implementations each deal sensibly with being handed an unresolved
address and avoid ever passing one down to *net.c.

[originally from svn r2353]
2002-12-18 16:23:11 +00:00
Simon Tatham
8304f4e0dc Stop proxying connections to localhost by default; should fix
`x11-proxy-crash'.

[originally from svn r2348]
2002-12-18 12:18:54 +00:00