Ben Harris [Sun, 5 Jan 2003 13:57:09 +0000 (13:57 +0000)]
SC (Apple's 68K C compiler) seems to treat tentative definitions of complete
arrya as full definitions, and hence gets upset when it finds a full definition
later. This is a bug (see K&R2 A10.2), but an easy one to work around by
making the tentative definitions incomplete, so I've done that.
Ben Harris [Sun, 5 Jan 2003 13:43:02 +0000 (13:43 +0000)]
Attack char * vs unsigned char * conversions. In most cases, I've just
gone for replacing the implicit casts with explicit ones. Where there was
something obviously better that I could do, I've done it, though.
Ben Harris [Sun, 5 Jan 2003 12:53:38 +0000 (12:53 +0000)]
Add reception support for MacTCP. Now I can log in over TELNET, just about.
There are still lots of things to fix, like urgent data or the fact that
everything seems to happen one keypress too late, but this is an important
milestone.
Ben Harris [Sat, 4 Jan 2003 19:51:20 +0000 (19:51 +0000)]
Beginnings of a MacTCP network layer. This has all of the DNS interface
present, including stuff to find and load the MacTCP DNR. Actually making
a TCP connection is still unimplemented, though, and much testing remains
to be done.
Ben Harris [Sat, 4 Jan 2003 19:01:45 +0000 (19:01 +0000)]
Add a vsnprintf() for the Mac, which doesn't have one of its own. This is
the NetBSD kernel printf, which is integer-only and under a Berkeley-style
(now 3-clause) copyright owned by UCB. This has only been compile-tested,
but almost all of my changes were in the definitions at the top (the exception
being to remove tty output). This lacks 64-bit support because the Apple
68K C compiler, SC, lacks it too.
Ben Harris [Sat, 4 Jan 2003 17:24:49 +0000 (17:24 +0000)]
Provide a version of stricmp() and strnicmp() for Mac OS, which doesn't have
its own. These are from NetBSD's libc, and have a standard (now 3-clause)
Berkeley licence.
Also provide a definition of DWORD and a better definition of BYTE.
Ben Harris [Sat, 4 Jan 2003 16:42:53 +0000 (16:42 +0000)]
Hammer out some char * vs unsigned char * problems. In general, I've kept
any buffers used internally by telnet.c as unsigned char, and cast to/from
char * when interacting with the rest of PuTTY. Not actually tested, since
I'm some way from actually being able to link this yet.
Also clean up a couple of style warnings from Apple's compilers.
Ben Harris [Sat, 4 Jan 2003 00:48:13 +0000 (00:48 +0000)]
Re-arrange the sums in the size tip code so as to ensure that we're always do
division on positive numbers, hence avoiding nasty problems of rounding
towards zero when I wanted rounding down.
Ben Harris [Sat, 4 Jan 2003 00:13:18 +0000 (00:13 +0000)]
Correct handling of Mac OS 8.5 Window Manager and Control Manager. The new
functions turn out to be available only to PowerPC applications, through
WindowsLib and ControlsLib respectively, so we weak-link against those in
the obvious way.
Ben Harris [Thu, 2 Jan 2003 23:52:44 +0000 (23:52 +0000)]
Any Mac that can handle CFM-68K code must have at least a 68020 CPU, and hence
be equipped with Color QuickDraw, as are all PowerPC systems. Hence, don't
bother with support for basic QuickDraw in the CFM-68K and PowerPC builds.
Simon Tatham [Thu, 2 Jan 2003 16:56:29 +0000 (16:56 +0000)]
A better solution to the problem of duplicated positions in
CS_ISO8859_1_X11: where two SBCS positions map to the same Unicode
code point, we now have a `sortpriority' hint which can tell
sbcsgen.pl which one it should preferentially generate when
converting back to SBCS.
Simon Tatham [Thu, 2 Jan 2003 16:20:29 +0000 (16:20 +0000)]
CJK cleanups. Correct handling when the cursor is covering the
right-hand half of a CJK wide character; correct handling of cut and
paste when CJK text wraps between lines _irrespective of the parity
of the starting column_; correct handling of wordness values
irrespective of which half of a CJK character the user
double-clicked on; correct handling when any terminal activity
overwrites only one half of a CJK wide character. I think we now
behave marginally better than xterm in this respect (it has a redraw
problem when you overwrite the RH half of a CJK char), so I'm happy.
Also redefined the internal UCSWIDE marker to something in the
surrogate range, while I'm here, so that U+303F is available for use
by actual users.
Simon Tatham [Thu, 2 Jan 2003 16:17:56 +0000 (16:17 +0000)]
Fixes to direct-to-font mode: I'd inadvertently enabled it for any
font whose encoding comes up as CS_NONE - but this is also true for
iso10646-1 fonts, since libcharset doesn't support wide-character
encodings! Hence UTF-8 cut and paste was enabled in ordinary modes,
but disabled in UTF-8 mode, which was a bit embarrassing. Now we
have a dedicated flag variable indicating direct-to-font mode.
Simon Tatham [Thu, 2 Jan 2003 11:14:35 +0000 (11:14 +0000)]
Fix `telnet-resize-iac'. (IAC bytes were not duplicated when they
occurred in a NAWS subnegotiation. Result: a terminal width or
height of 255 was not being correctly sent to the server.)
Simon Tatham [Thu, 2 Jan 2003 10:45:56 +0000 (10:45 +0000)]
A couple of X forwarding fixes for Unix Plink. Firstly, under Unix
the default X display should be whatever comes out of $DISPLAY,
rather than Windows's hardwired `localhost:0'. Secondly, this may
give rise to a display name without a hostname (`:0' or similar),
which we now need to be able to deal with. Of course, we still don't
_properly_ support X forwarding in Unix Plink, since we still can't
authenticate with the local display.
Ben Harris [Thu, 2 Jan 2003 00:33:40 +0000 (00:33 +0000)]
If for some reason do_text() fails to translate from Unicode to the font
encoding, have it go through the rest of its motions with an empty string
anyway, so as to at least give a sensible empty box of the right colour.
If SetFallbackUnicodeToText() fails, switch over to using the charset
library, hence avoiding problems in do_text().
If the version of the Unicode Converter we're using doesn't understand about
interrupt-safe fallback functions, don't try to tell it we've got one. This
prevents SetFallbackUnicodeToText() from failing on systems with old Unicode
Converters.
Simon Tatham [Wed, 1 Jan 2003 22:25:25 +0000 (22:25 +0000)]
Proper support for using the font's own character encoding. If we
know what that encoding actually is, we can do our best to support
additional charsets (VT100 linedrawing, SCO ACS, UTF-8 mode) using
the available characters; if we don't, we fall back to a mode where
we disable all Unicode cut-and-paste and assume any Unicode
character is undisplayable.
Simon Tatham [Wed, 1 Jan 2003 17:03:27 +0000 (17:03 +0000)]
Having painstakingly generated those reverse mapping tables in
sbcsdat.c, it would seem a shame not to actually use them. Ahem.
Thanks to Ben, without whose checkin in this area I'd have forgotten
completely :-)
Ben Harris [Wed, 1 Jan 2003 16:24:01 +0000 (16:24 +0000)]
Add all the Mac OS simple single-byte character sets from ftp.unicode.org.
Also add the older variants described there, and the character set used by
the "VT100" font (old and new).
Since RFC 1345 defines "macintosh" to refer to the currency-sign variant
of Mac OS Roman, update our table to match.
Ben Harris [Tue, 31 Dec 2002 22:49:03 +0000 (22:49 +0000)]
Use the shiny new character-set library to handle conversion from Unicode
to Mac OS Roman for display if the Unicode Converter isn't around. Support
for Mac character sets other than Roman (e.g. the variant used by the Apple
VT100 font) is still absent.
Ben Harris [Tue, 31 Dec 2002 22:40:38 +0000 (22:40 +0000)]
Add "-notOnce" to the compiler options on the Mac to stop the compiler
assuming that duplicate #includes of the same file are idempotent. I mean,
it's not even true for the standard headers (think <assert.h>), and
certainly isn't true here.
Ben Harris [Tue, 31 Dec 2002 22:37:27 +0000 (22:37 +0000)]
I have no idea what Simon thought he was doing casting what was once a
struct sbcs_data * (first element an array of unsigned long) into a
wchar_t *, but I think it's reasonably safe to assume that it was a
mistake.
Ben Harris [Tue, 31 Dec 2002 20:11:38 +0000 (20:11 +0000)]
Add a small comment explaining my failure to find any way to get QuickDraw
to give me the missing-character glyph for a font.
While I'm here, change the character we substitute for unmappable ones
to '.', since that's what the charset library uses.
Simon Tatham [Tue, 31 Dec 2002 12:20:34 +0000 (12:20 +0000)]
First draft of Unicode support in pterm. It's pretty complete: it
does UTF-8 copy and paste (falling back to normal strings if
necessary), it understands X font encodings and translates things
accordingly so that if you have a Unicode font you can ask for
virtually any single-byte encoding and get it (Mac-Roman pterm,
anyone?), and so on. There's work left to be done (wide fonts for
CJK spring to mind), but I reckon this is a pretty good start.
Simon Tatham [Tue, 31 Dec 2002 11:03:23 +0000 (11:03 +0000)]
SCO ACS part 2 (ESC[12m) apparently puts the top half of CP437 into
_both_ halves of the character set, rather than flipping the two
halves. My source for this is linux/drivers/char/console.c.
Simon Tatham [Tue, 31 Dec 2002 10:04:35 +0000 (10:04 +0000)]
Dimitrie Paun's patch for Winelib support. Actually does nothing
except add a couple of commented-out lines to Makefile.cyg; the
Winelib user must uncomment them to do the compilation.
Ben Harris [Mon, 30 Dec 2002 23:14:11 +0000 (23:14 +0000)]
Add support for compiling 'vers' resources into Mac applications. This is
needlessly complex because Rez's preprocessor doesn't do either ANSI or K&R
stringification, and the MPW Shell isn't much good as shells go.
Also make _all_ the Mac executables depend on reources, not just the
Classic 68K one.
Ben Harris [Mon, 30 Dec 2002 18:21:17 +0000 (18:21 +0000)]
Add an "open" command to the "file" (now "session") menu on the Mac to
open an existing saved session. This has entailed adding an extra hook to
settings.c to allow for loading settings other than by name.
Ben Harris [Mon, 30 Dec 2002 14:20:25 +0000 (14:20 +0000)]
Finally add support for building Mac resource forks. This adds a new kind
of compiled resource file, .rsrc, which is built from .r, and adds mechanisms
to the MPW makefile generator to handle this.
Ben Harris [Mon, 30 Dec 2002 13:43:19 +0000 (13:43 +0000)]
More cleanup to Mac build procedures, notably:
- Remove an unused library from the CFM-68K link line.
- Set the fragment name in CFM builds to "PuTTY".
- Set the hasBundle and isShared bits on freshly-created applications.
Ben Harris [Sun, 29 Dec 2002 19:01:33 +0000 (19:01 +0000)]
Add support for building a CFM-68K version of PuTTY, which is rather smaller
than the Classic 68K version. This requires installing more bits of the
Text Encoding Converter SDK, since Apple seem to have forgotten to put _any_
68k bits for it, either CFM or Classic, in Universal Interfaces.
Also don't bother linking against libraries we don't seem to need.
Ben Harris [Sun, 29 Dec 2002 15:08:27 +0000 (15:08 +0000)]
Put prototypes for the functions exported by wcwidth.c in putty.h, and remove
one from terminal.c. Have wcwidth.c include putty.h to get its prototypes.
Simon Tatham [Fri, 27 Dec 2002 16:54:14 +0000 (16:54 +0000)]
Mention in the documentation that the method of generating RSA keys
might give a bit count one less than the one the user asked for. Two
people have been worried by this now, and it's probably worth
documenting that it's perfectly normal.
Simon Tatham [Thu, 19 Dec 2002 14:24:28 +0000 (14:24 +0000)]
Move the stderr output of event log messages in verbose mode to the
general logging module rather than localising it in ssh.c. This
means it should work in other protocols as well (notably Telnet,
where it might actually be useful for debugging negotiations).
Simon Tatham [Wed, 18 Dec 2002 16:23:11 +0000 (16:23 +0000)]
Support for doing DNS at the proxy end. I've invented a new type of
SockAddr, which just contains an unresolved hostname and is created
by a stub function in *net.c. It's an error to pass this to most of
the real-meat functions in *net.c; these fake addresses should have
been dealt with by the time they get down that far. proxy.c now
contains name_lookup(), a wrapper on sk_namelookup() which decides
whether or not to do real DNS, and the individual proxy
implementations each deal sensibly with being handed an unresolved
address and avoid ever passing one down to *net.c.
Simon Tatham [Wed, 18 Dec 2002 11:49:14 +0000 (11:49 +0000)]
Improve the tab order in the Tunnels box: the `Add' button should
happen _after_ all the controls that set up the forwarding, since
that's the obvious order you'd want to use them in.
Simon Tatham [Wed, 18 Dec 2002 11:39:25 +0000 (11:39 +0000)]
Implement `portfwd-loopback-choice'. Works on local side in Unix as
well, though it's a lot less useful since you still can't bind to
low-numbered ports of odd loopback IPs. Should work in principle for
SSH2 remote forwardings as well as local ones, but OpenSSH seems
unwilling to cooperate.
Simon Tatham [Wed, 18 Dec 2002 10:06:38 +0000 (10:06 +0000)]
BUG_SSH2_DERIVEKEY is apparently only present in SSH 2.0.11 and
before, not in 2.0.13. Verified on at least one host. Fixes bug
`ssh2-keyderive-nonbug'.
Simon Tatham [Wed, 18 Dec 2002 09:47:20 +0000 (09:47 +0000)]
logeventf()'s first argument is ssh, not ssh->frontend! This is what
I get for making the latter a `void *' - type checking deserts me in
my hour of need. Should fix Andrey Borzenkov's bug.
Jacob Nevins [Sun, 15 Dec 2002 13:31:58 +0000 (13:31 +0000)]
Fixing trivial warnings spotted by Mingw-2.0.0/gcc-3.2:
window.c:90: warning: `do_mouse_wheel_msg' declared `static' but never defined
Introduced in 1.185 [r1499]. This function doesn't appear to ever have
existed.
Jacob Nevins [Sun, 15 Dec 2002 13:19:59 +0000 (13:19 +0000)]
Fixing trivial warnings spotted by Mingw-2.0.0/gcc-3.2:
plink.c: In function `from_backend':
plink.c:172: warning: unused variable `h'
(introduced in 1.35 [r1198])
Jacob Nevins [Sun, 15 Dec 2002 12:44:21 +0000 (12:44 +0000)]
From Greg Prosser: Apparently using "MS Shell Dlg" instead of "MS Sans Serif"
in resource files interoperates better with WinXP (enabling font smoothing
and improving display of password boxes). I've verified that it's harmless
on Win95.