Don't rely on `PATH_MAX' on GNU.

This commit is contained in:
Ludovic Courtès 2010-02-10 15:55:50 +00:00
parent d0bf4adb1f
commit 20186a4079

View file

@ -53,10 +53,20 @@ Path absPath(Path path, Path dir)
{ {
if (path[0] != '/') { if (path[0] != '/') {
if (dir == "") { if (dir == "") {
#ifdef __GNU__
/* GNU (aka. GNU/Hurd) doesn't have any limitation on path
lengths and doesn't define `PATH_MAX'. */
char *buf = getcwd(NULL, 0);
if (buf == NULL)
#else
char buf[PATH_MAX]; char buf[PATH_MAX];
if (!getcwd(buf, sizeof(buf))) if (!getcwd(buf, sizeof(buf)))
#endif
throw SysError("cannot get cwd"); throw SysError("cannot get cwd");
dir = buf; dir = buf;
#ifdef __GNU__
free(buf);
#endif
} }
path = dir + "/" + path; path = dir + "/" + path;
} }