summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorWilliam Jon McCann <mccann@jhu.edu>2007-03-26 14:39:44 -0400
committerWilliam Jon McCann <mccann@jhu.edu>2007-03-26 14:39:44 -0400
commita2b51f00af2143a90138c6ce1df1e7e9b4ec8afa (patch)
tree66857662444b160d1435037fe233638227e0ef5f /tools
parent4c365a8e28adafd6619ada97d4239e9e6df429ab (diff)
use xlib directly instead of via gdk
Diffstat (limited to 'tools')
-rw-r--r--tools/linux/ck-get-x11-server-pid.c39
1 files changed, 32 insertions, 7 deletions
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 <sys/types.h>
#include <sys/socket.h>
-#include <gdk/gdk.h>
-#include <gdk/gdkx.h>
+#include <X11/Xlib.h>
+#include <glib.h>
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;