The new patch of glibc to override the default socket server:
Needed for glibc-2_7-branch 2008-06-30 Zheng Da <[EMAIL PROTECTED]> * hurd/hurdsocks.c (_hurd_socket_server): Searches environment variables for the socket server insteading of using the default one. (SOCK_SERV_%d, SOCK_SERV): The environment variables that contains the path of the socket server. --- glibc-2.7-old/hurd/hurdsock.c 2008-06-21 01:38:30.660000000 +0200 +++ glibc-2.7/hurd/hurdsock.c 2008-08-11 03:33:38.690000000 +0200 @@ -45,7 +45,7 @@ socket_t _hurd_socket_server (int domain, int dead) { - socket_t server; + socket_t server = MACH_PORT_NULL; HURD_CRITICAL_BEGIN; __mutex_lock (&lock); @@ -76,16 +76,37 @@ if (domain > max_domain || servers[domain] == MACH_PORT_NULL) { - char name[sizeof (_SERVERS_SOCKET) + 100]; - char *np = &name[sizeof (name)]; - *--np = '\0'; - np = _itoa (domain, np, 10, 0); - *--np = '/'; - np -= sizeof (_SERVERS_SOCKET) - 1; - memcpy (np, _SERVERS_SOCKET, sizeof (_SERVERS_SOCKET) - 1); - server = __file_name_lookup (np, 0, 0); - if (domain <= max_domain) - servers[domain] = server; + char *name = NULL; + char *np = NULL; + + if (__asprintf (&name, "SOCK_SERV_%d", domain) > 0) + { + np = getenv (name); + __free (name); + } + name = NULL; + + if (np == NULL) + { + char *sock_servs = NULL; + + sock_servs = getenv ("SOCK_SERV"); + if (sock_servs == NULL) + sock_servs = _SERVERS_SOCKET; + if (__asprintf (&name, "%s/%d", sock_servs, domain) > 0) + np = name; + else + name = NULL; + } + + if (np) + { + server = __file_name_lookup (np, 0, 0); + if (domain <= max_domain) + servers[domain] = server; + } + + free (name); } else server = servers[domain];