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.
Simon Tatham [Tue, 26 Nov 2002 19:35:40 +0000 (19:35 +0000)]
Increase the size of the `font' buffer in the Config structure, for
the benefit of X font names which are rather more verbose than
Windows. One day I want to replace all these fixed-size buffers with
sensible dynamically allocated stuff, but not today.
Ben Harris [Tue, 26 Nov 2002 01:32:51 +0000 (01:32 +0000)]
Substantial overhaul of colour handling in do_text(). Highlights include:
* No more mucking about with transfer modes. We always set up the foreground
and background sensibly, EraseRect the whole lot and use srcOr. Apple
Tech Note QD505 suggests that this should be faster than srcCopy.
* Always use the Palette Manager if we've got Color QuickDraw, even in 1bpp
modes.
* Apply the cursor colours _after_ all the other stuff, rather than trying to
get them through everything else intact.
Unfortunately, this doesn't make much difference to the speed.
Ben Harris [Sun, 24 Nov 2002 00:38:44 +0000 (00:38 +0000)]
Fix scrolling on systems without Color QuickDraw. It seems that the current
background colour and pen mode have some silly effects on ScrollRect, so
set them back to their defaults before calling it.
Ben Harris [Sat, 23 Nov 2002 22:36:56 +0000 (22:36 +0000)]
Don't try to initialise the palette unless we have Color QuickDraw. This gets
PuTTY running on my Mac SE again (albeit very slowly and with scroll
optimisation broken for some reason).
Ben Harris [Sat, 23 Nov 2002 21:42:46 +0000 (21:42 +0000)]
Fix a bug in scroll_display(): when the scrolled region contains the cursor
we need to update dispcurs as well as disptext.
Add scroll optimisation to scroll(). This makes it rather obvious that scroll
optimisation is breaking with PuTTY's usual policy of lazy updates, since
scrolling is done eagerly. Fixing this so that all the scrolling is saved
up for do_paint would be nice, but non-trivial.
Ben Harris [Sat, 23 Nov 2002 20:02:38 +0000 (20:02 +0000)]
Add a Config * argument to ldisc_create(), and use it in place of the global
cfg throughout ldisc.c. Not tested other than on Mac, but all other ports
just pass &cfg as this argument for now.
Ben Harris [Sat, 23 Nov 2002 19:01:01 +0000 (19:01 +0000)]
Add a "Config *" argument to term_init(), and use that instead of the global
cfg throughout the terminal emulator. Not tested in PuTTY and pterm, but they
just pass in &cfg.
Ben Harris [Sat, 23 Nov 2002 18:22:47 +0000 (18:22 +0000)]
Only try to retrieve a 'vers' resource from the current resource file (the
application), rather from the entire chain. This prevents us displaying the
System version if PuTTY doesn't have one. Also cope with not finding any
'vers' resource.
Ben Harris [Sat, 23 Nov 2002 14:22:11 +0000 (14:22 +0000)]
On a keypress, hide the mouse cursor, send the key to the line discipline
(rather than straight to the backend), and then prod the terminal. I think
this is closer to the correct set of things to do.
Ben Harris [Sat, 23 Nov 2002 13:07:29 +0000 (13:07 +0000)]
Bring in some of my scroll-optimisation stuff from the old Mac port.
This introduces a new front-end function, do_scroll(), which is expected to
scroll a part of the physical display and cause repaint events for any
areas that couldn't be scrolled (e.g. because they were hidden).
scroll_display() is a wrapper around this which also updates disptext to
match.
Currently, scroll_display is only used in response to user scrollback requests
(via term_scroll()), but extending scroll() to use it as well should be
easy.
All of this is conditional on the front end's defining OPTIMISE_SCROLL, since
only the Mac front end currently implements do_scroll().