Package: luatex Version: 0.47.0-1 Severity: important Tags: patch User: debian-h...@lists.debian.org Usertags: hurd
Hi, currently[1] luatex does not build on GNU/Hurd. The problem is the unconditional usage of PATH_MAX. The attached patch solves the issue, malloc'ing the buffers as needed. It also adds a small bit to "recognize" the GNU platform. [1] https://buildd.debian.org/fetch.cgi?pkg=luatex&arch=hurd-i386&ver=0.47.0-1&stamp=1261470395&file=log&as=raw Thanks, -- Pino
--- a/source/texk/web2c/luatexdir/lua/loslibext.c +++ b/source/texk/web2c/luatexdir/lua/loslibext.c @@ -81,6 +81,9 @@ # elif defined(__MACH__) && defined(__APPLE__) # undef OS_PLATNAME # define OS_PLATNAME "macosx" +# elif defined(__GNU__) +# undef OS_PLATNAME +# define OS_PLATNAME "gnu" # endif #endif @@ -117,7 +120,7 @@ static int exec_command(const char *file, char *const *argv, char *const *envp) { - char path[PATH_MAX]; + char *path; const char *searchpath, *esp; size_t prefixlen, filelen, totallen; @@ -125,6 +128,7 @@ return execve(file, argv, envp); filelen = strlen(file); + path = NULL; searchpath = getenv("PATH"); if (!searchpath) @@ -141,14 +145,20 @@ if (prefixlen == 0 || searchpath[prefixlen - 1] == '/') { totallen = prefixlen + filelen; +#ifdef PATH_MAX if (totallen >= PATH_MAX) continue; +#endif + path = malloc(totallen + 1); memcpy(path, searchpath, prefixlen); memcpy(path + prefixlen, file, filelen); } else { totallen = prefixlen + filelen + 1; +#ifdef PATH_MAX if (totallen >= PATH_MAX) continue; +#endif + path = malloc(totallen + 1); memcpy(path, searchpath, prefixlen); path[prefixlen] = '/'; memcpy(path + prefixlen + 1, file, filelen); @@ -156,6 +166,8 @@ path[totallen] = '\0'; execve(path, argv, envp); + free(path); + path = NULL; if (errno == E2BIG || errno == ENOEXEC || errno == ENOMEM || errno == ETXTBSY) break; /* Report this as an error, no more search */