--- libxcb-1.7/src/xcb_util.c.back 2012-04-03 13:30:36.000000000 +0200 +++ libxcb-1.7/src/xcb_util.c 2012-04-03 14:47:00.000000000 +0200 @@ -147,11 +147,31 @@ static int _xcb_open_abstract(char *protocol, const char *file, size_t filelen); #endif +char * +_xcb_getandappendcompatibleenv(const char *name, const char *compatible, const char *suffix) +{ + static char path_list[1][PATH_MAX]; + char *dir; + + if (path_list[0][0]) + { + return path_list[0]; + } + + dir = getenv(name); + if (dir == NULL) { + strncpy(path_list[0], compatible, PATH_MAX); + } else { + strncpy(path_list[0], dir, PATH_MAX); + } + return strncat(path_list[0], suffix, PATH_MAX); +} + static int _xcb_open(const char *host, char *protocol, const int display) { int fd; - static const char unix_base[] = "/tmp/.X11-unix/X"; - const char *base = unix_base; + char *base; + base = _xcb_getandappendcompatibleenv("TMPDIR", "/tmp", "/.X11-unix/X"); size_t filelen; char *file = NULL; int actual_filelen;