Hi, Attached is an alternative and less intrusive patch by Alfred M. Szmidt <[EMAIL PROTECTED]>. This is its arch archive location:
http://www.update.uu.se/~ams/{archives}/2005-update [EMAIL PROTECTED]/hackerlab/hackerlab--gnu Is that reasonable enough to go in? I verified it still builds fine on GNU/Linux. cheers, Michael -- Michael Banck Debian Developer [EMAIL PROTECTED] http://www.advogato.org/person/mbanck/diary.html
--- tla-1.3.3/src/hackerlab/vu-network/url-socket.c 2005-12-28 02:10:35.000000000 +0100 +++ tla-1.3.3/src/hackerlab/vu-network/url-socket.c 2005-12-28 02:10:37.000000000 +0100 @@ -1403,7 +1403,7 @@ int fd; struct url_socket_params params; struct sockaddr_in addr; - t_uchar myhost[MAXHOSTNAMELEN + 1]; + t_uchar *myhost; mem_set0 ((t_uchar *)&addr, sizeof (addr)); @@ -1414,10 +1414,20 @@ { if (host_id_is) { - if (0 > gethostname (myhost, sizeof (myhost))) + size_t size = 64; + int err; + myhost = (t_uchar *) must_malloc (size + 1); + while (1) { - *errn = errno; - return -1; + int i = size - 1; + myhost[i] = '\0'; + err = gethostname (myhost, size); + if (err >= 0 && myhost[i] == '\0') + break; + else if (err < 0 && errno != ENAMETOOLONG && errno != 0) + must_free (myhost); + size *= 2; + myhost = must_realloc (myhost, size + 1); } *host_id_is = str_save (limits, myhost); } @@ -1479,17 +1489,25 @@ } else { - char my_name[MAXHOSTNAMELEN + 1]; struct hostent * hostent; - - if (0 > gethostname (my_name, sizeof (my_name))) + size_t size = 64; + int err; + t_uchar *my_name; + + my_name = (t_uchar *) must_malloc (size + 1); + while (1) { - int ign; - *errn = errno; - vu_close (&ign, fd); - return -1; + int i = size - 1; + my_name[i] = '\0'; + err = gethostname (my_name, size); + if (err >= 0 && my_name[i] == '\0') + break; + else if (err < 0 && errno != ENAMETOOLONG && errno != 0) + must_free (my_name); + size *= 2; + my_name = must_realloc (my_name, size + 1); } - + hostent = gethostbyname (my_name); if (!hostent) {