Don't rely on `PATH_MAX' on GNU.
This commit is contained in:
parent
d0bf4adb1f
commit
20186a4079
1 changed files with 10 additions and 0 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue