From cc191431412d8764c645a51b0f106c0dfe652213 Mon Sep 17 00:00:00 2001 From: Julien Danjou Date: Tue, 7 Apr 2009 14:18:40 +0200 Subject: [PATCH] util: merge common code for xcb_connect Many code was duplicated between xcb_connect_to_display_with_auth_info and xcb_connect(). We merge both, since the difference is just about the xcb_auth_info_t pointer being supplied, or not. Signed-off-by: Julien Danjou --- src/xcb_util.c | 50 ++++++++++++++++---------------------------------- 1 file changed, 16 insertions(+), 34 deletions(-) diff --git a/src/xcb_util.c b/src/xcb_util.c index 008a38b..54361f4 100644 --- a/src/xcb_util.c +++ b/src/xcb_util.c @@ -317,39 +317,7 @@ static int _xcb_open_abstract(char *protocol, const char *file, size_t filelen) xcb_connection_t *xcb_connect(const char *displayname, int *screenp) { - int fd, display = 0; - char *host; - char *protocol; - xcb_connection_t *c; - xcb_auth_info_t auth; - - int parsed = _xcb_parse_display(displayname, &host, &protocol, &display, screenp); - -#ifdef HAVE_LAUNCHD - if(!displayname) - displayname = getenv("DISPLAY"); - if(displayname && strlen(displayname)>11 && !strncmp(displayname, "/tmp/launch", 11)) - fd = _xcb_open_unix(NULL, displayname); - else -#endif - if(!parsed) - return (xcb_connection_t *) &error_connection; - else - fd = _xcb_open(host, protocol, display); - free(host); - - if(fd == -1) - return (xcb_connection_t *) &error_connection; - - if(_xcb_get_auth_info(fd, &auth, display)) - { - c = xcb_connect_to_fd(fd, &auth); - free(auth.name); - free(auth.data); - } - else - c = xcb_connect_to_fd(fd, 0); - return c; + return xcb_connect_to_display_with_auth_info(displayname, NULL, screenp); } xcb_connection_t *xcb_connect_to_display_with_auth_info(const char *displayname, xcb_auth_info_t *auth, int *screenp) @@ -357,6 +325,8 @@ xcb_connection_t *xcb_connect_to_display_with_auth_info(const char *displayname, int fd, display = 0; char *host; char *protocol; + xcb_auth_info_t ourauth; + xcb_connection_t *c; int parsed = _xcb_parse_display(displayname, &host, &protocol, &display, screenp); @@ -376,5 +346,17 @@ xcb_connection_t *xcb_connect_to_display_with_auth_info(const char *displayname, if(fd == -1) return (xcb_connection_t *) &error_connection; - return xcb_connect_to_fd(fd, auth); + if(auth) + return xcb_connect_to_fd(fd, auth); + + if(_xcb_get_auth_info(fd, &ourauth, display)) + { + c = xcb_connect_to_fd(fd, &ourauth); + free(ourauth.name); + free(ourauth.data); + } + else + c = xcb_connect_to_fd(fd, 0); + + return c; } -- 2.34.1