From a2b51f00af2143a90138c6ce1df1e7e9b4ec8afa Mon Sep 17 00:00:00 2001 From: William Jon McCann Date: Mon, 26 Mar 2007 14:39:44 -0400 Subject: use xlib directly instead of via gdk --- tools/linux/ck-get-x11-server-pid.c | 39 ++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) (limited to 'tools') diff --git a/tools/linux/ck-get-x11-server-pid.c b/tools/linux/ck-get-x11-server-pid.c index 4e5d6c5..cd48cd1 100644 --- a/tools/linux/ck-get-x11-server-pid.c +++ b/tools/linux/ck-get-x11-server-pid.c @@ -29,15 +29,17 @@ #include #include -#include -#include +#include +#include static void print_peer_pid (int fd) { #ifdef SO_PEERCRED struct ucred cr; - int cr_len = sizeof (cr); + socklen_t cr_len; + + cr_len = sizeof (cr); if (getsockopt (fd, SOL_SOCKET, SO_PEERCRED, &cr, &cr_len) == 0 && cr_len == sizeof (cr)) { /* paranoia check for peer running as root */ @@ -53,18 +55,41 @@ print_peer_pid (int fd) #endif } +static Display * +display_init (int *argc, char ***argv) +{ + const char *display_name; + Display *xdisplay; + + display_name = g_getenv ("DISPLAY"); + + if (display_name == NULL) { + g_warning ("DISPLAY is not set"); + exit (1); + } + + xdisplay = XOpenDisplay (display_name); + if (xdisplay == NULL) { + g_warning ("cannot open display: %s", display_name ? display_name : ""); + exit (1); + } + + return xdisplay; +} + int main (int argc, char **argv) { - int fd; - int ret; + int fd; + int ret; + Display *xdisplay; ret = 1; - gdk_init (&argc, &argv); + xdisplay = display_init (&argc, &argv); - fd = ConnectionNumber (GDK_DISPLAY()); + fd = ConnectionNumber (xdisplay); if (fd > 0) { ret = 0; -- cgit