From 4677b5a80025b50ba2a3e953fd487a549586ae9f Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Mon, 23 Nov 2009 16:33:00 -0800 Subject: [PATCH] XQuartz: Allow better compatability with older versions of xinit If we are id="org.x" and the launchd socket is ":0", we will claim the socket to match the old behavior before we prefixed the socket name with our id. Signed-off-by: Jeremy Huddleston --- hw/xquartz/mach-startup/bundle-main.c | 36 ++++++++++++++++----------- hw/xquartz/mach-startup/stub.c | 1 + 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/hw/xquartz/mach-startup/bundle-main.c b/hw/xquartz/mach-startup/bundle-main.c index 640a91f23..0366f3ba2 100644 --- a/hw/xquartz/mach-startup/bundle-main.c +++ b/hw/xquartz/mach-startup/bundle-main.c @@ -333,8 +333,10 @@ kern_return_t do_start_x11_server(mach_port_t port, string_array_t argv, /* If we didn't get handed a launchd DISPLAY socket, we should * unset DISPLAY or we can run into problems with pbproxy */ - if(!launchd_socket_handed_off) + if(!launchd_socket_handed_off) { + fprintf(stderr, "X11.app: No launchd socket handed off, unsetting DISPLAY\n"); unsetenv("DISPLAY"); + } if(!_argv || !_envp) { return KERN_FAILURE; @@ -473,7 +475,7 @@ static void setup_env(void) { server_bootstrap_name = malloc(sizeof(char) * (strlen(pds) + 1)); if(!server_bootstrap_name) { - fprintf(stderr, "Memory allocation error.\n"); + fprintf(stderr, "X11.app: Memory allocation error.\n"); exit(1); } strcpy(server_bootstrap_name, pds); @@ -482,7 +484,7 @@ static void setup_env(void) { len = strlen(server_bootstrap_name); launchd_id_prefix = malloc(sizeof(char) * (len - 3)); if(!launchd_id_prefix) { - fprintf(stderr, "Memory allocation error.\n"); + fprintf(stderr, "X11.app: Memory allocation error.\n"); exit(1); } strlcpy(launchd_id_prefix, server_bootstrap_name, len - 3); @@ -497,21 +499,27 @@ static void setup_env(void) { } if(s && *s) { - temp = (char *)malloc(sizeof(char) * len); - if(!temp) { - fprintf(stderr, "Memory allocation error creating space for socket name test.\n"); - exit(1); - } - strlcpy(temp, launchd_id_prefix, len); - strlcat(temp, ":0", len); + if(strcmp(launchd_id_prefix, "org.x") == 0 && strcmp(s, ":0") == 0) { + fprintf(stderr, "X11.app: Detected old style launchd DISPLAY, please update xinit.\n"); + } else { + temp = (char *)malloc(sizeof(char) * len); + if(!temp) { + fprintf(stderr, "X11.app: Memory allocation error creating space for socket name test.\n"); + exit(1); + } + strlcpy(temp, launchd_id_prefix, len); + strlcat(temp, ":0", len); - if(strcmp(temp, s) != 0) { - /* If we don't have a match, unset it. */ - unsetenv("DISPLAY"); + if(strcmp(temp, s) != 0) { + /* If we don't have a match, unset it. */ + fprintf(stderr, "X11.app: DISPLAY (\"%s\") does not match our id (\"%s\"), unsetting.\n", disp, launchd_id_prefix); + unsetenv("DISPLAY"); + } + free(temp); } - free(temp); } else { /* The DISPLAY environment variable is not formatted like a launchd socket, so reset. */ + fprintf(stderr, "X11.app: DISPLAY does not look like a launchd set variable, unsetting.\n"); unsetenv("DISPLAY"); } } diff --git a/hw/xquartz/mach-startup/stub.c b/hw/xquartz/mach-startup/stub.c index 8f670353a..af1c59efb 100644 --- a/hw/xquartz/mach-startup/stub.c +++ b/hw/xquartz/mach-startup/stub.c @@ -232,6 +232,7 @@ int main(int argc, char **argv, char **envp) { kr = bootstrap_look_up(bootstrap_port, server_bootstrap_name, &mp); if(kr != KERN_SUCCESS) { + fprintf(stderr, "Xquartz: Unable to locate waiting server: %s\n", server_bootstrap_name); pid_t child; set_x11_path();