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.
Simon Tatham [Thu, 31 Oct 2002 19:49:52 +0000 (19:49 +0000)]
First attempt at a Unix port of Plink. Seems to basically work;
doesn't yet use the SSH agent, no way to specify arbitrary config
options, no manpage yet, couple of other fiddly things need doing,
but it makes SSH connections and doesn't fall over horribly so I say
it's a good start. Now to run it under valgrind...
Simon Tatham [Wed, 30 Oct 2002 18:22:37 +0000 (18:22 +0000)]
RJK's `pterm --help' patch. I _must_ find a better alternative to
this init sequence - it surely can't be right that `pterm --help'
with no DISPLAY complains at the lack of DISPLAY rather than giving
a help message!
Simon Tatham [Wed, 30 Oct 2002 17:57:31 +0000 (17:57 +0000)]
More preparatory work: remove the <windows.h> include from lots of
source files in which it's no longer required (it was previously
required in anything that included <putty.h>, but not any more).
Also moved a couple of stray bits of exposed WinSock back into
winnet.c (getservbyname from ssh.c and AF_INET from proxy.c).
Simon Tatham [Wed, 30 Oct 2002 17:56:05 +0000 (17:56 +0000)]
Preparatory work before attempting a Unix port of plink: mkfiles.pl
needs to be able to handle separate Recipe entries for the same
program with different types (plink [C] and plink [X] for example,
with different object lists).
Simon Tatham [Tue, 29 Oct 2002 16:54:09 +0000 (16:54 +0000)]
Yikes - put back a #include I accidentally removed two revs ago!
That'd have been embarrassing. Mind you I'd like to remove this
particular #include for good anyway, but the time is not now...
Simon Tatham [Mon, 28 Oct 2002 21:58:07 +0000 (21:58 +0000)]
terminal.c should call the frontend beep() routine even with
mode==BELL_VISUAL, otherwise taskbar flashing won't happen on visual
bells. It's up to the frontend routine to spot BELL_VISUAL and avoid
making any noise.
Simon Tatham [Mon, 28 Oct 2002 17:39:21 +0000 (17:39 +0000)]
CloseOnExit now defaults to COE_ALWAYS for pterm, bringing it back
into line with most other xtermalikes. On Unix, the exit code of a
shell is the last exit code of one of its child processes, even if
it's an interactive shell - so some pterms will close and some will
not for no particularly good reason. Power-detaching a screen
session is especially bad for this.
COE_NORMAL is still useful for specialist purposes (running a single
command in its own pterm), but I don't think it's a sane default,
unfortunately.
Simon Tatham [Mon, 28 Oct 2002 17:34:45 +0000 (17:34 +0000)]
Fix Alt+numberpad in pterm. For a start, there was a bug whereby if
a pterm came up while Alt was down, then releasing it would cause a
^@ to be generated. Also, though, I've decided that Alt plus a
single numberpad key should not generate a low-numbered control
code, because that's too easy to do by mistake and the codes are too
powerful. Anyone who really _wants_ to create a ^C or ^D from the
numberpad can do Alt-03 or Alt-04 easily enough; two-digit codes and
more such as Alt-65 are unaffected.
Simon Tatham [Mon, 28 Oct 2002 17:30:47 +0000 (17:30 +0000)]
Another deglobalisation bug: failed to initialise term->curstype.
Thanks to valgrind for finding this one (aha! I knew there would be
benefits from doing a Unix port!).
Simon Tatham [Mon, 28 Oct 2002 09:38:28 +0000 (09:38 +0000)]
First bug discovered as a result of global-removal: pasting into
pterm caused a crash because I had the wrong prototype for the
selection_received event handler. Should be fixed.
Simon Tatham [Sat, 26 Oct 2002 12:58:13 +0000 (12:58 +0000)]
Yet more global-removal. The static variables in logging.c are now
absent, and also (I think) all the frontend request functions (such
as request_resize) take a context pointer, so that multiple windows
can be handled sensibly. I wouldn't swear to this, but I _think_
that only leaves the Unicode stuff as the last stubborn holdout.
Simon Tatham [Sat, 26 Oct 2002 11:08:59 +0000 (11:08 +0000)]
Reorganised the Unicode layer somewhat: moved luni_send and
lpage_send out into the line discipline, making them _clients_ of
the Unicode layer rather than part of it. This means they can access
ldisc->term, which in turn means I've been able to remove the
temporary global variable `term'. We're slowly getting there.
Simon Tatham [Sat, 26 Oct 2002 10:33:59 +0000 (10:33 +0000)]
Port forwarding module now passes backend handles around properly.
As a result I've now been able to turn the global variables `back'
and `backhandle' into module-level statics in the individual front
ends. Now _that's_ progress!
Simon Tatham [Fri, 25 Oct 2002 11:50:51 +0000 (11:50 +0000)]
pty backend now supports the changed function interface, so pterm
now compiles and runs again after the major destabilisation.
Unfortunately it wasn't feasible to actually encapsulate all of the
pty backend's data, since the utmp helper and the need to fork and
drop privileges before doing anything else at all rather confuses
matters. So the data handle passed around to the pty backend is a
null pointer, and the pty backend is just as global-ridden as it
always has been. Shame, but such is life.
Simon Tatham [Fri, 25 Oct 2002 11:30:33 +0000 (11:30 +0000)]
Major destabilisation, phase 2. This time it's the backends' turn:
each backend now stores all its internal variables in a big struct,
and each backend function gets a pointer to this struct passed to
it. This still isn't the end of the work - lots of subsidiary things
still use globals, notably all the cipher and compressor modules and
the X11 forwarding authentication stuff. But ssh.c itself has now
been transformed, and that was the really painful bit, so from here
on it all ought to be a sequence of much smaller and simpler pieces
of work.
Jacob Nevins [Wed, 23 Oct 2002 14:24:40 +0000 (14:24 +0000)]
Minor compiler nits:
- use smalloc/sfree, not malloc/free
- include <ctype.h>
- include <string.h> (although this doesn't shut the compiler up about
non-ANSI stricmp/strnicmp)
Simon Tatham [Wed, 23 Oct 2002 14:21:12 +0000 (14:21 +0000)]
Implement handling of all Close On Exit modes. Default is to close
only on clean exit, which is a departure from most xterm-alikes but
Ian reckons people will love me for it. If this turns out to be
wrong, we can always change the default for Unix.
Simon Tatham [Wed, 23 Oct 2002 12:41:35 +0000 (12:41 +0000)]
Cleanups from yesterday's destabilisation: lots of stuff in
terminal.c was apparently relying on implicit initialisation to
zero, and also I've removed the backends' dependency on terminal.h
by having terminal sizes explicitly passed in to back->size().
Simon Tatham [Tue, 22 Oct 2002 16:11:33 +0000 (16:11 +0000)]
Major destabilisation, phase 1. In this phase I've moved (I think)
all the global and function-static variables out of terminal.c into
a dynamically allocated data structure. Note that this does not yet
confer the ability to run more than one of them in the same process,
because other things (the line discipline, the back end) are still
global, and also in particular the address of the dynamically
allocated terminal-data structure is held in a global variable
`term'. But what I've got here represents a reasonable stopping
point at which to check things in. In _theory_ this should all still
work happily, on both Unix and Windows. In practice, who knows?
Simon Tatham [Tue, 22 Oct 2002 10:31:23 +0000 (10:31 +0000)]
Thanks to Richard B for pointing out that xterm has its own variants
of the alternate-screen and save-cursor control sequences, with
subtly different semantics and entertaining interactions with the
usual ones. No thanks to xterm for doing so in the first place :-(
This checkin should sort it all out.
Simon Tatham [Mon, 21 Oct 2002 22:59:14 +0000 (22:59 +0000)]
VT100 line drawing characters should only happen between 0x5F and
0x7E, not everywhere else. Silly me thought nobody would bother to
depend on this :-)
Simon Tatham [Sun, 20 Oct 2002 13:23:30 +0000 (13:23 +0000)]
Implement Richard's really clever idea about bell overload mode:
it's automatically deactivated by any keypress, so that command-line
beeps from (e.g.) filename completion don't suddenly stop occurring,
but it still provides a rapid response to an accidental spewing of a
binary to your terminal.