1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-25 09:12:24 +00:00
putty-source/unix
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
..
.cvsignore Added a command-line key generation tool. Currently builds and runs 2004-01-22 19:15:32 +00:00
gtkcols.c Fix a _very_ subtle segfault in my two GTK container classes: the 2003-03-31 11:22:06 +00:00
gtkcols.h First stab at a GTK layout engine. It's missing all sorts of stuff 2003-03-13 19:52:28 +00:00
gtkdlg.c Credit Malcolm Smith in the copyrights. 2004-08-30 13:23:23 +00:00
gtkpanel.c Unix makefile now uses -O2, which massively cuts down key exchange 2003-04-23 13:48:09 +00:00
gtkpanel.h First stab at a GTK layout engine. It's missing all sorts of stuff 2003-03-13 19:52:28 +00:00
pterm.c Re-engineering of terminal emulator, phase 1. 2004-10-13 11:50:16 +00:00
ptermm.c Finer granularity of config box handling. SSH packet logging should 2003-04-26 14:35:34 +00:00
pty.c Patch from Kurt Roeckx: apparently on Debian amd64, the ut_time member of 2004-08-16 09:38:12 +00:00
signal.c RJK's general signal-handling robustness patch. Should fix the weird 2002-11-02 14:35:57 +00:00
unix.h And just to prove that psftp.c really is now platform-independent 2003-08-24 13:22:17 +00:00
ux_x11.c X forwarding changes: 2004-10-06 22:31:07 +00:00
uxagentc.c First half of `pageant-async' work. agent_query() is now passed a 2003-04-28 11:41:39 +00:00
uxcfg.c Richard B's patch to enable users to explicitly request shadow bold 2003-08-21 18:39:17 +00:00
uxcons.c X forwarding changes: 2004-10-06 22:31:07 +00:00
uxgen.c Added a command-line key generation tool. Currently builds and runs 2004-01-22 19:15:32 +00:00
uxmisc.c Windows PSCP now links against winsftp.c, and scp.c is now a 2003-08-25 13:53:41 +00:00
uxnet.c Add a configuration option for TCP keepalives (SO_KEEPALIVE), default off. 2004-06-20 17:07:38 +00:00
uxnoise.c Improve robustness in random seed file handling. 2002-11-07 20:01:04 +00:00
uxplink.c X forwarding changes: 2004-10-06 22:31:07 +00:00
uxprint.c Unix can't sensibly enumerate printers (since they're defined as 2003-04-05 16:12:52 +00:00
uxproxy.c Add a configuration option for TCP keepalives (SO_KEEPALIVE), default off. 2004-06-20 17:07:38 +00:00
uxputty.c X forwarding changes: 2004-10-06 22:31:07 +00:00
uxsel.c Minor improvements to subsidiary window placement; with any luck the 2003-04-10 08:53:43 +00:00
uxsftp.c X forwarding changes: 2004-10-06 22:31:07 +00:00
uxstore.c Idiot me _twice_! The new store_host_key() was failing in the 2004-01-19 09:37:17 +00:00
uxucs.c Make the `vtmode' config option work under X. In the process I've 2003-04-26 14:22:42 +00:00
xkeysym.c Support for non-ISO-8859-1 X keysyms. So in particular, pterm in a 2003-04-27 11:10:48 +00:00