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.
Ben Harris [Fri, 13 Dec 2002 00:02:48 +0000 (00:02 +0000)]
Use the Unicode Converter to convert from Unicode to the display encoding
if it's available. Linking against the static Unicode Converter library
costs us about 30k on Classic 68K, which I can live with.
Because the default fallback converter can generate multiple output
characters for a single input character, we provide our own fallback that
doesn't. It converts everything to '?' instead.
Ben Harris [Tue, 10 Dec 2002 01:11:40 +0000 (01:11 +0000)]
Since PuTTY depends on lots of features of System 7, have it bale out if
it finds itself running on anything older. This is better than killing the
whole system with an umimplemented trap.
Ben Harris [Mon, 9 Dec 2002 23:26:52 +0000 (23:26 +0000)]
When resizing the window, redraw the grow box as well as the scroll bar.
I wasn't noticing the bug on my system, since the Appearance Manager handles
the grow box itself when it's present.
Ben Harris [Mon, 9 Dec 2002 22:49:56 +0000 (22:49 +0000)]
Update the non-Color Quickdraw code in pre_paint() to match recent changes
to the Color Quickdraw code. This makes redraw work properly on old Macs
again.
Jacob Nevins [Sun, 8 Dec 2002 16:54:31 +0000 (16:54 +0000)]
Modify bug-compatibility checks to use wildcards. Should have exactly the
same behaviour as before (tested a little bit), but should be easier to
expand.
(This is the easy bit -- work still needs to be done to fix
ssh2-keyderive-nonbug, vshell-no-bug-compat, etc -- but should be easier
now.)
Jacob Nevins [Sun, 8 Dec 2002 15:32:40 +0000 (15:32 +0000)]
Wrong length was causing spurious \0 to be sent during SSH negotiation with
HTTP proxy -- fixed. (Also added a "len -= eol" to HTTP header munching,
although it has no practical effect.) HTTP proxying now works again, hurrah.
Jacob Nevins [Sun, 8 Dec 2002 14:44:42 +0000 (14:44 +0000)]
Argh. With DEBUG and MALLOC_LOG enabled, I found output intended for the
console was ending up in one or other of debug.log or putty_mem.log. I
don't really understand why, but I've put some extra paranoia and caching
in debug(()) and that seems to have fixed it (tm). Perhaps I can get back
to debugging...
Jacob Nevins [Sun, 8 Dec 2002 12:10:58 +0000 (12:10 +0000)]
Doofus Award: logfopen is shared between SSH-packet and session-logging modes,
so of _course_ it has to be mode "wb". Restored, and added \r to all of the
SSH packet logging stuff.
Ben Harris [Sun, 8 Dec 2002 01:17:31 +0000 (01:17 +0000)]
Slightly cheesy size-tip implementation. This is suboptimal in two ways:
* It paints over the top-left corner of the terminal window. A little
floating window would be rather nicer and not much harder to do.
* It uses the low-memory global, DragHook, which is unavailable in Carbon
and broken in some versions of Mac OS 8 (8.5?). I suspect this is
unavoidable, though.
Jacob Nevins [Sat, 7 Dec 2002 21:35:05 +0000 (21:35 +0000)]
For some reason Roman Pompejus' original logging patch opened the log in
"wb" mode. Since we were mostly writing "\n" rather than "\r\n", I've
changed it to just "w" and refunded the difference.
Ben Harris [Sat, 7 Dec 2002 15:21:56 +0000 (15:21 +0000)]
When scrolling part of the window, scroll the update region as well so that
parts that haven't been painted yet still get an update event in their new
location. This code seems far too complicated, and I suspect there's a
better way. Still, scrolling continuously with the window partially
off-screen now works.
Ben Harris [Fri, 6 Dec 2002 00:09:34 +0000 (00:09 +0000)]
Use the Script Manager to find a small Roman font for the licence box rather
than assuming that the application font at 9pt will be useful (which it
probably won't be on non-Roman systems).
Ben Harris [Mon, 2 Dec 2002 21:06:12 +0000 (21:06 +0000)]
Driver script for building PuTTY under MPW. MPW isn't multi-tasking, so its
"make" program just emits a script for us to run. This script wraps all that
horribleness up so we don't have to see it.
Ben Harris [Mon, 2 Dec 2002 21:01:11 +0000 (21:01 +0000)]
Add support for generating MPW Makefiles. This makes the following changes:
* splitline gets support for changing the continuation character.
* deps returns a data structure for the output routine to format as
appropriate.
* There's a new program type, [M], for Macintosh.
* There's a new backend to output mac/Makefile.mpw.
Ben Harris [Fri, 29 Nov 2002 00:32:03 +0000 (00:32 +0000)]
Improve support for non-colour displays by adding a mask of attributes to
ignore when breaking text into runs for display, and implement setting this
on Mac (other ports just use 0xffffffff).
We don't use DeviceLoop for this any more because Apple Technical Q&A
QA1024 says we shouldn't. Unlike their example, we don't depend on the
Display Manager's being present either.
Ben Harris [Thu, 28 Nov 2002 21:10:55 +0000 (21:10 +0000)]
Don't call SetFractEnable every time we draw some text, since
SetFractEnable unconditionally flushes the Font Manager's width cache,
and the default is fine for us anyway. This more or less doubles
redraw speed, which is nice, but still not really fast enough.