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().
Ben Harris [Tue, 19 Nov 2002 02:13:46 +0000 (02:13 +0000)]
Tentative merge of ben-mac-port (only dead for three years!) into the trunk.
This doesn't include any mkfiles.pl glue, and is missing one or two other
fixes. The terminal emulator is kind of working, though, as, I believe, is
the store module. Everything else is yet to be done.
Ben Harris [Mon, 18 Nov 2002 23:49:30 +0000 (23:49 +0000)]
When processing input, refer to CR and LF as \015 and \012 respectively,
rather than \r and \n. The latter tend to get swapped around by Mac C
compilers.
Ben Harris [Mon, 18 Nov 2002 22:27:25 +0000 (22:27 +0000)]
ISO-IR entry 157 appears to correspond to ISO/IEC 8859-10, and lists
code point 3/13 as HORIZONTAL BAR, which agrees with unicode.org's mapping
table. Change ours to match (it used to have EM DASH, courtesy of RDB).
This brings all our 8859-to-Unicode tables into line with unicode.org.
Simon Tatham [Sun, 17 Nov 2002 15:06:16 +0000 (15:06 +0000)]
Thanks to Hans-Juergen Petrich for spotting this tiny memory leak:
`otherbuf' should still be freed even if the RegEnumKey function
that was supposed to fill it with data failed. While I'm at it, also
remove the redundant check for its non-NULL-ness (what's the point
of having a malloc wrapper that dies rather than return NULL if you
then waste effort checking its return value for NULL _anyway_, eh?).
Ben Harris [Sun, 17 Nov 2002 02:00:06 +0000 (02:00 +0000)]
Apple's C compilers don't think that putting parentheses around assignments
in "if" conditions is enough. Use an actual comparison against NULL instead.
Ben Harris [Sun, 10 Nov 2002 00:03:55 +0000 (00:03 +0000)]
Use <stddef.h> to get wchar_t, rather than <wchar.h> (or nothing, in putty.h).
Both are required to contain wchar_t in C99, but only <stddef.h> does in the
version of MPW I've got here.
Simon Tatham [Thu, 7 Nov 2002 19:49:03 +0000 (19:49 +0000)]
Robustness fixes for KEXINIT handling and others. In particular, I've
created a self-mallocing variant of sprintf, to obviate any future
need for paranoid %.100s type stuff in format strings.
Simon Tatham [Tue, 5 Nov 2002 13:20:42 +0000 (13:20 +0000)]
Fix command-line error handling in pterm. (Hint: wrapping a multi-
statement macro in `do ... while (0)' and putting a `continue'
within it don't go well together. Oops.)
Simon Tatham [Sun, 3 Nov 2002 08:46:35 +0000 (08:46 +0000)]
Half of Lars Gunnarsson's iXplorer compatibility patch: the PSFTP
login prompt should be fflushed (presumably fgets fails to implicitly
do this when stdin and stdout are redirected weirdly).
Simon Tatham [Sat, 2 Nov 2002 16:27:17 +0000 (16:27 +0000)]
Probably about time we mentioned the nascent Unix port in the FAQ.
Not that I desperately want to shout about it just yet, but I feel a
bit bad about the FAQ saying `we don't have a Unix port, anyone who
told you so was wrong'. :-)
Simon Tatham [Sat, 2 Nov 2002 16:16:35 +0000 (16:16 +0000)]
Improve shadow bold mode: set the default shadow bold offset to +1
not -1 (it turns out _most_ X fonts prefer the former, though
irritatingly my favourite real X font used to prefer the latter
which was why I made the X version of my Font Of Choice do so too),
and also clip to the boundaries of the rectangle we should be
drawing text in. This still doesn't completely prevent display
corruption in the case where text drawn in one sweep is partially
overwritten in a future one, but gnome-terminal has this problem
too, and now we've got the right default SB offset _and_ offer the
opportunity to reconfigure it I think this is pretty good for now.
Simon Tatham [Sat, 2 Nov 2002 16:05:26 +0000 (16:05 +0000)]
Another signal-handling refinement from RJK: the SIGCHLD handler
should be prepared to reap more than one child per invocation if
necessary, since we do after all have two.
Simon Tatham [Fri, 1 Nov 2002 13:36:48 +0000 (13:36 +0000)]
Improve handling of oobinline sockets; Plink in telnet mode now
doesn't hang when you hit ^C, which is nice. I think a better
solution would involve nonblocking sockets; as it stands it's a
little dependent on what may be quirks of the Linux socket layer.
Simon Tatham [Fri, 1 Nov 2002 13:01:14 +0000 (13:01 +0000)]
Another valgrind-caught error. This one has apparently been there
since the Dawn O' Time, and consisted of me putting the two halves
of a short-circuiting bounds check the wrong way round: instead of
`p_in_range && *p', I had `*p && p_in_range'. Oops. valgrind rocks.