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.
Ben Harris [Thu, 20 Mar 2003 23:15:25 +0000 (23:15 +0000)]
Pass a pointer to the entire dialog box structure to event handlers, rather
than just the individual control pointer, because otherwise event handlers
can't modify other controls.
Simon Tatham [Tue, 18 Mar 2003 19:47:28 +0000 (19:47 +0000)]
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.
Ben Harris [Tue, 18 Mar 2003 19:12:40 +0000 (19:12 +0000)]
Change the token for HTTP Basic Authentication from "basic" to "Basic".
According to RFC 2617, it should be case-insensitive, but some proxies
(Microsoft Proxy Server in particular) erroneously reject "basic".
Should fix semi-bug msproxy-denied.
Simon Tatham [Tue, 18 Mar 2003 19:06:51 +0000 (19:06 +0000)]
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.
Ben Harris [Mon, 17 Mar 2003 21:40:37 +0000 (21:40 +0000)]
Partial implementation of the platform-independent dialogue-box interface
for the Mac OS. This isn't anywhere near complete, and is wrong in a few
important regards, but I think it's heading in the right direction.
Simon Tatham [Mon, 17 Mar 2003 16:57:23 +0000 (16:57 +0000)]
Error messages update. It's now abundantly clear that WSAECONNABORTED
is not the same thing as ECONNABORTED, so I've removed the `we're a
bit confused about this, send us details' text. And someone has just
been confused by `connection timed out', so I've added that too.
Simon Tatham [Sun, 16 Mar 2003 12:37:48 +0000 (12:37 +0000)]
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).
Simon Tatham [Sat, 15 Mar 2003 17:51:05 +0000 (17:51 +0000)]
Implement RSA blinding, to defeat Brumley and Boneh's RSA timing
attacks. In the PuTTY suite I'm pretty sure they're only applicable
to a forwarded Pageant, and if your remote sysadmin is abusing your
Pageant then you're shafted _anyway_; but it can't hurt to take
precautions now, just in case things change in future.
Simon Tatham [Sat, 15 Mar 2003 15:56:51 +0000 (15:56 +0000)]
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.
Simon Tatham [Sat, 15 Mar 2003 15:50:42 +0000 (15:50 +0000)]
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.
Simon Tatham [Sat, 15 Mar 2003 09:42:15 +0000 (09:42 +0000)]
Missed a couple of the Unix-specific settings out of settings.c. One
of these days I'll have to separate the platform-specific settings
out into winsett and uxsett modules, but for now it's not too urgent.
Simon Tatham [Fri, 14 Mar 2003 21:20:32 +0000 (21:20 +0000)]
While I'm adding explanatory comments by the coroutine macros, it
occurs to me that would also be a good place to put a copy of the
instructions for disabling Edit and Continue debugging. Nobody
_actually_ reads the README, after all...
Simon Tatham [Fri, 14 Mar 2003 18:35:01 +0000 (18:35 +0000)]
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.
Simon Tatham [Thu, 13 Mar 2003 19:52:28 +0000 (19:52 +0000)]
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.
Simon Tatham [Tue, 11 Mar 2003 09:30:31 +0000 (09:30 +0000)]
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.
Simon Tatham [Sat, 8 Mar 2003 11:46:42 +0000 (11:46 +0000)]
Add the ability to allocate extra per-dialog-instance private data
in the portable dialog interface. This has allowed me to remove
`ssd->savedsession' in config.c, which was (I believe) the only
out-of-place piece of per-instance data in the dialog template
stuff. Now we should actually be able to run more than one config
box in the same process at the same time (for platforms that'll find
that useful).
Simon Tatham [Fri, 7 Mar 2003 18:18:38 +0000 (18:18 +0000)]
Richard B's patch for resize behaviour. The scrollback now contains
a marker which defines everything before it as `permanent'
scrollback and everything after it as `temporary'; only temporary
scrollback lines are returned to the main screen when the window
height is increased. Screen clears mark the lines pushed into the
scrollback as permanent; so lines explicitly cleared off the screen
by ESC[2J are never returned to it by mistake. This patch also fixes
the incorrect state the primary screen is left in when the window is
resized while the alternate screen is active.
Ben Harris [Thu, 6 Mar 2003 23:44:47 +0000 (23:44 +0000)]
Slightly better than null verify_ssh_host_key(). It's broken in more ways
than I can comfortably enumerate (see the comments in the code), but it's
better than always assuming everything's OK.
Simon Tatham [Thu, 6 Mar 2003 19:18:25 +0000 (19:18 +0000)]
Got a bit of a better handle on the whole GDI `logical units' mess,
and sorted out the static-control text wrapping rather better. Now
it works under both large fonts and small fonts on Win2K, so I have
high hopes that it's actually correct this time.
Simon Tatham [Thu, 6 Mar 2003 13:24:02 +0000 (13:24 +0000)]
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.
Simon Tatham [Thu, 6 Mar 2003 12:51:12 +0000 (12:51 +0000)]
Richard B's patch to push erased text into the scrollback on ESC[2J
clears, and also to temporarily push the primary screen contents
into the scrollback while the alternate screen is active and bring
it back afterwards.
Simon Tatham [Wed, 5 Mar 2003 22:07:40 +0000 (22:07 +0000)]
The long-awaited config box revamp! I've taken the whole config box
to pieces, and put it back together in a new table-driven form.
config.c sets up a data structure describing most of the config box;
wincfg.c adds in the Windows-specific options (so that config.c can
also form the basis for Mac and Unix config boxes). Then winctrls.c
contains a shiny new layout engine which consumes that data
structure, and windlg.c passes all WM_COMMAND and similar messages
to a driver alongside that layout engine. In the process I've sorted
out nicer-looking panel titles and finally fixed the list-boxes-are-
never-the-right-size bug (turned out to be Windows's fault, of
course). I _believe_ it should do everything the old config box did,
including context help. Now everyone has to test it thoroughly...
Simon Tatham [Mon, 3 Mar 2003 16:35:45 +0000 (16:35 +0000)]
I've been meaning to get round to this for _ages_: in front of my
coroutine macros, I now include a comment linking to my web article
that explains what they do.
Ben Harris [Sat, 1 Mar 2003 15:12:03 +0000 (15:12 +0000)]
Improve scheduling on the Mac:
1: Only update the screen when there's nothing else to do. This means that
it's a lot harder for a fast typist to outrun PuTTY.
2: Only sleep for at most 100ms at a time. This is a kludge to work around
the WakeUpProcess caused by incoming data can happen before the
WaitNextEvent it's meant to interrupt, leading to PuTTY sleeping forever
because it doesn't know there's network data pending.
Ben Harris [Thu, 27 Feb 2003 23:21:23 +0000 (23:21 +0000)]
Add 'plst' 0 resources to help Mac OS X do magic things.
These aren't actually compiled yet because they must only be present in
the Carbon build, and I don't currently compile the resources separately for
each platform.
Ben Harris [Sun, 23 Feb 2003 13:00:38 +0000 (13:00 +0000)]
Don't open the event log whenever an event is logged; instead handle the
"Show Event Log" menu entry sensibly. Similarly, make it possible to close
(hide) the event log.