1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-10 09:58:01 +00:00
putty-source/mac
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 Bring list of applications and architectures up to date. 2003-04-05 22:10:13 +00:00
mac_res.r Credit Malcolm Smith in the copyrights. 2004-08-30 13:23:23 +00:00
mac.c I believe that verify_ssh_host_key() should now be passed a real front-end 2003-05-10 12:27:38 +00:00
mac.h Missing bits for colour selection support. 2003-04-18 13:09:46 +00:00
macabout.c Move the Mac port over to using snew/snewn/sresize. 2003-03-29 23:07:55 +00:00
macctrls.c Finally, column spanning. 2003-05-10 20:51:39 +00:00
macdlg.c Implement dlg_end(). 2003-04-05 15:01:16 +00:00
macevlog.c Colin's const-fixing Patch Of Death. Seems to build fine on Windows 2003-05-04 14:18:18 +00:00
macmisc.c Move the Mac port over to using snew/snewn/sresize. 2003-03-29 23:07:55 +00:00
macnet.c Add a configuration option for TCP keepalives (SO_KEEPALIVE), default off. 2004-06-20 17:07:38 +00:00
macnoise.c Small amount of extra noise gathering -- slurp the process list in 2003-01-30 23:11:07 +00:00
macpgen.c Handle suspend and resume events in PuTTYgen as well. 2003-02-23 13:31:12 +00:00
macpgen.r Add 'plst' 0 resources to help Mac OS X do magic things. 2003-02-27 23:21:23 +00:00
macpgkey.c The entropy pool is full of unsigned ints, not longs. 2003-03-29 23:57:55 +00:00
macpgrid.h Add a mechanism for collecting entropy, and displaying how much we've got, 2003-02-20 22:55:09 +00:00
macresid.h Missing bits for System 7 listbox support. 2003-04-18 13:09:08 +00:00
macstore.c Various error-handling fixes, mostly in Unix PuTTY but one (failure 2003-04-01 18:10:25 +00:00
macstuff.h Partial implementation of the platform-independent dialogue-box interface 2003-03-17 21:40:37 +00:00
macterm.c Re-engineering of terminal emulator, phase 1. 2004-10-13 11:50:16 +00:00
macucs.c Const fallout, as predicted. 2003-04-05 22:12:44 +00:00
mkputty.mpw Remove a spurious reference to a variable I've removed. 2002-12-30 15:41:52 +00:00
mtcpnet.c Add a configuration option for TCP keepalives (SO_KEEPALIVE), default off. 2004-06-20 17:07:38 +00:00
otnet.c Add a configuration option for TCP keepalives (SO_KEEPALIVE), default off. 2004-06-20 17:07:38 +00:00
README.mac Work around an SC bug that causes it to try to use the same register for 2003-02-23 00:13:17 +00:00
stricmp.c Provide a version of stricmp() and strnicmp() for Mac OS, which doesn't have 2003-01-04 17:24:49 +00:00
version.r Oops - merge version number bump from branch-0-55 (such was the plan). 2004-08-09 17:04:50 +00:00
vsnprint.c Add a vsnprintf() for the Mac, which doesn't have one of its own. This is 2003-01-04 19:01:45 +00:00

$Id: README.mac,v 1.28 2003/02/23 00:13:17 ben Exp $

Information about PuTTY for the Mac OS
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Compiling it:

 See ../README for generic information.

 To compile PuTTY for Mac OS you will need:

 MPW
  <ftp://ftp.apple.com/developer/Tool_Chest/Core_Mac_OS_Tools/MPW_etc./
   MPW-GM_Images/MPW-GM.img.bin>
  Install this in the usual way.

 Universal Headers
  <ftp://ftp.apple.com/developer/Development_Kits/
   UniversalHeaders3.4.2.img.bin>
  Install using the script in "Documentation:MPW Users - ReadMe".

 Text Encoding Converter SDK
  <ftp://ftp.apple.com/developer/Development_Kits/TEC_1.5.sit.hqx>
  Copy contents of "68K Static Libraries" to
   "Interfaces&Libraries:Libraries:Libraries".
  Copy contents of "Stub Libraries" to
   "Interfaces&Libraries:Libraries:SharedLibraries".

 CarbonStdCLib.o
  <ftp://ftp.apple.com/developer/Tool_Chest/Core_Mac_OS_Tools/
   MPW_Website_Downloads/CarbonStdCLib.o-3.8d3.hqx>
  Copy contents of "CIncludes" to
   "Interfaces&Libraries:Interfaces:CIncludes".
  Copy contents of "PPCLibraries" to
   "Interfaces&Libraries:Libraries:PPCLibraries".

 The "mkputty.mpw" script does all the work, and currently producess a
 Classic 68K build of PuTTY called "PuTTY.68k", a non-Carbon PowerPC
 build called "PuTTY.ppc", and similar builds of PuTTYtel called
 "PuTTYtel.68k" and "PuTTYtel.ppc".  The CFM-68K build is currently
 disabled because it overflows the global data space and I can't work
 out how to stop this happening.  The Carbon build doesn't work yet.

Runtime requirements:

 The Classic 68K build of PuTTY should work on any Macintosh running
 System 7.0 or later.  It runs in the Classic environment in Mac OS X.

 The CFM-68K build of PuTTY should work on any Macintosh with a 68020,
 68030 or 68040 processor and with either the CFM-68K Runtime Enabler
 or Mac OS 7.6.1 or later installed.

 The PowerPC build of PuTTY should work on any Power Macintosh.  It
 runs in the Classic environment in Mac OS X.

 The Carbon build of PuTTY (when it works) should work on any Power
 Macintosh with CarbonLib (and Mac OS 8.1 or later), Mac OS 9 or
 Mac OS X installed.

Known bugs:
 * Display is far too slow.
 * Real bold doesn't compensate for changing character widths without Color
   QuickDraw. [MAYBE FIXED]
 * When the last terminal window closes, the Edit menu doesn't get disabled
   immediately, which it should.
 * When using the "VT100" font, text copied to the clipboard doesn't
   get newlines in it, because that font has a graphic character at
   position 0x0d.  Even if we did insert 0x0d manually, TextEdit
   insists on displaying the graphic version, so I think we need a
   font switch at this point.  This can be seen as a special case of
   the need to switch fonts to get odd characters.
 * Pasting large blocks of text doesn't work.

Unimplemented features (should be done before release):
 * TCP urgent data.
 * Listening sockets.
 * Changing font size in reponse to resize requests.
 * Full screen mode.
 * Session configuration.
 * Host key database.
 * Entropy collection.
 * Private key files.
 * Pageant and PuTTYgen.
 * Do something with Open Application Apple Events.
 * Warn-on-close.
 * Close-on-exit.
 * Warn-on-quit.
 * Flashing things.
 * Non-block cursors.

Wishlist (after release):
 * SFTP client (GUI?)
 * Carbon compatibility (requires Open Transport and Navigation Services).
 * 'styl' paste, for script codes.
 * Handle 'gurl' Apple Events.

Local Variables:
mode: text
End: