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

271 Commits

Author SHA1 Message Date
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
Simon Tatham
5d5ffc274f Credit Malcolm Smith in the copyrights.
[originally from svn r4518]
2004-08-30 13:23:23 +00:00
Jacob Nevins
49e9abb645 Oops - merge version number bump from branch-0-55 (such was the plan).
[originally from svn r4430]
2004-08-09 17:04:50 +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
8b57939f6b Update version numbers preparatory to tagging for release.
[originally from svn r3820]
2004-02-07 18:17:50 +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
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
Ben Harris
dc2af8af66 Finally, column spanning.
[originally from svn r3184]
2003-05-10 20:51:39 +00:00
Ben Harris
feac9298a0 Change the way that panel-switching works so that we only hide the panel
we're switching from and show the panel we're switching to, rather than
iterating over all the panels, hiding and showing them as appropriate.
This has that consequence that all controls have to be created invisible,
since they no longer get hidden after creation.  As usual, the scroll
bars on list boxes have a special hack of their own.

[originally from svn r3183]
2003-05-10 20:23:23 +00:00
Ben Harris
25ff4e0ed9 I believe that verify_ssh_host_key() should now be passed a real front-end
handle, which removes one of its many flaws.

[originally from svn r3181]
2003-05-10 12:27:38 +00:00
Ben Harris
ccc9ec2bce Update signature of agent_query() to match the rest of the world.
[originally from svn r3178]
2003-05-10 11:40:18 +00:00
Ben Harris
24a1942810 Comment a few things I need to fix.
[originally from svn r3177]
2003-05-10 11:26:33 +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
Ben Harris
dd055ce280 Missing bits for colour selection support.
[originally from svn r3132]
2003-04-18 13:09:46 +00:00
Ben Harris
338bfcec3c Missing bits for System 7 listbox support.
[originally from svn r3131]
2003-04-18 13:09:08 +00:00
Ben Harris
18bf5c62b7 Remove all those horrid fprintfs.
[originally from svn r3123]
2003-04-14 23:47:07 +00:00
Ben Harris
8f2027fa36 Set the space required by a listbox sensibly as well.
[originally from svn r3122]
2003-04-14 23:28:58 +00:00
Ben Harris
1ecb4a043f Minor fixes:
- Erase the background of System 7 editboxes before drawing them.
 - Set the height of listboxes correctly.
 - Set the panel-selection listbox to 20 items high.

[originally from svn r3121]
2003-04-14 23:25:04 +00:00
Ben Harris
d5a214aa59 Don't call GetColor() if we don't have Color Quickdraw -- no good will come
of it.

[originally from svn r3120]
2003-04-14 22:55:12 +00:00
Ben Harris
bc19e25d71 Support for colour selection in the Mac OS.
[originally from svn r3119]
2003-04-14 22:42:44 +00:00
Ben Harris
2b1305986c Keyboard events in Mac OS 8 list boxes should generate EVENT_SELCHANGE,
not EVENT_VALCHANGE.

[originally from svn r3118]
2003-04-14 21:34:46 +00:00
Ben Harris
ed4551607f Enlarge the settings window so as to fill a 640x480 display. This makes
enough space to actually fit all of the panels.  I'll have to do a version
with smaller fonts for 9" screens.

[originally from svn r3117]
2003-04-14 21:15:39 +00:00
Ben Harris
5d5a16e14c Add a list box to the config dialogue to switch between panels. Now I don't
have to recompile to change panels!

[originally from svn r3116]
2003-04-13 14:37:07 +00:00
Ben Harris
321c6f24c7 Support for list boxes under System 7. There are some horrible kludges in
this code to do with the handling of the scroll bar, but it doesn actually
work better than the Mac OS 8 version.

[originally from svn r3115]
2003-04-13 13:52:44 +00:00
Ben Harris
6db521f4b9 Remove a couple of spurious semicolons.
[originally from svn r3112]
2003-04-12 21:07:25 +00:00
Ben Harris
502d5b4e50 Update for Simon's from_backend changes.
[originally from svn r3111]
2003-04-12 21:06:34 +00:00
Ben Harris
f48a3189fe To avoid gratuitous flicker, if a control already has the focus when it's
clicked in, don't attempt to move the focus at all.

[originally from svn r3073]
2003-04-06 13:27:40 +00:00
Ben Harris
9675063d38 Const fallout, as predicted.
[originally from svn r3071]
2003-04-05 22:12:44 +00:00
Ben Harris
98583ce217 Bring list of applications and architectures up to date.
[originally from svn r3070]
2003-04-05 22:10:13 +00:00
Ben Harris
9117b20d18 dd support for list boxes in Mac OS 8. Not entirely solid, but largely
working.
[ bits missed in the first commit ]

[originally from svn r3069]
2003-04-05 22:03:06 +00:00
Ben Harris
f51cc630c2 Add support for list boxes in Mac OS 8. Not entirely solid, but largely
working.

[originally from svn r3068]
2003-04-05 22:00:57 +00:00
Ben Harris
6de4a868ff 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.

[originally from svn r3066]
2003-04-05 18:00:46 +00:00
Ben Harris
dddcb9ceda Handle Return and Escape keys in dialogue box, triggering the default and
cancel buttons respectively.

[originally from svn r3065]
2003-04-05 17:19:38 +00:00
Ben Harris
f9f5154e76 Cope with NULL labels in every control where it makes sense, and assert that
all other labels are != NULL.

[originally from svn r3061]
2003-04-05 15:55:22 +00:00
Ben Harris
d077cbb088 Send EVENT_VALCHANGE when a System 7 editbox gets typed in.
[originally from svn r3060]
2003-04-05 15:08:17 +00:00
Ben Harris
277ca3a397 Implement dlg_end().
[originally from svn r3059]
2003-04-05 15:01:16 +00:00
Ben Harris
000edf3233 Implement update_special_menu(), which calls mac_adjustmenus() as appropriate.
Eventually, mac_adjustmenus() will handle populating the Specials menu.

[originally from svn r3058]
2003-04-05 14:34:06 +00:00
Ben Harris
87229cbf79 Implement columns, based loosely on Simon's Windows implementation. Now this
actually _looks_ like PuTTY.

[originally from svn r3052]
2003-04-03 23:18:06 +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
Ben Harris
38e6887ad1 Correct the size of editboxes under Mac OS 8.
[originally from svn r3027]
2003-03-30 14:24:20 +00:00
Ben Harris
82502df284 Crude keyboard support for System 7 editboxes.
[originally from svn r3026]
2003-03-30 00:45:00 +00:00
Ben Harris
3ee06b8cc3 The entropy pool is full of unsigned ints, not longs.
[originally from svn r3025]
2003-03-29 23:57:55 +00:00
Ben Harris
f599817d78 Move the Mac port over to using snew/snewn/sresize.
[originally from svn r3024]
2003-03-29 23:07:55 +00:00
Ben Harris
c1c7f5eb49 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.

[originally from svn r3022]
2003-03-29 22:04:21 +00:00
Ben Harris
f0f5932bf8 Add support for labels on editboxes and radios.
[originally from svn r3021]
2003-03-29 20:16:51 +00:00
Ben Harris
54aff83bf0 Add input-focus support for System 7, where the Control Manager can't do
it itself.
Also clean up Carbon builds.

[originally from svn r3019]
2003-03-29 18:32:36 +00:00
Ben Harris
adb469b1c6 Add the System 7 editbox CDEF, which I seem to have forgotten.
[originally from svn r3018]
2003-03-29 18:31:09 +00:00
Ben Harris
6174de9afd Tidy up dlg_editbox_set() and implemen dlg_editbox_get() for System 7.
[originally from svn r3011]
2003-03-28 00:50:04 +00:00
Ben Harris
a263861aaa Display half of a System 7 edit text CDEF, using TextEdit directly. This
is the easy bit.

[originally from svn r3010]
2003-03-28 00:06:17 +00:00
Ben Harris
5c9e56ba3e open_settings_r() and open_settings_w() need to cope with a NULL session name.
[originally from svn r3009]
2003-03-27 22:46:28 +00:00