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.
Simon Tatham [Wed, 16 Oct 2002 16:32:17 +0000 (16:32 +0000)]
Temporarily change the default for cut-and-paste of line drawing
characters, under Unix only, because the stub Unicode layer makes
the usual default break moderately painfully.
Simon Tatham [Wed, 16 Oct 2002 12:30:51 +0000 (12:30 +0000)]
Add a file to the source archive mentioning the version number of
the latest release. This is so that .tar.gz snapshots for the Unix
port can be versioned as `0.53-20021016' or similar, meaning that
(e.g.) Debian version numbering can be monotonic between releases
and snapshots.
Simon Tatham [Wed, 16 Oct 2002 12:17:51 +0000 (12:17 +0000)]
Fix utmp and pty handling so that GTK never complains about running
set[ug]id. All privs-requiring pty operations are done at the very
start of the run, then privs are dropped before initialising GTK.
Utmp is handled by forking a still-privileged subprocess at this
point, and later asking it (through a pipe) to stamp utmp. The
subprocess cleans up utmp on exit, which has the additional
advantage that if the main pterm process suffers some sort of
unexpected termination (up to and including SIGKILL) the subprocess
can still mop up utmp.
Simon Tatham [Tue, 15 Oct 2002 18:42:48 +0000 (18:42 +0000)]
Support bold-as-font, by means of a separate bold font (if one was
supplied) or shadow bolding (if not). As usual, can't yet be turned
on without a recompile.
Simon Tatham [Tue, 15 Oct 2002 17:38:04 +0000 (17:38 +0000)]
Printer support: cfg.printer is assumed to be a Unix command through
which to pipe printed data. Of course by default printing is
disabled; typically cfg.printer would be set to `lpr', perhaps with
some arguments.
Simon Tatham [Tue, 15 Oct 2002 16:50:42 +0000 (16:50 +0000)]
Support scrolling with the mouse wheel (X servers apparently usually
send a button 4 press for an upward wheel movement and a button 5
press for a downward one). Untested since my own trackball's button
4 does nothing obvious. Someone with a mouse wheel should give this
a workout.
Simon Tatham [Tue, 15 Oct 2002 16:24:42 +0000 (16:24 +0000)]
Use the appalling gnome-terminal hack for server-controlled resizes
rather than the gtk_window_set_policy approach; the GNOME people say
that the former is the Right Thing in spite of the latter looking
obviously plausible.
Simon Tatham [Tue, 15 Oct 2002 14:55:19 +0000 (14:55 +0000)]
Richard's patch to make the scrollbar configurably absent. (Still
want a new option to configure it to be on the LHS though. And some
lunatic is bound to ask for an xterm-style scrollbar too... :-)
Simon Tatham [Tue, 15 Oct 2002 14:31:06 +0000 (14:31 +0000)]
Support for all the server-side window configuration requests,
including server-controlled resizing. Irritatingly I've had to use a
deprecated option to gtk_window_set_policy() to make this work,
resulting in me raising GNOME bug #95818 to ask for it to be un-
deprecated again...
Simon Tatham [Tue, 15 Oct 2002 13:07:18 +0000 (13:07 +0000)]
Introduce the ability to control whether the shell run in pterm is a
login shell or not. Also moved these new pieces of configuration
into the Config structure, though they won't stay there forever
since they will need to be moved out into platform-dependent config.
Simon Tatham [Tue, 15 Oct 2002 12:42:58 +0000 (12:42 +0000)]
Finish up utmp processing: add the -ut- command-line option to
suppress stamping it at all. (I suppose this ought to be part of the
cfg structure really.)
Simon Tatham [Mon, 14 Oct 2002 10:14:12 +0000 (10:14 +0000)]
Don't forget to call term_paste() when we get the chance, or big
pastes won't go through. (Not sure whether I should remove this
weird behaviour completely for pterm. It's a bit bizarre.)
Simon Tatham [Mon, 14 Oct 2002 08:56:55 +0000 (08:56 +0000)]
Various faffs in the pty allocation process to get controlling
terminals right. Irritatingly this was working when run from another
[xsp]term but not when run from my GNOME panel. I think it's now
more robust.
Simon Tatham [Mon, 14 Oct 2002 00:05:37 +0000 (00:05 +0000)]
Window title configurability: -T to set it from the command line,
support for the xterm escape sequences to set it, and support for
the xterm escape sequence to query it.
Simon Tatham [Sun, 13 Oct 2002 23:57:40 +0000 (23:57 +0000)]
Don't forget to set $TERM when we spawn the pty. Of course I haven't
noticed this until now because I've always been spawning it _from_
another xterm! :-)
Simon Tatham [Sun, 13 Oct 2002 23:48:31 +0000 (23:48 +0000)]
gnome-terminal insists on receiving the selection as COMPOUND_TEXT
rather than STRING, so we can now supply that too. Pasting both ways
between pterm and gnome-terminal now works.
Simon Tatham [Sun, 13 Oct 2002 12:17:03 +0000 (12:17 +0000)]
Deal with the appalling mouse pointer colours. (Why doesn't GTK let
us select our own mouse pointer fg and bg for standard pointers?
It's ludicrous that we can only do it for pixmap-derived ones. :-( )
Jacob Nevins [Fri, 11 Oct 2002 12:29:27 +0000 (12:29 +0000)]
Initialise some members of the Proxy_Socket structure that were left
uninitialised. This problem only showed up with mingw builds of PuTTY
(maybe MSVCRT is more forgiving with malloc initialisation than CRTDLL?).
The 'error' field was causing me most trouble, and I think the other two
were necessary too before things started working.
Note however that I don't fully understand the code, and that there are
more uninitialised fields in the structure.
Simon Tatham [Thu, 10 Oct 2002 14:42:56 +0000 (14:42 +0000)]
Stop hard-coding a nonstandard font. We now default to `fixed', and
pick up the font's real width and height. This means I now _can't_
use my font of choice until I implement some command-line options; I
wonder what feature will appear next :-)
Simon Tatham [Thu, 10 Oct 2002 12:40:05 +0000 (12:40 +0000)]
And that's it! pty.c is now a real pty backend rather than a
loopback interface; pterm now runs $SHELL and gives every impression
of being not a bad terminal emulator. I'm quite pleased with that. :-)
Simon Tatham [Thu, 10 Oct 2002 12:14:05 +0000 (12:14 +0000)]
Half-decent keyboard handling for pterm. Not very well done - it
would have been better to abstract the general key-handling rules
away from the platform-specific keysyms rather than doing clone-
and-hack as I've done - but it'll serve for now. Now all I need is a
real pty back end and pterm should be a just-about-usable prototype.
Simon Tatham [Thu, 10 Oct 2002 10:40:30 +0000 (10:40 +0000)]
A sensible minimum of do_text() and do_cursor() is now implemented.
This means pterm actually _looks_ like the PuTTY terminal emulator
engine, instead of merely giving evidence to the expert eye that
said engine is hidden in there somewhere :-)
Simon Tatham [Wed, 9 Oct 2002 18:09:42 +0000 (18:09 +0000)]
First phase of porting. pterm now compiles and runs under Linux+gtk.
The current pty.c backend is temporarily a loopback device for
terminal emulator testing, the display handling is only just enough
to show that terminal.c is functioning, the keyboard handling is
laughable, and most features are absent. Next step: bring output and
input up to a plausibly working state, and put a real pty on the
back to create a vaguely usable prototype. Oh, and a scrollbar would
be nice too.
In _theory_ the Windows builds should still work fine after this...
Jacob Nevins [Mon, 7 Oct 2002 16:52:55 +0000 (16:52 +0000)]
Fix code which was clobbering people's -P arguments in PSCP (moved it to
before the deferred command line processing).
Also removed a couple of unused variables.
Simon Tatham [Mon, 7 Oct 2002 16:45:23 +0000 (16:45 +0000)]
Begin destabilisation in the wake of 0.53! This checkin contains the
beginning of a Unix port. It's nowhere near done, and currently it
won't even compile on Unix. But this represents the start of the
process of separating out platform-specific code, and also contains
the mkfiles.pl changes required to support a Unix makefile and a
non-flat source tree.
Simon Tatham [Thu, 26 Sep 2002 18:37:33 +0000 (18:37 +0000)]
Add a new SSH2 bug: some servers apparently claim to be able to do
DH group exchange, but choke when you actually try it. Never
automatically enabled; manual control only.
Simon Tatham [Thu, 26 Sep 2002 18:01:21 +0000 (18:01 +0000)]
Any application using non-modal dialogs must use IsDialogMessage in
its main message loop, otherwise keyboard accelerators will not work
in the dialogs. I MUST NOT FORGET THIS AGAIN.