version 1.146, 2001/12/06 18:20:32 |
version 1.147, 2001/12/08 17:49:28 |
|
|
#include "canohost.h" |
#include "canohost.h" |
#include "key.h" |
#include "key.h" |
#include "authfd.h" |
#include "authfd.h" |
|
#include "pathnames.h" |
|
|
|
|
/* -- channel core */ |
/* -- channel core */ |
|
|
return display_number; |
return display_number; |
} |
} |
|
|
#ifndef X_UNIX_PATH |
|
#define X_UNIX_PATH "/tmp/.X11-unix/X" |
|
#endif |
|
|
|
static int |
static int |
connect_local_xsocket(u_int dnr) |
connect_local_xsocket(u_int dnr) |
{ |
{ |
static const char *const x_sockets[] = { |
|
X_UNIX_PATH "%u", |
|
"/var/X/.X11-unix/X" "%u", |
|
"/usr/spool/sockets/X11/" "%u", |
|
NULL |
|
}; |
|
int sock; |
int sock; |
struct sockaddr_un addr; |
struct sockaddr_un addr; |
const char *const * path; |
|
|
|
for (path = x_sockets; *path; ++path) { |
sock = socket(AF_UNIX, SOCK_STREAM, 0); |
sock = socket(AF_UNIX, SOCK_STREAM, 0); |
if (sock < 0) |
if (sock < 0) |
error("socket: %.100s", strerror(errno)); |
error("socket: %.100s", strerror(errno)); |
memset(&addr, 0, sizeof(addr)); |
memset(&addr, 0, sizeof(addr)); |
addr.sun_family = AF_UNIX; |
addr.sun_family = AF_UNIX; |
snprintf(addr.sun_path, sizeof addr.sun_path, _PATH_UNIX_X, dnr); |
snprintf(addr.sun_path, sizeof addr.sun_path, *path, dnr); |
if (connect(sock, (struct sockaddr *) & addr, sizeof(addr)) == 0) |
if (connect(sock, (struct sockaddr *) & addr, sizeof(addr)) == 0) |
return sock; |
return sock; |
close(sock); |
close(sock); |
|
} |
|
error("connect %.100s: %.100s", addr.sun_path, strerror(errno)); |
error("connect %.100s: %.100s", addr.sun_path, strerror(errno)); |
return -1; |
return -1; |
} |
} |