1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-10 09:58:01 +00:00
Commit Graph

370 Commits

Author SHA1 Message Date
Ben Harris
61199b6a04 On monochrome displays, display the cursor in reverse video so that it's
visible on reversed out text.  This only applies to active block cursors for
now.

[originally from svn r5698]
2005-04-27 21:42:51 +00:00
Ben Harris
1aee4d81e0 Tiny manual CSE of previous commit.
[originally from svn r5697]
2005-04-27 21:22:40 +00:00
Ben Harris
5a980feac9 On 1bpp displays, ignore colour attributes. This makes pterm minimally useful
there, though (e.g.) switching to using reverse video for the cursor would
probably also help.  Displays with other silly depths (e.g. 2bpp) aren't
catered for, but I suspect they're rare in the X world.

[originally from svn r5696]
2005-04-27 21:09:45 +00:00
Ben Harris
7b72634c27 Make palette changes use "best match" colours too.
[originally from svn r5695]
2005-04-27 20:30:47 +00:00
Ben Harris
62cdb81e0a Rather than checking for <sys/sockio.h>, just include it if our other
attempts at finding SIOCATMARK have failed.  This removes one of our
Autoconf tests, which is always nice.

[originally from svn r5690]
2005-04-27 15:42:10 +00:00
Ben Harris
55865685a9 According to the termio(7I) on Solaris, OLCUC is overridden by OPOST, so we
should send it with the SSH terminal modes too.

[originally from svn r5680]
2005-04-26 00:03:50 +00:00
Ben Harris
12d8a02aad Squash OPOST locally when we're not in line-editing mode, and propagate
the other output flags with SSH.  This means that when I log into a remote
system using Plink and then run "stty -onlcr" I get the expected
stair-stepping.

[originally from svn r5679]
2005-04-25 23:57:45 +00:00
Ben Harris
62b943922e Use pututxline() in place of pututline(), since the former is standardised by
X/Open and actually seems to be more common (NetBSD has it).  Also use
updwtmpx() rather than directly writing to the wtmpx file, though more for
reasons of aesthetics than anything practical.

[originally from svn r5678]
2005-04-25 23:28:25 +00:00
Ben Harris
318913822d Ask GDK to give us reasonable approximations if it can't get precisely the
colours we asked it for.  This means that I can run pterm on an 8-bit
PseudoColor display even if I have another program running.

[originally from svn r5677]
2005-04-25 22:46:08 +00:00
Ben Harris
4cb79827c6 Check for <sys/sockio.h> and include it in uxnet.c if we find it. It's
necessary on Solaris if we want to use SIOCATMARK.  Using sockatmark() might
be preferable, but despite being notionally standard it's missing on
Solaris 9 and Mac OS X 10.3.9, whereas everyone seems to have SIOCATMARK
somewhere.

[originally from svn r5676]
2005-04-25 18:51:15 +00:00
Ben Harris
b0d3cceb99 uxpty.c uses non-X/Open facilities (notably strsignal()), so don't define
_XOPEN_SOURCE.  We do still need _GNU_SOURCE in order to get grantpt()
on GNU systems.  This allows uxpty.c to compile on NetBSD.

[originally from svn r5675]
2005-04-25 17:21:08 +00:00
Ben Harris
0227bfdbc7 Add a mechanism for using autoconf to detect the quirks of Unix systems
rather than relying on the user to edit the Makefile.  Makefile.gtk
still works as well as it ever did, but now we get a Makefile.in alongside
it.  mkunxarc.sh now relies on autoconf and friends to build the configure
script for the Unix source distribution.

[originally from svn r5673]
2005-04-25 15:55:06 +00:00
Ben Harris
38b266727a On some systems (NetBSD 1.6 and Solaris 9, at least), GCC doesn't understand
the semantics of assert(0) and believes it can return.  Add a gratuitous
exit(1) to convince it that this won't happen, and hence quell a couple of
warnings about variables' being used uninitialised.

[originally from svn r5669]
2005-04-24 14:43:00 +00:00
Jacob Nevins
fb581ac625 First crack at `terminal-modes' in SSH. PuTTY now sends ERASE by default,
Unix Plink sends everything sensible it can find, and it's fully configurable
from the GUI.

I'm not entirely sure about the precise set of modes that Unix Plink should
look at; informed tweaks are welcome.

Also the Mac bits are guesses (but trivial).

[originally from svn r5653]
[this svn revision also touched putty-wishlist]
2005-04-21 13:57:08 +00:00
Jacob Nevins
6eec320f0b Unify GET_32BIT()/PUT_32BIT() et al from numerous source files into misc.h.
I've done a bit of testing (not exhaustive), and I don't _think_ I've broken
anything...

[originally from svn r5632]
2005-04-12 20:04:56 +00:00
Jacob Nevins
62faf61d6e Oops, forgot to credit Ahmad Khalifa of arabeyes.org for the bidi/shaping work.
[originally from svn r5612]
[this svn revision also touched putty-website]
2005-04-07 12:00:01 +00:00
Jacob Nevins
52a17ab04a If a new session was saved from Change Settings, a side-effect on Windows was
that the global `sesslist' got out of sync with the saved-sessions submenu,
causing the latter to launch the wrong sessions.

Also, Change Settings wasn't getting a fresh session list, so if the set of
sessions had changed since session startup it wouldn't reflect that (at least
until a session was saved). Fixed (on all platforms).

Therefore, since the global sesslist didn't seem to be useful, I've got rid
of it; config.c creates one as needed, as do the frontends. (Not tried
compiling Mac changes.)

Also, we now build the saved-sessions submenu on demand on Windows and Unix.
(This should probably also be done on the Mac.)

[originally from svn r5609]
2005-04-07 01:36:28 +00:00
Ben Harris
96e9a65e99 NULL needs to be cast to void * when passed to a variadic function like
execl().  Spotted by Damien Miller.

[originally from svn r5592]
2005-04-04 13:44:45 +00:00
Simon Tatham
d0beed9aba Render timing.c robust in the face of strangeness. The strangenesses
in question vary per OS: on Windows the problem is that WM_TIMER
sometimes goes off too early, so that GetTickCount() is right and
the callback time is wrong, whereas on Unix the problem is that my
GETTICKCOUNT implementation comes from the system clock which means
it can change suddenly and non-monotonically if the sysadmin is
messing about (meaning that the timing of callbacks from GTK or
select timeouts is _more_ likely to be right than GETTICKCOUNT).
This checkin provides band-aid workarounds for both problems, which
aren't pretty but ought to at least prevent catastrophic assertion
failure.

[originally from svn r5556]
2005-03-28 17:48:24 +00:00
Jacob Nevins
2d379524c3 Since Markus Kuhn no longer explicitly places wcwidth.c in the public domain,
it'd probably be generous to list him in the copyrights.

[originally from svn r5548]
[this svn revision also touched putty-website]
2005-03-23 20:23:07 +00:00
Ben Harris
616f220472 Revert last change: Some versions of the GNU C Library (notably SUSE
glibc-2.3.3-118 and Debian libc6 2.3.2.ds1-20) have clock_gettime() and
CLOCK_MONOTONIC in their headers, but not in libc itself, which we can't
detect easily.

[originally from svn r5529]
2005-03-19 19:23:49 +00:00
Ben Harris
f812865ceb If it's available, try to use clock_gettime(CLOCK_MONOTONIC) rather than
gettimeofday(), since the former shouldn't warp when the user resets the clock.

[originally from svn r5528]
2005-03-19 19:02:53 +00:00
Jacob Nevins
36fc6c0a76 Try to make our PGP signing more useful:
* All the PuTTY tools for Windows and Unix now contain the fingerprints of
   the Master Keys. The method for accessing them is crude but universal:
   a new "-pgpfp" command-line option. (Except Unix PuTTYgen, which takes
   "--pgpfp" just to be awkward.)

 * Move the key policy discussion from putty-website/keys.html to
   putty/doc/pgpkeys.but, and autogenerate the former from the latter.
   Also tweak the text somewhat and include the fingerprints of the
   Master Keys themselves.
   (I've merged the existing autogeneration scripts into a single new
   one; I've left the old scripts and keys.html around until such time
   as the webmonster reviews the changes and plumbs in the new script;
   he should remove the old files then.)

[originally from svn r5524]
[this svn revision also touched putty-website]
2005-03-19 02:26:58 +00:00
Jacob Nevins
5aa719d16e Consistently use a single notation to refer to SSH protocol versions, as
discussed. Use Barrett and Silverman's convention of "SSH-1" for SSH protocol
version 1 and "SSH-2" for protocol 2 ("SSH1"/"SSH2" refer to ssh.com
implementations in this scheme). <http://www.snailbook.com/terms.html>

[originally from svn r5480]
2005-03-10 16:36:05 +00:00
Owen Dunn
c7e71fe2ec Protect against multiple Change Settings dialogues. We should probably also
arrange to switch to an existing Change Settings if the user selects the
menu item and we already have a Change Settings.

[originally from svn r5475]
2005-03-10 10:07:27 +00:00
Simon Tatham
f76c35b4b7 Make sure we do notify_remote_exit(ssh->frontend) _before_
connection_fatal(), since the latter is entitled to destroy the
backend so `ssh' may no longer be valid once it returns.

For the Unix port, switch exit(0) to gtk_main_quit() in
notify_remote_exit(), so that we don't exit before the subsequent
connection_fatal()!

[originally from svn r5445]
2005-03-05 17:56:28 +00:00
Simon Tatham
5c5dc61522 Fixes for NO_IPV6 compilation under Unix.
[originally from svn r5443]
2005-03-05 15:04:48 +00:00
Ben Harris
16c3026b28 Explicitly set MIN and TIME when in raw mode to request single characters
with no timeout.  This seems to make Plink work better on Solaris.

[originally from svn r5436]
2005-03-03 13:07:25 +00:00
Jacob Nevins
f538bd6d4c Make it clearer that `-m' is only usable with SSH.
[originally from svn r5416]
2005-03-01 00:33:18 +00:00
Simon Tatham
6d47285462 Fallout from my change in the semantics of cfg.remote_cmd_ptr.
Spotted by Alano na Alania.

[originally from svn r5386]
2005-02-23 09:25:39 +00:00
Simon Tatham
ee56a6b48f Remove the two logevent calls passing NULL as the first argument.
This was copied straight from winnet.c and I don't believe it's
_ever_ been valid in the Unix front end.

[originally from svn r5384]
2005-02-22 23:30:09 +00:00
Jacob Nevins
62f83a3666 Rearrange verify_ssh_host_key() for robustness in the face of strangeness, in
the same manner as windows/windlg.c (but tested this time :)

[originally from svn r5380]
2005-02-21 23:43:49 +00:00
Simon Tatham
f73fcb0424 Add asynchronous callback capability to the askappend() alert box.
This was harder than verify_ssh_host_key() and askalg() put
together, because:
 (a) askappend() can be called at any time, since it's a side effect
     of data-logging functions. Therefore there can be an unfinished
     askappend() alert at any time, and hence the OS X front end has
     to be prepared to _queue_ other alerts which occur during that
     time.
 (b) logging.c has to do something with data that comes in while
     it's waiting for an answer to askappend(). It buffers it until
     it knows what the user wants done with it. This involved
     something of a reorganisation of logging.c.

[originally from svn r5344]
2005-02-18 18:33:31 +00:00
Simon Tatham
8574822b9b Revamp interface to verify_ssh_host_key() and askalg(). Each of them
now returns an integer: 0 means cancel the SSH connection and 1
means continue with it. Additionally, they can return -1, which
means `front end has set an asynchronous alert box in motion, please
wait to be called back with the result', and each one is passed a
callback function pointer and context for this purpose.

I have not yet done the same to askappend() yet, because it will
take a certain amount of reorganisation of logging.c.

Importantly, this checkin means the host key dialog box now works on
OS X.

[originally from svn r5330]
2005-02-17 18:34:24 +00:00
Jacob Nevins
70de40ba0a Simon suggests a better solution to valgrind's complaining about
(struct Socket_tag).connected -- it should be entirely irrelevant to
listening sockets. Valgrind is still happy.

[originally from svn r5317]
2005-02-16 11:44:44 +00:00
Jacob Nevins
c9116974ac The terminal window can now indicate that PuTTY is busy in various ways, by
changing its mouse pointer. Currently this is only used in the (slightly-
arbitrarily-defined) "heavy" bits of SSH-2 key exchange. We override pointer
hiding while PuTTY is busy, but preserve pointer-hiding state.

Not yet implemented on the Mac.

Also switch to frobbing window-class cursor in Windows rather than relying on
SetCursor().

[originally from svn r5303]
2005-02-15 17:05:58 +00:00
Jacob Nevins
680869b866 Initialise (struct Socket_tag).connected in sk_register().
Again, the value could do with review.

[originally from svn r5300]
2005-02-14 15:30:09 +00:00
Jacob Nevins
01c4c363d9 Initialise (struct Socket_tag).connected in sk_newlistener() since Valgrind
complained.
(I _think_ this is the correct initialisation.)

[originally from svn r5299]
2005-02-14 15:03:32 +00:00
Simon Tatham
7109d413b4 Oh, and (there's always one) remove the unnecessary extra parameter
from unix_setup_config_box().

[originally from svn r5293]
2005-02-14 07:44:50 +00:00
Simon Tatham
b75856edfa Saw uxcfg.c in half down the middle, to separate out config changes
that apply to all Unix-like systems from those which apply
specifically to the GTK front end.

[originally from svn r5292]
2005-02-14 07:41:41 +00:00
Simon Tatham
471624882b Reinstate the broken -e option in pterm. Also I've just worked out a
much better way of handling pty_argv which doesn't require uxpty.c
to be linked in to Unix PuTTY and PuTTYtel.

[originally from svn r5262]
2005-02-06 15:52:00 +00:00
Simon Tatham
f5442209d4 Encapsulated most of the pty backend's variables into a proper data
structure, in preparation for wanting more than one of them in a
single process. This can't be done cleanly, because the whole
business with pty_pre_init pre-allocating the pty rather assumes we
want a known number of the things before we drop privileges; so
there's a horrid hack to make pty_pre_init work on platforms that
have at most one pty instance per process, but at the same time
things ought to work sensibly with more than one per process _if_
pty_pre_init isn't required.

[originally from svn r5261]
2005-02-06 15:14:34 +00:00
Simon Tatham
3fb9e2326d The pty backend won't _always_ be running under X, so it should be
possible to compile it without the WINDOWID variable.

[originally from svn r5259]
2005-02-06 13:33:41 +00:00
Simon Tatham
fd961b398a When allocating BSD-style ptys, we should not be satisfied with a
/dev/ptyXX we can open: we must also check that we can open and use
the corresponding /dev/ttyXX, because if it's been left in the wrong
mode then we will look terribly silly when we fork and _then_
discover our pty is unusable.

[originally from svn r5257]
2005-02-05 15:33:36 +00:00
Ben Harris
3d44cb23c8 Use AF_UNIX, not AF_LOCAL, since the former is in POSIX and the latter is not.
[originally from svn r5220]
2005-01-28 11:47:33 +00:00
Ben Harris
865fbaa8ce Overhaul of client-side XDM-AUTHORIZATION-1:
* Make sk_getxdmdata() return an arbitrary string rather than two integers.
  This better matches the spec, even if the current version always returns
  six bytes
* On Unix, for PF_UNIX sockets, return a counter rather than a constant along
  with the PID.  This should allow multiple clients to connect within one
  second, and is what Xlib does.
* On Unix, interpret AF_INET6 addresses like Xlib does, returning the
  embedded IPv4 address for v4-mapped addresses, and six bytes of zeroes
  otherwise.  The latter is silly, but if I'm going to do anything more sane
  I need to check that X servers won't reject it.

[originally from svn r5219]
2005-01-28 11:39:45 +00:00
Ben Harris
5e35aa383a Buffer overruns are embarassing (even if caused by user error), so assert
that this one can't happen until I actually fix it.

[originally from svn r5217]
2005-01-26 23:49:56 +00:00
Ben Harris
3f725a56ef Move sockaddr_is_loopback() to before sk_address_is_local(), and define the
latter in terms of the former.  Also adjust the definition of
ipv4_is_loopback() to avoid using the non-standard inet_netof() and
IN_LOOPBACKNET, and move it next to its remaining uses.

[originally from svn r5215]
2005-01-26 20:18:33 +00:00
Ben Harris
15e7d71f39 When checking if a connection comes from localhost, don't assume it's an IPv4
connection.  Instead, correctly check IPv4 and IPv6 connections, assume that
AF_LOCAL is always local, and anything else is always remote.

This makes trivial local-to-remote forwarding work on my system.

[originally from svn r5180]
2005-01-23 14:31:08 +00:00
Ben Harris
30fae9ffcb When calling getaddrinfo() for a listening socket, pass in a suggested type
of SOCK_STREAM, since that's what we'll be using.

[originally from svn r5170]
2005-01-22 15:32:10 +00:00