1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 17:38:00 +00:00

Merge from trunk up to r8020.

[originally from svn r8021]
[r8020 == 14d825d42f]
This commit is contained in:
Simon Tatham 2008-05-28 19:28:17 +00:00
commit 85c227326c
8 changed files with 68 additions and 15 deletions

View File

@ -209,7 +209,7 @@ seems to be working so far.
Currently, release versions of PuTTY tools only run on full Win32
systems and Unix. \q{Win32} includes Windows 95, 98, and ME, and it
includes Windows NT, Windows 2000 and Windows XP.
includes Windows NT, 2000, XP, and Vista.
In the development code, a partial port to the Mac OS (see
\k{faq-mac-port}) is under way.
@ -1398,11 +1398,12 @@ and pay any costs, we can't provide this.
\H{faq-misc} Miscellaneous questions
\S{faq-openssh}{Question} Is PuTTY a port of \i{OpenSSH}, or based on
OpenSSH?
OpenSSH or OpenSSL?
No, it isn't. PuTTY is almost completely composed of code written
from scratch for PuTTY. The only code we share with OpenSSH is the
detector for SSH-1 CRC compensation attacks, written by CORE SDI S.A.
detector for SSH-1 CRC compensation attacks, written by CORE SDI
S.A; we share no code at all with OpenSSL.
\S{faq-sillyputty}{Question} Where can I buy silly putty?

View File

@ -40,7 +40,7 @@ option has a double minus sign, even though none of the others do.
This is because this option is supplied automatically by GTK.
Sorry.)
\dt \cw{\-name} \e{font-name}
\dt \cw{\-name} \e{name}
\dd Specify the name under which \cw{pterm} looks up X resources.
Normally it will look them up as (for example) \cw{pterm.Font}. If

View File

@ -175,7 +175,8 @@ int net_service_lookup(char *service)
return 0;
}
SockAddr platform_get_x11_unix_address(int displaynum, char **canonicalname)
SockAddr platform_get_x11_unix_address(const char *display, int displaynum,
char **canonicalname)
{
return NULL;
}

View File

@ -7,6 +7,41 @@
# well as from outside.
test -f unix.h && cd ..
# Track down automake's copy of install-sh
cp `aclocal --print-ac-dir | sed 's/aclocal$/automake/'`/install-sh unix/.
(cd unix && autoreconf && rm -rf aclocal.m4 autom4te.cache)
# Persuade automake to give us a copy of its install-sh. This is a
# pain because I don't actually want to have to _use_ automake.
# Instead, I construct a trivial unrelated automake project in a
# temporary subdirectory, run automake so that it'll copy
# install-sh into that directory, then copy it back out again.
# Hideous, but it should work.
mkdir automake-grievous-hack
cat > automake-grievous-hack/hello.c << EOF
#include <stdio.h>
int main(int argc, char **argv)
{
printf("hello, world\n");
return 0;
}
EOF
cat > automake-grievous-hack/Makefile.am << EOF
bin_PROGRAMS = hello
hello_SOURCES = hello.c
EOF
cat > automake-grievous-hack/configure.ac << EOF
AC_INIT
AM_INIT_AUTOMAKE(hello, 1.0)
AC_CONFIG_FILES([Makefile])
AC_PROG_CC
AC_OUTPUT
EOF
echo Some news > automake-grievous-hack/NEWS
echo Some text > automake-grievous-hack/README
echo Some people > automake-grievous-hack/AUTHORS
echo Some changes > automake-grievous-hack/ChangeLog
rm -f install-sh # this won't work if we accidentally have one _here_
(cd automake-grievous-hack && autoreconf -i && \
cp install-sh ../unix/install-sh)
rm -rf automake-grievous-hack
# That was the hard bit. Now run autoconf on our real configure.in.
(cd unix && autoreconf && rm -rf aclocal.m4 autom4te.cache)

3
ssh.h
View File

@ -344,7 +344,8 @@ extern void platform_get_x11_auth(char *display, int *proto,
unsigned char *data, int *datalen);
extern const char platform_x11_best_transport[];
/* best X11 hostname for this platform if none specified */
SockAddr platform_get_x11_unix_address(int displaynum, char **canonicalname);
SockAddr platform_get_x11_unix_address(const char *display, int displaynum,
char **canonicalname);
/* make up a SockAddr naming the address for displaynum */
char *platform_get_x_display(void);
/* allocated local X display string, if any */

View File

@ -1292,15 +1292,29 @@ int net_service_lookup(char *service)
return 0;
}
SockAddr platform_get_x11_unix_address(int displaynum, char **canonicalname)
SockAddr platform_get_x11_unix_address(const char *display, int displaynum,
char **canonicalname)
{
SockAddr ret = snew(struct SockAddr_tag);
int n;
memset(ret, 0, sizeof *ret);
ret->family = AF_UNIX;
n = snprintf(ret->hostname, sizeof ret->hostname,
"%s%d", X11_UNIX_PATH, displaynum);
/*
* Mac OS X Leopard uses an innovative X display naming
* convention in which the entire display name is the path to
* the Unix socket, including the trailing :0 which only
* _looks_ like a display number. Heuristically, I think
* detecting this by means of a leading slash ought to be
* adequate.
*/
if (display[0] == '/') {
n = snprintf(ret->hostname, sizeof ret->hostname,
"%s", display);
} else {
n = snprintf(ret->hostname, sizeof ret->hostname,
"%s%d", X11_UNIX_PATH, displaynum);
}
if(n < 0)
ret->error = "snprintf failed";
else if(n >= sizeof ret->hostname)

View File

@ -1637,7 +1637,8 @@ int net_service_lookup(char *service)
return 0;
}
SockAddr platform_get_x11_unix_address(int displaynum, char **canonicalname)
SockAddr platform_get_x11_unix_address(const char *display, int displaynum,
char **canonicalname)
{
SockAddr ret = snew(struct SockAddr_tag);
memset(ret, 0, sizeof(struct SockAddr_tag));

View File

@ -301,9 +301,9 @@ const char *x11_init(Socket * s, char *display, void *c, void *auth,
host[n] = '\0';
sfree(display);
if(!strcmp(host, "unix")) {
if(!strcmp(host, "unix") || host[0] == '/') {
/* use AF_UNIX sockets (doesn't make sense on all platforms) */
addr = platform_get_x11_unix_address(displaynum,
addr = platform_get_x11_unix_address(display, displaynum,
&dummy_realhost);
port = 0; /* to show we are not confused */
} else {