Simon Tatham [Sat, 12 Apr 2003 09:05:28 +0000 (09:05 +0000)]
Mid-session BCE reconfiguration wasn't taking effect immediately
because I forgot to set term->erase_char in response to the change
in term->use_bce. Oops.
Simon Tatham [Sat, 12 Apr 2003 08:59:06 +0000 (08:59 +0000)]
Disable window title reporting by default, since it's a security
hazard. I considered removing it completely, but I can't rule out
the possibility of an OS that actually takes security of its
terminal devices seriously, and which might be able to make sensible
and safe use of this feature.
Simon Tatham [Sat, 12 Apr 2003 08:27:03 +0000 (08:27 +0000)]
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.
Simon Tatham [Fri, 11 Apr 2003 18:36:27 +0000 (18:36 +0000)]
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.
Simon Tatham [Fri, 11 Apr 2003 18:10:13 +0000 (18:10 +0000)]
`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.
Simon Tatham [Fri, 11 Apr 2003 17:42:52 +0000 (17:42 +0000)]
Saving of Default Settings under Unix was broken, because mungestr()
was translating NULL into "Default Settings" but not doing the same
to "". Now fixed.
Simon Tatham [Fri, 11 Apr 2003 17:39:48 +0000 (17:39 +0000)]
A poster on comp.security.ssh mentions that he had expected to find
the location of PuTTY's data storage mentioned in the manual section
about loading and storing sessions. This seems not unreasonable, so
I've put it there.
Simon Tatham [Wed, 9 Apr 2003 18:46:45 +0000 (18:46 +0000)]
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.
Simon Tatham [Wed, 9 Apr 2003 11:19:39 +0000 (11:19 +0000)]
Remote-to-local port forwarding in SSH2 was apparently completely
broken! We were expecting the peer address/port in the incoming
packet _before_ the connected address/port, which is just wrong. I
wonder how I managed to mess that up.
Simon Tatham [Wed, 9 Apr 2003 09:09:57 +0000 (09:09 +0000)]
Chas Honton's patch to dynamic port forwarding: should allow longer
host names in SOCKS 4A, up to 255 characters (which is apparently
the DNS limit anyway).
Simon Tatham [Tue, 8 Apr 2003 13:49:12 +0000 (13:49 +0000)]
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!
Simon Tatham [Sun, 6 Apr 2003 14:11:33 +0000 (14:11 +0000)]
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.
Ben Harris [Sat, 5 Apr 2003 18:00:46 +0000 (18:00 +0000)]
On System 7, draw the default ring in grey if the window is disabled.
This isn't _quite_ right, since it uses a b/w dither everywhere, whereas
it should use grey on colour screens. That would involve mucking around
with DeviceLoop, though, and I'm not sure I can be bothered.
Simon Tatham [Sat, 5 Apr 2003 16:36:11 +0000 (16:36 +0000)]
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.
Simon Tatham [Sat, 5 Apr 2003 16:12:52 +0000 (16:12 +0000)]
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.
Simon Tatham [Sat, 5 Apr 2003 16:05:00 +0000 (16:05 +0000)]
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 :-).
Simon Tatham [Sat, 5 Apr 2003 11:45:21 +0000 (11:45 +0000)]
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 :-)
Simon Tatham [Fri, 4 Apr 2003 20:21:05 +0000 (20:21 +0000)]
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().
Simon Tatham [Wed, 2 Apr 2003 08:44:05 +0000 (08:44 +0000)]
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 :-)
Simon Tatham [Mon, 31 Mar 2003 12:10:53 +0000 (12:10 +0000)]
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 :-)
Simon Tatham [Mon, 31 Mar 2003 12:10:08 +0000 (12:10 +0000)]
pterm.c now relies on backend `exitcode' functions returning <0 when
the session is still connected, and not returning an exit code until
after it's finished.
Simon Tatham [Mon, 31 Mar 2003 11:22:06 +0000 (11:22 +0000)]
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.
Simon Tatham [Mon, 31 Mar 2003 11:21:07 +0000 (11:21 +0000)]
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.
Ben Harris [Sat, 29 Mar 2003 22:04:21 +0000 (22:04 +0000)]
Convert the System 7 static text control to be a read-only version of the
editbox control. This means that it has a persistent edit record, can have
its height measured and uses the system font by default, all of which are good.
Simon Tatham [Sat, 29 Mar 2003 19:52:50 +0000 (19:52 +0000)]
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!
Simon Tatham [Sat, 29 Mar 2003 18:30:14 +0000 (18:30 +0000)]
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...
Simon Tatham [Sat, 29 Mar 2003 17:07:31 +0000 (17:07 +0000)]
I'm sick of having to type (cd ..; perl mkfiles.pl) when I'm working
on Unix. So now mkfiles.pl will look in .. as well as . when
searching for Recipe, so I can run `perl ../mkfiles.pl' and it will
Just Work.
Simon Tatham [Sat, 29 Mar 2003 16:47:06 +0000 (16:47 +0000)]
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.
Simon Tatham [Sat, 29 Mar 2003 16:14:26 +0000 (16:14 +0000)]
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.
Ben Harris [Thu, 27 Mar 2003 00:22:59 +0000 (00:22 +0000)]
DECCOLM fix, take 2. It turns out that my last fix wasn't causing crashes,
but PuTTY was running out of memory, which is both easy and fatal under Mac OS
at present. Having fixed that, I've re-instated the screen-clearing and
cursor-homing on DECCOLM, and added resetting the scroll region, since this
seems to help VTL's keypad diagram display correctly.
Ben Harris [Wed, 26 Mar 2003 21:14:39 +0000 (21:14 +0000)]
DECCOLM should clear the screen and home the cursor, so it does now.
Correct interactions with DECOM and DECSTBM not investigated.
Should fix bug "deccolm-cls", but I'll leave it open till I've checked the
interactions.
Ben Harris [Mon, 24 Mar 2003 22:41:38 +0000 (22:41 +0000)]
Initialise the "next menu ID" counter for pop-up menus. This stops crashes
on Mac OS 8.
Also re-do support for activate events so as not to depend on embedding
hierarchies, and thus to work on System 7.
Ben Harris [Sun, 23 Mar 2003 14:11:39 +0000 (14:11 +0000)]
Add support for pop-up menus (drop-down lists in Windows parlance).
For some reason, these explode horribly with the Appearance Manager present,
but work fine in bare System 7. Investigations are ongoing.
Simon Tatham [Sat, 22 Mar 2003 17:00:06 +0000 (17:00 +0000)]
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.
Simon Tatham [Sat, 22 Mar 2003 11:07:59 +0000 (11:07 +0000)]
The GTK colour selector does not provide full 8-bit resolution in
the RGB values (it deals in floats with 2 d.p. instead). Hence I've
replaced the static RGB text item in the Colours panel with three
little edit boxes, so that a user can type in exact 0-255 RGB values
if necessary. This should have the additional advantage of being
quicker than faffing with the colour selector if you already know
exactly what you want and are in a hurry!
Simon Tatham [Sat, 22 Mar 2003 10:36:28 +0000 (10:36 +0000)]
Fiddle with the cmdline_saved mechanism: the `-load' option is now
never deferred, but is evaluated instantly. This _should_ fix all
the irritating problems with (for example) proxy settings and saved
sessions not playing nicely. Or it may have some other ghastly side-
effect I haven't considered; really I ought to have been keeping
better track of all the problems in this area :-(
Simon Tatham [Sat, 22 Mar 2003 10:05:10 +0000 (10:05 +0000)]
Windows file selectors contain an edit box as well as the Browse
button; we must send EVENT_VALCHANGE when the edit box is manually
changed as well as when the file selector successfully completes.
Simon Tatham [Sat, 22 Mar 2003 09:49:20 +0000 (09:49 +0000)]
Yikes - saving of Default Settings must have been broken for some
time! The load code in settings.c was translating an empty string
into "Default Settings" to pass to {win,ux}store, whereas the save
code was passing the empty string straight down and expecting it to
be dealt with. So, a policy decision: the precise name of the
"Default Settings" special session _at the storage level_ is up to
the individual platform storage code to decide, and all platforms
MUST assume Default Settings is meant if they receive NULL or the
empty string as a session name.
Simon Tatham [Sat, 22 Mar 2003 09:22:52 +0000 (09:22 +0000)]
Fixed the bug whereby PuTTYgen went into generation mode as soon as
it started up. The problem was that I was accepting _any_ event on
IDC_GENERATE to trigger this, not just the `clicked' event, and some
uninteresting event like `initialise' must have occurred. Quite why
this only showed up as a result of the config box revamp I can't
imagine.
Ben Harris [Fri, 21 Mar 2003 00:24:17 +0000 (00:24 +0000)]
Add crude support for multiple panels in the config dialogue box. There's
no way to switch between panels yet, though, so you're stuck on the first one.