diff options
author | Ludovic Courtès <ludo@gnu.org> | 2010-02-10 15:55:50 +0000 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2010-02-10 15:55:50 +0000 |
commit | 20186a40791f662696857720d414dd7cd2ace8a2 (patch) | |
tree | 374bd1340492d77fa86e728c617b29d2e43bf909 /src | |
parent | d0bf4adb1f8c72640c9e80dee30f96e173dfab87 (diff) |
Don't rely on `PATH_MAX' on GNU.
Diffstat (limited to 'src')
-rw-r--r-- | src/libutil/util.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libutil/util.cc b/src/libutil/util.cc index bb17fa5f6..8c52625a2 100644 --- a/src/libutil/util.cc +++ b/src/libutil/util.cc @@ -53,10 +53,20 @@ Path absPath(Path path, Path dir) { if (path[0] != '/') { 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]; if (!getcwd(buf, sizeof(buf))) +#endif throw SysError("cannot get cwd"); dir = buf; +#ifdef __GNU__ + free(buf); +#endif } path = dir + "/" + path; } |